У меня запущена функция, которая сначала проверяет, является ли тип записи 'shop_order', а если нет, то эту функцию запускать не следует.Я использую return;
, чтобы завершить его, но когда я пытаюсь добавить новое сообщение в тип сообщения «продукт», я получаю следующую ошибку:
PHP Fatal error: Uncaught Error: Call to a member function get_data() on boolean in..
Почему это говорит о функции get_data()
неучтенный?Этот код не должен выполняться до этой точки, если post_type
не shop_order
.Я даже распечатал $ post_type, который возвращает product
.
function woocommerce_process_shop_order ( $post_id, $post, $update ) {
if (isset($post->post_status) && 'auto-draft' == $post->post_status) {
return;
}
// Autosave, do nothing
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
// AJAX? Not used here
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
return;
}
// Check user permissions
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
// don't run the echo if the function is called for saving revision.
if ( $post->post_type == 'revision' ) {
return;
}
$post_type = get_post_type($post_id);
error_log( print_r( $post_type, true ) );
// terminate early if post type is not 'post' and if we are updating post object and not creating it.
if ( "shop_order" != $post_type && !$update ) {
return;
error_log( print_r( 'not shop order', true ) );
}
$is_new = $post->post_date === $post->post_modified;
if ( $is_new ) {
$order = wc_get_order( $post_id );
$order_data = $order->get_data();
}
}