Поддержка Проблемы и решения проверка данных метабокса рубрики

  • никак не могу решить вопрос.
    надо узнать, присвоили ли записи рубрику или нет.
    на preview странице.
    даже если ни одной галки в метабоксе рубрик не стоит — the_category все равно выдает рубрику «Без рубрики».

    можно, конечно, получить default_category и сравнить с get_the_category, но это не вариант, так как дефолтная рубрика может быть переименована и использоваться в качестве полноценной рубрики сайта.

    а мне нужно узнать именно не забыл ли человек поставить галку в метабоксе рубрик.

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    а мне нужно узнать именно не забыл ли человек поставить галку в метабоксе рубрик.

    Это можно сделать только в момент сохранения — например, повесив функцию проверки на 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-плагинов все легко — а вот рубрика есть всегда, даже когда ее не указали.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    проверил сейчас — нет ее.

    Да, я ошибся, проверял уже на опубликованной записи.

    задача именно на preview странице вывести пользователю напоминалку красным цветом

    Воспользоваться функцией выше, вместо wp_die() сохранить результат в произвольное поле.

    Если рубрика указана (добавить else к последнему условию) — удалять поле.

    При просмотре записи выводить предупреждение, если поле есть.

    я немного не понял.
    функция выше срабатывает только на save_post, которого еще может не быть.
    есть какой-нибудь action на preview?
    я так погуглил и сходу не нашел.

    или единственный способ это вешать save_post на нажатие кнопки превью?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    функция выше срабатывает только на save_post, которого еще может не быть.

    При предпросмотре сначала сохраняется текущая редакция (т.е. срабатывает save_post) и затем читается из базы.

    Дополнительно ничего никуда вешать не нужно 🙂

    Дополнительно ничего никуда вешать не нужно 🙂

    о, работает. спасибо большое 🙂

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Тема «проверка данных метабокса рубрики» закрыта для новых ответов.