WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Отображение произвольных записей в меню.

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

Когда самостоятельно добавлял произвольный тип записей в меню они отобразились, сейчас что то не найду.

Как реализовать данный функционал?

Заметки к вопросу:
Vicos 6.5 лет назад

Место регистрации этих типов не могу найти ни в плагинах, ни в теме.

Vicos 6.5 лет назад

Нашёлся хук для плагина где задаются эти настройки:

add_filter('cherry_projects_post_type_args', [$this, 'edit_archive_project'], 10, 1);
public function edit_archive_project($args)
	{
		$args['show_in_nav_menus'] = true;
		return $args;
	}

Но всё равно нет их в меню.

0
Vicos
6.5 лет назад 1
  • 1
    campusboy4750 www.youtube.com/c/wpplus

    При регистрации нового типа записи функция register_post_type() принимает много параметров, один из них show_in_nav_menus. Если значение этого параметра будет false, то тип поста не будет отображаться при выборе пунктов меню. Если отредактировать нет возможности, то можно с помощью хука registered_post_type внедриться в объект и внести изменения:

    add_action( 'registered_post_type', 'change_post_type_object', 10, 2 );
    function change_post_type_object( $post_type, $post_type_object ) {
    	if ( 'post_type_name' == $post_type ) {
    		$post_type_object->show_in_nav_menus = true;
    	}
    }

    Где post_type_name - название типа записи (см. описание функции). Подобный принцип и с register_taxonomy(), только изменения вносятся через хук registered_taxonomy.

    Vicos 6.5 лет назад

    Странно, но не помогло. Есть ещё какие нибудь мысли?

    campusboy 6.5 лет назад

    Нет, других решений я не знаю. Мне всегда это решение помогает. Пришли код, который написал.

    Vicos 6.5 лет назад

    Сперва убрал этот тип.

    add_action('init', 'my_unregister_post_type', 999);
    function my_unregister_post_type(){
    	unregister_post_type('cherry-services');
    }

    После применил код из примера.

    add_action( 'registered_post_type', 'change_post_type_object', 10, 2 );
    function change_post_type_object( $post_type, $post_type_object ) {
    	if ( 'cherry-services' == $post_type ) {
    		$post_type_object->show_in_nav_menus = true;
    	}
    }
    campusboy 6.5 лет назад

    Зачем убрал? Разве было где-то написано, что надо это делать? Конечно, ты "убил" тип поста и вся работа коту под хвост))

    Vicos 6.5 лет назад

    Я пробовал и так и так. Помню когда свой тип забивал, что бы после внести изменения в настройках нужно было "убивать" тип записи, а после с обновлёнными настройками снова его добавлять.

    campusboy 6.5 лет назад

    Используешь плагин Cherry Services List?

    Vicos 6.5 лет назад

    Точно. Есть такой. Он в комплекте с темой шёл.

    campusboy 6.5 лет назад

    Поставил этот плагин, проблем не вижу:

    Vicos 6.5 лет назад

    Ооо! Блин. Видимо что то в теме перебито. Буду искать. Спасибо!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация