it-swarm.com.de

Wie fange ich/was mache ich mit WP Fehlerobjekt

Ich führe einige der WP Funktionen direkt in einem Plugin aus, einschließlich wp_insert_post (). Wenn etwas schief geht, wird ein WP Fehlerobjekt zurückgegeben. Was ist die richtige Methode, um dies abzufangen? Error? Entweder mit eingebauten WP Funktionen oder PHP Ausnahmen oder so weiter.

14
Dunhamzzz
  1. Weisen Sie der Variablen die Rückgabe der Funktion zu.

  2. Überprüfen Sie die Variable mit is_wp_error() .

  3. Wenn true entsprechend behandelt, zum Beispiel trigger_error() mit der Nachricht von WP_Error->get_error_message() method.

  4. Wenn false - verfahren Sie wie gewohnt.

Verwendungszweck:

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();
}
20
Rarst

Hei,

zuerst überprüfen Sie, ob Ihr Ergebnis ein WP_Error Objekt ist oder nicht:

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

Dies ist der übliche Weg.

Das WP_Error-Objekt kann jedoch ohne Auftreten eines Fehlers instanziiert werden, um nur für alle Fälle als allgemeiner Fehlerspeicher zu fungieren. Wenn Sie dies möchten, können Sie mit get_error_code() prüfen, ob Fehler vorliegen:

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
}

In diesem Fall können Sie den zurückgegebenen Fehler genau wie im obigen Beispiel wp_insert_post() auf einen Prozess überprüfen.

Die Klasse ist im Codex dokumentiert .
Und es gibt auch einen kleinen Artikel hier .

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

Dies zeigt Ihnen genau, was mit der WordPress-Post-Insert-Funktion nicht stimmt. Probier es einfach !

1
user4772