Câu trả lời:
Chỉ định trả về của hàm cho biến.
Kiểm tra biến với is_wp_error()
.
Nếu true
xử lý phù hợp, ví dụ trigger_error()
với thông báo từ WP_Error->get_error_message()
phương thức.
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();
}
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 .
$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ó !
WP_Error
là không một PHPException
đối tượng. Bạn không sử dụngtry/catch
cá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.