Cara menangkap / apa yang harus dilakukan dengan Objek Kesalahan WP


15

Saya menjalankan beberapa fungsi WP langsung di dalam sebuah plugin, termasuk wp_insert_post (), jika terjadi kesalahan, ini mengembalikan objek WP Error, apa metode yang benar untuk menangkap kesalahan ini? Baik menggunakan fungsi WP bawaan atau pengecualian PHP atau yang lainnya ..


4
Hanya untuk menambah dan memperjelas apa yang dikatakan dalam jawabannya di sini, WP_Erroradalah tidak PHP Exceptionobjek. Anda tidak menggunakan try/catchmetode dengannya. Tetapi seperti disebutkan, ada fungsi kenyamanan untuk membuatnya mudah digunakan.
Dougal Campbell

Jawaban:


21
  1. Tetapkan kembali fungsi ke variabel.

  2. Periksa variabel dengan is_wp_error().

  3. Jika truemenangani sesuai, misalnya trigger_error()dengan pesan dari WP_Error->get_error_message()metode.

  4. Jika false- lanjutkan seperti biasa.

Pemakaian:

function create_custom_post() {
  $postarr = array();
  $post = wp_insert_post($postarr);
  return $post;
}

$result = create_custom_post();

if ( is_wp_error($result) ){
   echo $result->get_error_message();
}

11

Hei,

pertama, Anda memeriksa cuaca hasil Anda adalah WP_Errorobjek atau tidak:

$id = wp_insert_post(...);
if (is_wp_error($id)) {
    $errors = $id->get_error_messages();
    foreach ($errors as $error) {
        echo $error; //this is just an example and generally not a good idea, you should implement means of processing the errors further down the track and using WP's error/message hooks to display them
    }
}

Ini cara yang biasa.

Tetapi objek WP_Error dapat di-instanciated tanpa terjadi kesalahan, hanya untuk bertindak sebagai penyimpanan kesalahan umum untuk berjaga-jaga. Jika Anda ingin melakukannya, Anda dapat memeriksa apakah ada kesalahan dengan menggunakan get_error_code():

function my_func() {
    $errors = new WP_Error();
    ... //we do some stuff
    if (....) $errors->add('1', 'My custom error'); //under some condition we store an error
    .... //we do some more stuff
    if (...) $errors->add('5', 'My other custom error'); //under some condition we store another error
    .... //and we do more stuff
    if ($errors->get_error_code()) return $errors; //the following code is vital, so before continuing we need to check if there's been errors...if so, return the error object
    .... // do vital stuff
    return $my_func_result; // return the real result
}

Jika Anda melakukannya, Anda kemudian dapat memeriksa proses kesalahan yang dikembalikan seperti pada wp_insert_post()contoh di atas.

Kelas didokumentasikan pada Codex .
Dan ada juga artikel kecil di sini .


Terima kasih! Cuplikan pertama Anda berfungsi untuk wp_insert_user.
Mohammad Mursaleen

1
$wp_error = wp_insert_post( $new_post, true); 
                              echo '<pre>';
                              print_r ($wp_error);
                              echo '</pre>';

Ini akan menunjukkan kepada Anda apa yang salah dengan fungsi penyisipan posting wordpress. Cobalah !

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.