Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация В какой момент (на каком хуке ядра) происходит сохранение произвольных полей?
5ответ(ов) в теме
shepot
не в сети 3 года
На сайте с 18.06.2018
Участник
Тем 12
Сообщения 34
1
16:51
Версия WP-Recall: 16.18.21

Здравствуйте.

Что требуется:
После нажатия на кнопке Опубликовать в админке, необходимо получить данные произвольного поля (мейл получателя), сразу же отправить письмо.

Что есть:
Сейчас зацепился за хук draft_to_publish, чтобы при сохранении записи (и её произвольного поля с мейлом) срабатывала отправка письма на мейл из произвольного поля. Почему за этот хук: потому что WP создает запись со статусом draft в БД, а после нажатия Опубликовать переводит встатус publish.

Произвольное поле создано средствами WP-Recall.

В чем проблема:
Var_dump показывает, что произвольное поле пустое (не null, не undefined) после нажатия Опубликовать. Однако, сразу захожу в БД и вижу, что произвольное поле заполнено. Попробовал разное, но по ощущениям, что WP-Recall сохраняет произвольные поля позднее, чем срабатывает хук draft_to_publish. Это только ощущения, а куда копать не знаю.

Вопрос:
В какой момент (на каком хуке ядра) происходит сохранение произвольных полей?

Редакции сообщения
08.07.2020 16:52StatusnickПричина: Убрал ошибки, мешающие восприятию
0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
2
16:57

Здравствуйте.

Ваш вопрос по WordPress. Посмотрите post запрос что выдает и по нему отлавливайте

А что за метабокс

Вы не можете просматривать опубликованные ссылки

и чем он создан - это же сделано все через апи вордпресс.

Можно это попробовать

Вы не можете просматривать опубликованные ссылки

, а можно и третим параметром - приоритетом поиграться.

1
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
3
16:59

Добрый день.
Сейчас какой то хук при сохранении произвольных полей отсутствует, но можно сделать так

add_action( 'save_post', 'rcl_custom_fields_update_after', 10 );
function rcl_custom_fields_update_after( $post_id ) {
	if ( ! isset( $_POST['custom_fields_nonce_rcl'] ) )
		return false;
	if ( ! wp_verify_nonce( $_POST['custom_fields_nonce_rcl'], __FILE__ ) )
		return false;
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
		return false;
	if ( ! current_user_can( 'edit_post', $post_id ) )
		return false;

	//тут что то делаем

}

1
Preci
не в сети 6 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
4
17:05

Так если вам известен meta_key поля - то вы можете найти его значение в $_POST или $_REQUEST внутри draft_to_publish, т.е. данные может еще и не записались в базу, но в запросе то они есть

1
shepot
не в сети 3 года
На сайте с 18.06.2018
Участник
Тем 12
Сообщения 34
5
17:36

Спасибо, я в восторге от такой быстрой помощи.
Спасибо каждому - сразу три новых знания, очень актуальных, полезных и открывающих пути для других решений. В одном топике сразу резкий рост навыков.

Пока что применил $_POST, вытащил из него нужную информацию.

П.С.
Владимир,
wp_transition_post_status - пробовал ранее, от него пришел к draft_to_publish потому что передает одну переменную, а не три (собираюсь еще вешать функции на хук), а за add_meta_box отдельный лайк.

Андрей,
Да, цеплялся на save_post, правда на свою функцию и без дополнительных проверок. Поэтому еще надо было проверять, что это не ревизия и отслеживать, когда выйдет из статуса draft и auto-draft. Ваш совет реализую.

Preci,
Вот эту штуку я теперь буду вообще везде использовать. Я не то, чтобы знал про нее, но догадаться же ведь мог.

Вопрос решен.

Редакции сообщения
08.07.2020 17:40StatusnickПричина: не указано
08.07.2020 17:43StatusnickПричина: не указано
08.07.2020 17:44StatusnickПричина: не указано
2
Тема закрыта. Публикация новых сообщений запрещена.