Intereting Posts
безопасность + лучшие практики: root или www-data в папке содержимого WordPress? Получить идентификатор родительской страницы / меню текущего сообщения Фотография на основе дизайна – несколько изображений за сообщение WP_Query, не рассматривающий категорию детей Создать пользовательскую установку WP с плагинами, темой и т. Д. Уже установлен? Почему моя импортированная база данных не появляется? install.php всплывает и добавляет новые таблицы в базу данных Обновление WordPress 3.1 изменило мои сообщения в блоге Скрыть кнопку на основе результата PHP Пользовательский тип сообщения не отображается в списке admin Проблема с локалями при сохранении и чтении в / из пользовательской таблицы Пользовательский тип сообщения для вывода метаданных, выводящий в результате WSoD Каков правильный способ включения Bootstrap при выполнении короткого кода Отсутствует визуальный редактор, проблема с сервером, как бы вы отлаживали его? Пусть пользователи фильтруют сообщения по пользовательским полям Я хочу показать свое сообщение в течение ограниченного времени, как это возможно?

Получить все идентификаторы страниц детей, включая родительский титул

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

function get_all_pages( $page_title ) { $page = get_page_by_title( $page_title ); $pages = get_pages( array( 'child_of' => $page->ID, 'sort_column' => 'post_date', 'sort_order' => 'desc' ) ); $array = array(); $array[] = array( 'ID' => $page->ID ); foreach( $pages as $page ){ $array[] = array( 'ID' => $page->ID ); } return $array; } $allpages = get_all_pages( 'Page Title' ); foreach( $allpages as $page ) { if( is_page( $page['ID'] ) ): // Show stuff only on these pages endif; } 

Вы сделали это с трудом. WP_Query может выполнять большую часть работы для вас.

 function get_all_pages($page_title) { $page = get_page_by_title($page_title); if (empty($page)) return array(); $children = new WP_Query( array( 'post_type' => 'page', 'post_parent' => $page->ID, 'fields' => 'ids' ) ); array_unshift($children->posts,"{$page->ID}"); return $children->posts; } $allpages = get_all_pages('Sample Page'); var_dump($allpages); 

Уже поздно, и я сон, но я думаю, что дублирует вашу функцию, за исключением того, что ваш код, без необходимости, создает вложенные массивы. Мой код дает вам «плоский» массив.