Rumah >Tutorial CMS >WordTekan >Memaparkan kesilapan dari cangkuk save_post di wordpress

Memaparkan kesilapan dari cangkuk save_post di wordpress

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-02-16 11:50:17847semak imbas

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.

Displaying Errors from the save_post Hook in WordPress

Kerumitan berpunca dari pengalihan pasca penjimatan WordPress. Selepas

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

Kaedah mudah ini menyimpan mesej ralat dalam pembolehubah global

. Ia mudah untuk melaksanakan dan mengelakkan interaksi pangkalan data. $_SESSION

  • pelaksanaan:
<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>
  • pro: pelaksanaan mudah, tiada overhead pangkalan data.
  • cons: bukan amalan WordPress standard; bergantung pada pengendalian sesi, yang mungkin tidak secara konsisten diaktifkan di semua persediaan.

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.

  • pelaksanaan:
<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>
  • pro: wordpress-friendly, pembersihan data automatik yang tamat tempoh.
  • cons: interaksi pangkalan data jika cache objek tidak dikonfigurasi; kehilangan data yang berpotensi dalam kes kelebihan.

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.

  • pelaksanaan:
<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>
  • Pro: Prestasi tinggi, tiada akses pangkalan data.
  • cons: Memerlukan mesej ralat pendua; Overhead penyelenggaraan boleh meningkat dengan sebilangan besar kod ralat.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn