Intereting Posts
Параметры экрана WordPress не показывают никаких полей Тема GPL 2 с использованием рамки для коммерческой темы? Отсутствует аргумент 2 для wpdb :: prepare () Удаление данных из пользовательской таблицы в wordpress Получение комментариев для сообщений с использованием WP_Query () и пользовательского цикла? Штрих-код списка воспроизведения, предотвратить повтор Как изменить URL-адрес вкладки Сортировать должности по годам Как разделить сообщение на более чем одну страницу, используя <! – nextpage ->? wp_editor удаляет абзац из пользовательского мета-поля 404 при предварительном просмотре несохраненного черновика Как обрабатывать несколько кнопок отправки на странице параметров плагина? Каков простой способ сортировки пользовательских типов сообщений вручную? Программно извлекать классы боковой панели / s Изображение миниатюр в соответствии с экраном

get_page_children () возвращает только заголовки

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

Я заметил, что метод get_page_children() возвращает все об этой странице – post_author , post_date , post_content , post_title и т. Д. Есть ли способ ограничить это, чтобы он возвращал только post_title ? В противном случае он создает ненужные накладные расходы при запросе всех других свойств, которые не отображаются в нижнем колонтитуле.

Кроме того, существует ли способ ограничить количество возвращаемых объектов? Я только хочу, чтобы последние четыре заказали по дате спуска.

  <h3>Recent Projects</h3> <ul class="footer-list"> <?php // Set up the objects needed $my_wp_query = new WP_Query(); $all_wp_pages = $my_wp_query->query(array('post_type' => 'page')); // Get the page as an Object $projects = get_page_by_title('Projects'); // Filter through all pages and find Portfolio's children $projects_children = get_page_children( $projects->ID, $all_wp_pages ); // echo what we get back from WP to the browser foreach ($projects_children as $project): ?> <li> <a href="<?php echo get_permalink($project); ?>"><?php echo var_dump($project);//echo $project->post_title; ?></a> </li> <?php endforeach; ?> </ul> 

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

 <h3>Recent Projects</h3> <ul class="footer-list"><?php $projects_page = get_page_by_title('Projects'); $args = array( 'post_type' => 'page', 'post_parent' => $projects_page->ID, 'ignore_sticky_posts' => true, 'posts_per_page' => 4, 'fields' => 'ids', ); $projects = new WP_Query($args); foreach ($projects as $project) { ?><li> <a href="<?php echo get_permalink($project); ?>"><?php echo get_the_title($project); ?></a> </li><?php } ?></ul> 

Не так много накладных расходов, вы все равно попадаете в базу данных. Просто используйте array_map .

 function get_titles($n) { return($n->post_title); } $titles_only = array_map("get_titles", $projects_children ); 

Что касается ограничения и порядка, проверьте параметры posts_per_page на страницы ( posts_per_page ) и параметры Order & Orderby WP_Query.

Примечание: код не проверен.