WordPress пост сохранить / редактировать сообщение хук - PullRequest
2 голосов
/ 04 декабря 2011

Я ищу админ-хук для сообщений, которые запускаются после сохранения сообщения.Проблема: save_post не содержит уже измененных данных для объекта публикации.Новые изменения можно найти только в массиве $_POST.Но мне нужен способ обновить постоянную ссылку на внешний API после изменения post_name.Но это не сработает, поскольку объект $post остается старым до действия сохранения.

Ответы [ 3 ]

3 голосов
/ 11 ноября 2013

Вы должны иметь возможность подключиться после того, как сообщение было обновлено с использованием аргумента приоритета (в этом примере установлено значение 20):

add_action( 'save_post', 'your_function', 20, 1 );
function your_function( $post_id ) {
    // this should be the updated post object 
    $post = get_post( $post_id );
}
1 голос
/ 04 декабря 2011

Я думаю, что наиболее подходящий метод - это запросить старые значения из базы данных и сравнить их с $_POST значениями массива.

Вот ссылка, которая должна помочь вам прочитать значения из базы данных.

http://codex.wordpress.org/wpdb#query_-_Run_Any_Query_on_the_Database

P.S: Конечно, вы должны сделать это сравнение "перед" сохранением новых значений в базе данных.

0 голосов
/ 19 января 2019

Начиная с WordPress 3.0.0 доступен хук post_updated.Помогает узнать, что изменилось в посте после обновления.Вы можете использовать пример в Кодексе WP в качестве образца.

add_action( 'post_updated', 'check_updated_post_name', 10, 3 );
function check_updated_post_name( $post_ID, $post_after, $post_before ) {
    if ( $post_after->post_name != $post_before->post_name ) {
        // do what you need
    }
}

А если сообщение только что было вставлено, вы можете использовать save_post или save_post_{$post->post_type} крючки.Проверьте значение третьего аргумента, чтобы убедиться, что сообщение новое.

add_action( 'save_post', 'check_new_post_name', 10, 3 );
function check_new_post_name( $post_ID, $post, $update ) {
    if ( ! $update ) {
        // do what you need
    }
}
...