а мне нужно узнать именно не забыл ли человек поставить галку в метабоксе рубрик.
Это можно сделать только в момент сохранения — например, повесив функцию проверки на save_post
:
function require_post_category( $post_id ) {
if ( wp_is_post_revision( $post_id ) ) {
return;
}
if ( isset( $_POST['post_category'] ) && ! array_filter( $_POST['post_category'] ) ) {
wp_die( 'Необходимо выбрать рубрику.' );
}
}
add_action( 'save_post', 'require_post_category' );
Если галочка снята, в массиве $_POST['post_category']
будет только одно (нулевое) значение, оно отсекается функцией array_filter()
.
Проверка будет срабатывать только на записях, добавленных через админку (на вставленных функцией wp_insert_post()
напрямую — не будет).
Как минимум одна галочка — на рубрике по умолчанию — там установлена всегда.
проверил сейчас — нет ее.
она появляется только в момент сохранения записи.
а попробуйте добавить запись и тут же нажать на превью — галка все равно не появится.
на двух сайтах проверил — без сохранения записи в метабоксе рубрик ни одной галки не появляется.
задача именно на preview странице вывести пользователю напоминалку красным цветом о том, какие элементы записи он забыл указать. со всякими там заголовками, метками, данными seo-плагинов все легко — а вот рубрика есть всегда, даже когда ее не указали.
проверил сейчас — нет ее.
Да, я ошибся, проверял уже на опубликованной записи.
задача именно на preview странице вывести пользователю напоминалку красным цветом
Воспользоваться функцией выше, вместо wp_die()
сохранить результат в произвольное поле.
Если рубрика указана (добавить else
к последнему условию) — удалять поле.
При просмотре записи выводить предупреждение, если поле есть.
я немного не понял.
функция выше срабатывает только на save_post, которого еще может не быть.
есть какой-нибудь action на preview?
я так погуглил и сходу не нашел.
или единственный способ это вешать save_post на нажатие кнопки превью?
функция выше срабатывает только на save_post, которого еще может не быть.
При предпросмотре сначала сохраняется текущая редакция (т.е. срабатывает save_post
) и затем читается из базы.
Дополнительно ничего никуда вешать не нужно 🙂
Дополнительно ничего никуда вешать не нужно 🙂
о, работает. спасибо большое 🙂