Я пытался выяснить, почему save_post
не запускается «Быстрое редактирование», и нашел решение здесь. По- видимому, глобальная $post
не доступна при обновлении сообщения в режиме быстрого редактирования.
Итак, теперь я работаю – см. Рабочий пример ниже, но я не понимаю, почему он работает.
function mytestfunc($post_id) { $key = 'test'; $data = 'this is a test'; update_post_meta( $post_id, $key, $data ); } add_action( 'save_post', 'mytestfunc' );
Может кто-нибудь объяснить мне, откуда этот $post_id
? Я не mytestfunc
значение в add_action
– поэтому я не понимаю, почему mytestfunc
знает, на какую должность я нацеливаюсь?
Это происходит из wp_insert_post()
, где do_action()
вызывается с двумя дополнительными параметрами:
do_action('save_post', $post_ID, $post);
Так что вы не добавляете параметры, это WordPress.
Если вы зарегистрируете обратный вызов с четвертым параметром, установленным на 2
…
add_action( 'save_post', 'mytestfunc', 10, 2 );
… вы даже получите полный объект $post
:
function mytestfunc( $post_id, $post )