Отменить сохранение записи save_post

79
05 марта 2022, 20:40

Как отменить обновление записи, если валидация не прошла?
Допустим нужно отредактировать заказ woocommerce или запись блога, использую такой код:

add_action( 'save_post', 'admin_save_order', 10, 1 );
function admin_save_order( $post_id ) {
    if ( 'shop_order' == $_POST[ 'post_type' ] ) {
        if ( current_user_can( 'edit_page', $post_id ) ) {
            if(not validate){
            return;
            }
        }
    }
}

что-то типа такого как правильно сделать? и нужно добавить какое-то сообщение для админа

Answer 1

Попробуйте фильтр wp_insert_post_empty_content. Пример:

add_filter( 'wp_insert_post_empty_content', 'cancel_order_save_function', 99, 2 );
function cancel_order_save_function( $maybe_empty, $postarr ) {
    if ( true === wp_is_post_revision( $postarr[ 'ID' ] ) ) {
       return $maybe_empty; //do not forget to return original value to keep other filters working
    }
    if( not validate ) {
        return true;
    }
    return $maybe_empty; //do not forget to return original value to keep other filters working
}
READ ALSO
проверить существует ли файл?

проверить существует ли файл?

как из массива со списком расширениями проверить существует ли файл?

113
SELECT YII2 WHERE IN

SELECT YII2 WHERE IN

Подскажите почему выборка срабатывает и показывает только одну запись

118
Не могу извлечь данные из тега

Не могу извлечь данные из тега

ищу в этом куске <div class="chart chart__temperature" style="height: 77px;width: 660px"><div class="values" style="height: 77px"> этот текст height: 77px;width: 660px

74
почему переменная не передается в функцию?

почему переменная не передается в функцию?

почему переменная $city не передается в функцию, а $courses в where() подставляется

82