kaiser
  • 0
Гуру

Использование пользовательских шаблонов для пользовательских типов сообщений для Genesis Theme Framework?

  • 0

( Примечание модератора: первоначальный заголовок был «Как я могу создать и использовать собственный шаблон для пользовательских типов сообщений в рамках темы Genesis?»)

Я использую структуру темы Genesis с почти полностью «стандартной» дочерней темой. У меня установлен плагин WP Easy Post Types, и я создал один настраиваемый тип сообщений («Участники»). У меня есть два настраиваемых поля, созданных для использования для типа сообщения «член» (номер телефона и адрес). Я пытаюсь понять, как отображать информацию из этих полей в двух местах: example.com/members и example.com/members/bob . Genesis не поддерживает обычный single-posttype.php файл для создания шаблона для пользовательского типа записи, но даже если бы он это сделал, это не заботится о файлах example.com/members . Любые предложения о том, как получить желаемую информацию для отображения?

Share
  1. Оказывается, я ошибался насчет того, что Genesis не поддерживает этот метод. Смотрите мой ответ ниже.

    • 0
  2. Оказывается, я ошибался, 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();
    
    • 0
  3. Посмотрите, как Мэтт Вибе делает это в своем плагине «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' );
    
    • 0
  4. Может ли кто-нибудь прояснить следующий шаг этого процесса? У меня есть аналогичный настраиваемый тип сообщения в дочерней теме Genesis, и мне нужно изменить цикл на страницах таксономии с несколькими сообщениями, а также на отдельных пользовательских страницах сообщений. Куда в этом случае идет пользовательский код для цикла? Спасибо!

    • 0
  5. Однако этот шаблон должен находиться в папке дочерней темы, а не в Genesis.

    Редактировать:

    Вам нужно будет вручную создать файл single-$posttype.php и добавить его в дочернюю тему, как указано выше. Пожалуйста, взгляните на иерархию шаблонов WordPress. Само собой разумеется, что все, что вы добавляете в дочернюю тему, переопределит файлы родительской темы.

    • 0

Оставить ответ

You must login to add an answer.