Rumah >Tutorial CMS >WordTekan >Memaparkan kesilapan dari cangkuk save_post di wordpress
mengendalikan dan memaparkan kesilapan dari WordPress save_post
cangkuk: tiga pendekatan
WordPress tidak mempunyai kaedah tunggal, standard untuk menguruskan dan memaparkan kesilapan yang berasal dari cangkuk save_post
. Walau bagaimanapun, beberapa strategi yang berkesan wujud, masing -masing dengan kekuatan dan kelemahannya sendiri. Artikel ini meneroka tiga pendekatan yang menonjol: Menggunakan $_SESSION
Global, memanfaatkan transien WordPress, dan menggunakan parameter dalam pengalihan.
cangkuk dilaksanakan, pengguna diarahkan, memecahkan benang pelaksanaan dan kehilangan akses kepada pembolehubah global. Oleh itu, mekanisme diperlukan untuk memindahkan maklumat ralat dari tindakan simpan ke halaman yang diarahkan. save_post
kaedah 1: menggunakan global $_SESSION
. Ia mudah untuk melaksanakan dan mengelakkan interaksi pangkalan data. $_SESSION
<code class="language-php">if ( !session_id() ) { session_start(); } if ($error) { $_SESSION['my_plugin_errors'] = $error->get_error_message(); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( isset( $_SESSION['my_plugin_errors'] ) ) { ?> <div class="error"> <p><?php echo $_SESSION['my_plugin_errors']; ?></p> </div> <?php unset( $_SESSION['my_plugin_errors'] ); } }</code>
Kaedah 2: Menggunakan Transien WordPress
Transien menyediakan mekanisme caching WordPress-asli. Mereka menyimpan data dengan masa tamat tempoh, menggunakan cache objek jika tersedia, atau jatuh ke pangkalan data.
<code class="language-php">if ($error) { set_transient("my_save_post_errors_{$post_id}_{$user_id}", $error, 45); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( $error = get_transient( "my_save_post_errors_{$post_id}_{$user_id}" ) ) { ?> <div class="error"> <p><?php echo $error->get_error_message(); ?></p> </div> <?php delete_transient("my_save_post_errors_{$post_id}_{$user_id}"); } }</code>
Kaedah 3: Menambah parameter GET ke URL Redirect
ini mencerminkan pendekatan WordPress sendiri untuk memaparkan mesej kemas kini. Kod ralat ditambah sebagai parameter pertanyaan kepada url redirect.
<code class="language-php">if ($error) { add_filter('redirect_post_location', function( $location ) use ( $error ) { return add_query_arg( 'my-plugin-error', $error->get_error_code(), $location ); }); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( isset( $_GET['my-plugin-error'] ) ) { // Handle error based on error code (switch statement) ?> <div class="error"> <p><?php // Display error message based on $_GET['my-plugin-error'] ?></p> </div> <?php } }</code>
Kesimpulan
Kaedah optimum bergantung kepada konteks tertentu. Transien menawarkan keseimbangan yang baik antara integrasi dan prestasi WordPress, sementara pendekatan parameter GET memberikan prestasi terbaik tetapi memerlukan pengurusan ralat yang lebih berhati -hati. Kaedah $_SESSION
adalah paling mudah tetapi kurang dipercayai dalam persekitaran WordPress yang pelbagai. Pilih kaedah yang paling sesuai dengan keperluan dan skala projek anda.
Atas ialah kandungan terperinci Memaparkan kesilapan dari cangkuk save_post di wordpress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!