WP Hata Nesnesi ile yakalama / ne yapmalı


15

Wp_insert_post () dahil olmak üzere doğrudan bir eklenti içinde WP işlevlerinden bazılarını çalıştırıyorum, bir şeyler ters giderse, bu bir WP Hata nesnesi döndürür, bu hatayı yakalamak için doğru yöntem nedir? Ya yerleşik WP işlevleri ya da PHP istisnaları kullanarak ya da ..


4
Sadece eklemek ve burada cevapları söylenenlerin netleştirmek için, WP_Errorbir değil bir PHP Exceptionnesnesi. try/catchBununla yöntem kullanmıyorsunuz . Ancak belirtildiği gibi, kullanımı kolaylaştıran kolaylık fonksiyonları vardır.
Dougal Campbell

Yanıtlar:


21
  1. Fonksiyonun değişkene dönüşünü atayın.

  2. Değişkeni ile kontrol edin is_wp_error().

  3. Buna truegöre işlerseniz, örneğin yöntemden trigger_error()gelen mesajla WP_Error->get_error_message().

  4. Eğer false- her zamanki gibi devam edin.

Kullanımı:

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

ilk önce, sonucunuzun bir WP_Errornesne olup olmadığını kontrol edersiniz :

$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
    }
}

Bu her zamanki gibi.

Ancak WP_Error nesnesi, her halükarda genel bir hata deposu gibi davranmak için herhangi bir hata oluşmadan somutlaştırılabilir. Bunu yapmak istiyorsanız, aşağıdakileri kullanarak herhangi bir hata olup olmadığını kontrol edebilirsiniz 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
}

Bunu yaparsanız, wp_insert_post()yukarıdaki örnekte olduğu gibi döndürülen hatayı bir işlem olup olmadığını kontrol edebilirsiniz .

Sınıf Kodeks üzerinde belgelenmiştir .
Ayrıca burada küçük bir makale var .


Teşekkürler! İlk pasajınız wp_insert_user için işi yaptı.
Mohammad Mursaleen

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

Bu tam olarak wordpress post insert fonksiyonu ile neyin yanlış olduğunu gösterecektir. sadece dene !

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.