Исключить из wp_list_pages по шаблону

У меня есть серия страниц «Спасибо», которые возникают из разных форм. Я хотел бы иметь возможность исключить их из sitemaps на основе их шаблона. В частности, и в качестве простого примера, исключая их из списка на основной странице 404, в которой используются wp_list_pages.

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

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

'exclude' => 'template-name', versus the standard 'exclude' => '17', 

Solutions Collecting From Web of "Исключить из wp_list_pages по шаблону"

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

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

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

 $args = array( 'fields' => 'ids', 'post_type' => 'page', 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => '_hide_from_sitemap', 'compare' => 'EXISTS', ) ) ); $pages_to_exclude = new WP_Query( $args ); 

После того, как это будет запущено, $pages_to_exclude->posts будет массивом идентификаторов страниц, которые вы можете передать непосредственно в качестве аргумента exclude для wp_list_pages .