Я создаю тему с пользовательским типом записи для членов команды, у меня также есть следующая структура страницы:
about <-- this is a page
about/team-members <-- this is a page, lists all the team members
about/team-members/joe-bloggs <-- this is a custom post type (team member) entry
Третья структура здесь использует страницы about и team member, но далее использует настраиваемый слаг типа post, чтобы выглядело, как будто его родители являются членами команды и около. Я добился этого, установив следующие параметры для пользовательского типа сообщения:
...
'rewrite' => array( 'slug' => 'about/team-members', 'with_front' => false)
...
Это прекрасно работает, однако, когда я перехожу на уровень должности члена команды, я больше не получаю классы текущей страницы, текущего предка на родительских страницах. Я знаю, почему это так, потому что технически мы не являемся родителями этих страниц, но есть ли способ, которым я могу обмануть / исправить / упрекнуть, чтобы страницы действительно выглядели как родители?
Я добился этого красиво, используя страницы для членов команды, однако вместо этого был выбран собственный тип поста для простоты использования для администратора.
Спасибо, ребята + девочки!
источник
register_post_type
документации, вы можете помочь?Ответы:
При работе со страницами вы можете выбрать родительскую страницу, и это значение сохраняется в качестве идентификатора родительской страницы в поле дочерней страницы
post_parent
в базе данных.В вашем случае вы используете пользовательский тип записи, поэтому вам нужно будет создать собственный метабокс для родительской страницы; что-то вроде:
Это не имеет ничего общего с
register_post_type
. Вы обманываете WordPress, думая, что это дочерняя страница другого типа (страница).источник
wp_list_pages
.wp_nav_menu
- post_parent о / team-members, но навигация выделяет родительский элемент моих "обычных" сообщений в блоге ... есть еще идеи, как мне это исправить?Я пошел с пользовательским обходчиком, чтобы достичь чего-то похожего ... избегая необходимости в настраиваемых полях, но все посты типа должны находиться ниже одной и той же точки в дереве страниц.
источник
Отказ от ответственности: После того, как я попробовал, это кажется мне уже не существующей проблемой, потому что - по крайней мере для меня - он работает только на моей установке WP 3.9.2. Не удалось найти соответствующий трекер ошибок.
У меня есть вместе небольшой плагин для проверки этого, который может помочь кому-то. Но, как я уже сказал в приведенном выше отказе от ответственности, я не смог воспроизвести проблему в текущей установке WordPress. Я разделил плагин на четыре файла, они собираются вместе в один каталог внутри каталога плагина.
plugin-cpt_menu_hierarchy.php :
include-register_post_type.php :
include-cpt_parent_meta_box.php :
include-menu_highlighting.php :
источник
Возможное решение заключается в том, что всякий раз, когда пользовательский тип записи сохраняется, вы можете установить его «родительский» как
about/team-members
программный.Вот шаги:
источник
У меня было еще немного времени, чтобы покопаться в этом сам (извините, если я потратил чье-то время), и я подумал, что для меня лучший способ решить проблему выделения - это сделать что-то новое.
_wp_menu_item_classes_by_context()
, то есть повторить все Родители и предки пункта меню, который действует как родительский для моего пользовательского типа поста, и соответственно добавляет классы.Так как я также хотел, чтобы родительская страница для моего настраиваемого типа записи была фиксированной и легко изменяемой без необходимости обновления всех сообщений после смены родительского элемента, я решил использовать параметр вместо заполнения
post_parent
поле моих пользовательских сообщений. Я использовал ACF для этого, так как в любом случае я использую его в своей теме, но использование функциональности по умолчанию в WordPress, конечно, также сделает это.Для своих нужд я мог бы использовать
wp_nav_menu_objects
фильтр. Дополнительно мне пришлось отфильтроватьpage_for_posts
опцию чтобы она возвращала ложное / пустое значение, чтобы избежать выделения страницы сообщений по умолчанию.Обратите внимание, что я не прошел весь путь, фильтр только добавляет
current-menu-ancestor
иcurrent-menu-parent
классы, как это было достаточно для моих потребностей!Для полноты, при заполнении
post_parent
(см . Ответ @ Bainternet ) вместо использования опций получение родительского идентификатора может выглядеть примерно так:источник
http://codex.wordpress.org/Function_Reference/get_post_type_object http://codex.wordpress.org/Function_Reference/get_page_by_path
РЕДАКТИРОВАТЬ 1:
Так как указатели не работают:
источник