Intereting Posts
Как разрешить ошибку «Cookies заблокированы из-за неожиданного вывода».? Как создать полный канал RSS (секретный URL) для определенных пользователей, короткий для остальных Постоянная ссылка на сообщение работает, на страницах 404 ошибка Обзор структуры пользовательского типа публикации WordPress Media Manager – ограничение определенного типа mime Отображать содержимое с другой страницы сайта с помощью короткого кода Удалить число разбиения на страницы Переместить сообщение в другую категорию, если поле post_meta равно 0 или составляет 2 дня? Удаление h3s в выводе? Ошибка обновления плагина: ошибка cURL 35: сброс соединения TCP с помощью одноранговой сети Get_term_by возвращает только один элемент из массива как захватить первую ссылку в сообщении … и, конечно, назовите ее Нужна помощь Поиск плагина электронной коммерции WordPress, который использует настраиваемые типы сообщений Прямые посетители iPhone для разных таблиц стилей? Пользовательская роль, доступ к таблице параметров wp

Отображать пользовательские типы сообщений в wp_list_pages

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

У меня есть следующие настраиваемые типы сообщений: Events, Blog & News – все это страницы внуков News & Events, которые являются дочерней страницей раздела About:

  • Около
    • Новости и события
      • Блог
      • Мероприятия
      • Новости

Мне нужно отображать боковую панель, когда на архиве и на отдельных страницах, но я не могу понять, как это сделать.

Блог, события и новости настроены как страницы в области администрирования wordpress, и им был присвоен шаблон архива, который вызывает / включает мою боковую панель.

Как отобразить иерархию структуры страницы на боковой панели на странице архива?

Мой код боковой панели выглядит так:

<aside class="default-sidebar"> <?php if ( 0 == $post->post_parent ) { ?> <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4> <?php } else { $parents = get_post_ancestors( $post->ID ); $parent_title = apply_filters( "the_title", get_the_title( end ( $parents ) ) ); $parent_url = apply_filters( "the_permalink", get_the_permalink( end ( $parents ) ) ); ?> <h4><a href="<?php echo $parent_url; ?>"><?php echo $parent_title; ?></a></h4> <?php } ?> <button id="default-sidebar-toggle--js" class="default-sidebar-toggle">Pages in this section</button> <div class="default-sidebar-toggle-menu" id="default-sidebar-toggle-menu--js"> <?php if(!$post->post_parent){ $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0"); } else { if($post->ancestors) { $ancestors = end($post->ancestors); $children = wp_list_pages("title_li=&child_of=".$ancestors."&echo=0"); } } if ($children) { ?> <ul><?php echo $children; ?></ul> <?php } ?> </div> 

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

Чтобы упростить вещи, сначала сделайте свои архивы актуальными Архивы – не Страницы. Это поможет вам позже перечислять правильный контент.

 unregister_post_type('blog'); unregister_post_type('event'); unregister_post_type('news'); 

Отмена регистрации типа сообщения не приведет к удалению какого-либо контента, он просто гарантирует, что при их повторной регистрации настройки вступят в силу.

Подстройте свои вызовы register_post_type которые должны выглядеть примерно так:

 register_post_type('blog', array( ... a bunch of settings ... ) ); 

и настроить или добавить has_archive и rewrite . Измените часть «новости и события» на все, что происходит с вашей страницей новостей и событий:

 register_post_type('blog', array( ... a bunch of settings ..., 'has_archive' => 'news-and-events/blog', 'rewrite' => array('slug' => 'news-and-events/blog' ) ); 

(делать то же самое для всех трех типов сообщений, заменяя «блог» для текущего типа сообщения)

На этом этапе вам нужно будет удалить страницы, поэтому WordPress не путается, показывать ли страницу или архив. Вы также должны посетить страницу Настройки> Постоянная ссылка в wp-admin. Вам не нужно изменять какие-либо настройки; просто посещение этой страницы заставит WP обновить постоянные ссылки и обеспечить доступ к новым Архивам.

Затем создайте или отредактируйте archive.php в своей теме. (Если вы еще не используете дочернюю тему или настраиваемую тему, остановите и создайте дочернюю тему, чтобы при обновлении родительской темы вы не потеряли свои правки.) Теперь вы можете добавить условие, чтобы всякий раз, когда вы находятся в блоге, событии или в архиве новостей, вы видите эту боковую панель.

 // Check the main query to see if this is one of the archives we're targeting. $current_post_type = $wp_query->query['post_type']; // If so: if($current_post_type == 'blog' || $current_post_type == 'event' || $current_post_type == 'news') { // Display the sidebar. (edit 'name-of-your-sidebar') if(!function_exists('dynamic_sidebar') || !dynamic_sidebar('name-of-your-sidebar')): endif; } // Otherwise, do nothing here. Or, insert a different sidebar that will apply to all other archives, such as Post Categories. 

Похоже, что у вас нет боковой панели, установленной как динамическая виджетная боковая панель. Таким образом, вы можете либо заменить вызов «dynamic_sidebar» выше на жестко закодированную боковую панель, либо превратить свой код листинга в виджет. Я бы рекомендовал этот подход, так как тогда вы сможете более легко контролировать, где он появляется на сайте.