Необходимо назначить пользовательскую таксономию страницам с указанным шаблоном c php - Wordpress - PullRequest
0 голосов
/ 01 мая 2020

Я создал в Wordpress пользовательскую таксономию под названием 'consultants_category' и назначил ее для пользовательского типа записи. Теперь мне нужно присвоить эту таксономию страницам с указанным шаблоном c php - 'page-consultants. php'.

Wordpress имеет функцию для назначения пользовательской таксономии, называемой 'register_taxonomy_for_object_type' (https://developer.wordpress.org/reference/functions/register_taxonomy_for_object_type/), но когда я ее использую, моя таксономия (пользовательские категории) отображается на серверной части всех страниц wp и Я не знаю, как брать страницы только с указанным c шаблоном страницы.

Вот приблизительное представление о том, что мне нужно достичь (получить все страницы wp -> отфильтровать все страницы, чтобы получить страницы только с указанными c php template -> назначить пользовательскую таксономию только для отфильтрованных страниц):

function add_taxonomies_to_pages() {
$pages = get_pages(
     array(
    'meta_key' => '_wp_page_template',
    'meta_value' => 'page-consultants.php'
       )
);

foreach($pages as $page){
 register_taxonomy_for_object_type( 'consultants_category', 'pages');
}
}

add_action( 'init', 'add_taxonomies_to_pages' );

Буду признателен за любую помощь. Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Если я правильно понимаю из вашего вопроса и ваших комментариев, вам нужен архив для этой пользовательской таксономии:

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

Взято из: https://developer.wordpress.org/themes/template-files-section/taxonomy-templates/

Таким образом, вы в основном берете archive.php, создаете копию и называете ее consultants_category.php - затем в этом макете файла и отображаете содержимое так, как вам нужно, чтобы оно отображалось. Используйте файл archive.php в качестве отправной точки и измените при необходимости. Когда вы делаете это таким образом, он готовится к таксономии consultants_category, определяет, какой именно термин c в этой таксономии необходимо отобразить, и затем выводит макет, который вы указали.

0 голосов
/ 01 мая 2020

Если вы регистрируете таксономию, вы можете выбрать тип поста, на который должна быть зарегистрирована таксономия. https://codex.wordpress.org/Function_Reference/register_taxonomy

В вашем случае это были бы страницы. Это повлияет на все страницы, потому что все они относятся к типу "page".

Вы можете создать другой тип записи, если хотите отделить его от страниц.

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...