Cách bắt / phải làm gì với Đối tượng Lỗi WP


15

Tôi đang chạy một số hàm WP trực tiếp bên trong một plugin, bao gồm wp_insert_post (), nếu có lỗi, điều này trả về một đối tượng Lỗi WP, phương pháp đúng để bắt lỗi này là gì? Sử dụng các hàm WP tích hợp hoặc ngoại lệ PHP hoặc không có gì cả ..


4
Chỉ cần để thêm vào và làm rõ những gì được nói trong các câu trả lời ở đây, WP_Errorkhông một PHP Exceptionđối tượng. Bạn không sử dụng try/catchcác phương pháp với nó. Nhưng như đã lưu ý, có các chức năng tiện lợi để dễ sử dụng.
Dougal Campbell

Câu trả lời:


21
  1. Chỉ định trả về của hàm cho biến.

  2. Kiểm tra biến với is_wp_error().

  3. Nếu truexử lý phù hợp, ví dụ trigger_error()với thông báo từ WP_Error->get_error_message()phương thức.

  4. Nếu false- tiến hành như bình thường.

Sử dụng:

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

Đầu tiên, bạn kiểm tra thời tiết kết quả của bạn có phải là một WP_Errorđối tượng hay không:

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

Đây là cách thông thường.

Nhưng đối tượng WP_Error có thể được cung cấp mà không có bất kỳ lỗi nào xảy ra, chỉ để hoạt động như một kho lưu trữ lỗi chung chỉ trong trường hợp. Nếu bạn muốn làm như vậy, bạn có thể kiểm tra nếu có bất kỳ lỗi nào bằng cách sử dụng 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
}

Nếu bạn làm điều đó, thì bạn có thể kiểm tra một quá trình lỗi được trả về như trong wp_insert_post()ví dụ trên.

Lớp học được ghi lại trên Codex .
Và cũng có một bài viết nhỏ ở đây .


Cảm ơn! Đoạn mã đầu tiên của bạn đã làm việc cho wp_insert_user.
Mohammad Mursaleen

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

Điều này sẽ cho bạn thấy chính xác những gì sai với chức năng chèn bài đăng wordpress. hãy thử nó !

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.