Intereting Posts
Перенаправление пользователей после первого входа Таблица списков WP в пользовательском типе сообщений Как предотвратить спам-комментарии? Нажатие персонализированного типа сообщения вверху результатов поиска WordPress не обновляет сообщение или отключает плагин, вместо этого появляется белая страница Простая и настраиваемая форма контакта с возможностью отправки копии отправителю Ошибка map_meta_cap Разница между WordPress и Tumblr? Pagination не работает только на главной странице на последнем сайте WordPress Что использовать для выполнения кода при сохранении страницы настроек плагина? Как реализовать обновление плагина WordPress, которое изменяет базу данных? URL-адрес прослушивателя / подтверждения Что может быть причиной того, что я не могу получить доступ к другим страницам моего сайта localhost wordpress, кроме главной страницы? Войдите в систему с помощью PHPBB на странице WordPress? Показать родительские категории и подкатегории, но не категории больших детей

Не передать правильное значение get_post_ancestors?

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

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

Вот мой код:

global $wp-query; $thisid = $wp_query->post->ID; $type = get_post_type( $thisid ); if($type == 'ia_dir'){ $thisid = '19'; } $thispost = get_post($thisid); if (!$thispost->post_parent) { // if top-level, display only the subpages of this top level page $children = wp_list_pages("title_li=&sort_column=menu_order&child_of=".$thisid."&echo=0&depth=1"); if($children) { // Get post ID to display section title only if this top level page has children $top_page = $thisid; } }else{ // if not, display the siblings of all ancestors and the siblings and children of the current post $ancestors = get_post_ancestors($thisid); // now you can get the ID of the top ancestor of this page; wp is putting the ids DESC, thats why the top level ID is the last one, and that's why we use "end" $top_page = end($ancestors); //initialize pagelist variable to hold list of pages to include $pagelist = ""; //add the immediate children (no grandchildren) of each page in this page's ancestory to the list foreach ($ancestors as $ancestor) { $pageset = get_posts('numberposts=-1&post_type=page&post_parent='.$ancestor); foreach ($pageset as $apage) { $pagelist = $pagelist.$apage->ID.","; } } //add any children of the current page to the list $pageset = get_posts('numberposts=-1&post_type=page&post_parent='.$thisid); foreach ($pageset as $apage) { $pagelist = $pagelist.$apage->ID.","; } //get the list of pages, including only those in our page list $children = wp_list_pages('title_li=&echo=0&sort_column=menu_order&include='.$pagelist); } 

Проблема, с которой я столкнулась, находится в разделе «else» в столбце «post parent». Если пост не указан как тип сообщения «ia_dir», тогда все работает хорошо, я могу получить предков и создать список.

Однако, если это сообщение «ia_dir» (т. Е. Идентификатор передается вручную в $ thisid, а затем в get_post_ancestors), я получаю пустой массив $ ancestors. Я пробовал кучу разных идентификаторов страниц в типе проверки, и ничего не работает. Я даже могу указать идентификатор страницы, который, как я знаю, отлично работает, если я действительно посещаю эту страницу, но когда я перехожу на сообщение «ia_dir» и передаю этот идентификатор страницы вручную, массив пуст.

Это действительно странно. Единственное, что я делаю по-другому, – это передать конкретный номер страницы справочной страницы в $ thisid. Почему это не работает?

Редактировать:

Оператор else работает в любом случае – я всегда получаю массив $ ancestors. Если я посещаю пост 19 (это страница), я получаю листинг, потому что массив $ ancestors заселен. Однако, если я нахожусь в сообщении «ia_dir», я получаю пустой массив $ ancestors, как будто я не передал «19», чтобы получить почтовых предков.

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