( Примечание модератора: Первоначальное название было "Как я могу создать и использовать собственный шаблон для пользовательских типов сообщений в структуре темы Genesis?")
Я использую фреймворк Genesis с почти полностью "стандартной" дочерней темой. У меня установлен WP Easy Post Types плагин, и я создал один пользовательский тип записи ("Участники"). У меня есть два настраиваемых поля, которые можно использовать для типа сообщения "участник" (номер телефона и адрес). Я пытаюсь выяснить, как отображать информацию из этих полей в двух местах: example.com/members
и example.com/members/bob
. Genesis не поддерживает типичный файл single-posttype.php
для создания шаблона для пользовательского типа записи, но даже если он это сделал, он не заботится о example.com/members
. Любые предложения о том, как получить нужную информацию для отображения?
Оказывается, я был не прав, Genesis поддерживает использование метода page_posttype.php
для создания собственного шаблона. Это оказалось очень просто. Вот содержимое моего файла page_members.php (находится в папке дочерней темы):
<?php
/*
Template Name: Members
*/
remove_action('genesis_loop', 'genesis_do_loop');
add_action('genesis_loop', 'custom_loop');
function custom_loop() {
global $paged;
$args = array('post_type' => 'members');
genesis_custom_loop( $args );
}
genesis();
Может ли кто-нибудь уточнить следующий шаг этого процесса? У меня есть аналогичный пользовательский тип записи в дочерней теме Genesis, и мне нужно изменить цикл на страницах таксономии с несколькими постами, а также на отдельных страницах постов. Куда идет пользовательский код для цикла в этом случае? Спасибо!
Этот шаблон должен находиться в папке дочерней темы, но не в Genesis.
Редактировать:
Вам нужно будет вручную создать файл single- $ posttype.php и добавить его в дочернюю тему, как отмечено выше. Пожалуйста, взгляните на Иерархия шаблонов WordPress . Само собой разумеется, что все, что вы добавляете в дочернюю тему, переопределит файлы родительской темы.
Посмотрите, как Мэтт Уибе делает это в своем плагине "Smarter Custom Post Types":
http://somadesign.ca/projects/smarter-custom-post-types/
Соответствующая функция здесь:
function my_custom_template_include( $template ) {
if ( get_query_var('post_type') == 'members' ) {
if ( is_single() ) {
if ( $single = locate_template( array( 'members/single.php') ) )
return $single;
}
else { // loop
return locate_template( array(
'members/index.php',
'members.php',
'index.php'
));
}
}
return $template;
}
add_filter( 'template_include', 'my_custom_template_include' );