Gdy post jest aktualizowany, uruchamiane są pewne haki:
'pre_post_update'
to akcja uruchamiana tuż przed aktualizacją posta, przekazany argument to 2: $post_ID
i $data
jest to tablica wszystkich innych kolumn bazy danych tabeli postów
'transition_post_status'
jest hakiem uruchamianym podczas aktualizacji i przekazuje 3 argumenty: $ new_post_status $old_post_status
i $post
(obiekt).
- Następnie wystrzeliwane są 2 inne zaczepy przejściowe, ale mają one dynamiczną nazwę, co oznacza, że uruchomiona efektywna czynność zależy od starego i nowego statusu wpisu.
"{$old_status}_to_{$new_status}"
a "{$new_status}_{$post->post_type}"
. Najpierw przekaż jako argument jedyny obiekt post, drugi przekaż identyfikator post i obiekt post. Znajdź dokumentację tutaj .
'edit_post'
które przekazują 2 argumenty: $post_ID
i $post
(obiekt)
'post_updated'
które przechodzą 3 argumenty $post_ID
, $post_after
(po przedmiot po aktualizacji), $post_before
(po przedmiot przed aktualizacją)
- Innym hak dynamiczna:
"save_post_{$post->post_type}"
to zależy od postu typu, na przykład dla standardowych stanowisk jest 'save_post_post'
i dla stron jest 'save_post_page'
, Hak ten Pass 3 argumenty $post_ID
, $post
(object) i $update
jest to wartość logiczna (prawda czy fałsz), która jest prawdziwa, kiedy wykonać aktualizację, w fakt, że ten hak jest uruchamiany również wtedy, gdy post jest zapisywany po raz pierwszy.
- '
save_post
' jest uruchamiany zarówno podczas aktualizacji, jak i przy pierwszym zapisywaniu, i przekazuje te same 3 argumenty z poprzedniego przechwytywania.
- '
save_post_{$post_type}
' jest uruchamiany zarówno podczas aktualizacji, jak i przy pierwszym zapisywaniu, i przekazuje te same pierwsze 2 argumenty poprzedniego zaczepu.
- Wreszcie masz '
wp_insert_post
' , który jest uruchamiany zarówno przy aktualizacji, jak i przy pierwszym zapisywaniu, i przekazujesz te same 3 argumenty z poprzednich 2 przechwyceń.
Te haki są uruchamiane za każdym razem, gdy post jest aktualizowany, zarówno przez strony administracyjne w backend, jak i po aktualizacji „ręcznie” za pomocą wp_update_post
lub wp_insert_post
funkcji.
Gdy post jest aktualizowany za pomocą stron administracyjnych, uruchamiane są dodatkowe haki, przykładem jest 'update_post_redirect'
lub 'post_updated_messages'
. (Patrz to i to WPSE odpowiedzi na przykłady stosowania).
Zauważ, że jeśli chcesz skorzystać z argumentu hooks, nie jest to pierwszy, musisz jawnie zadeklarować go w add_action
wywołaniu.
Np. Jeśli chcesz użyć '$update'
argumentu (to jest 3) 'save_post'
zaczepu, musisz dodać 3
jako $accepted_args
parametr add_action
( patrz dokumenty ):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
Ostatnia uwaga dotyczy czasu : musisz upewnić się, że add_action
jest wywoływany przed uruchomieniem akcji, inaczej nie zrobi nic.
Np. Ten kod:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
nic nie zrobi, ponieważ akcja jest dodawana po wystrzeleniu haka. Tutaj łatwo go rozpoznać, w prawdziwym świecie kod nie zawsze jest taki.
save_post
, czy to jest literówka, czy też w twoim oryginalnym kodzie? także włączyć debugowanie przy opracowywaniu.