Gdy post jest aktualizowany, uruchamiane są pewne haki:
'pre_post_update'to akcja uruchamiana tuż przed aktualizacją posta, przekazany argument to 2: $post_IDi $datajest 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_statusi $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_IDi $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 $updatejest 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_postlub wp_insert_postfunkcji.
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_actionwywołaniu.
Np. Jeśli chcesz użyć '$update'argumentu (to jest 3) 'save_post'zaczepu, musisz dodać 3jako $accepted_argsparametr 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_actionjest 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.