Сделайте пользовательский тип записи отображаемым в виде страницы


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

Я рассмотрел возможность создания шаблона, такого как "single-.php". Но это слишком статично, чтобы работать с любым тематическим дизайном.

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

Спасибо!

Author: Sarathi Hansen, 2012-06-09

2 answers

Существует ряд фильтров шаблонов, которые можно использовать для изменения иерархии шаблонов. Взгляните на страницу иерархии шаблонов с представленными фильтрами и примером.

Вот модифицированная версия примера, в котором используется single_template. Он проверяет наличие определенного пользовательского типа публикации и загружает шаблон темы page.php, если он существует:

function wpa54721_single_template( $templates = '' ){

    // get data for the current post and check type
    $this_post = get_queried_object();
    if( 'my_custom_post_type' == $this_post->post_type ):

        // $templates could be empty, a string, or an array,
        // we need to check and alter it appropriately

        if( !is_array( $templates ) && !empty( $templates ) ):
            // it's a string
            $templates = locate_template( array( 'page.php', $templates ), false );
        elseif( empty( $templates ) ):
            // it's empty
            $templates = locate_template( 'page.php', false );
        else:
            // it's an array
            $new_template = locate_template( array( 'page.php' ) );
            if( !empty( $new_template ) ) array_unshift( $templates, $new_template );
        endif;

    endif;

    return $templates;
}
add_filter( 'single_template', 'wpa54721_single_template' );
 3
Author: Milo, 2012-06-10 00:58:11

С этим мне приходится сталкиваться каждый день при создании тем, в которых используется множество пользовательских типов сообщений.

В принципе, мы хотим, чтобы наши пользовательские типы записей имели все те же функции, что и обычные записи или страницы. Это означает категории, архивы и т.д.

Сначала вы должны создать все свои обычные страницы. Это означает:

  • archive-cpt.php
  • categories-cpt.php
  • single-cpt.php
  • и т.д.

Теперь, если вы все сделали правильно, перейдя на такие страницы, как /custom-post-type/page/2/, Вы должны увидеть свой архив и т. Д.

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

Для этого вам потребуется создать шаблон страницы . Этот шаблон страницы в конечном итоге будет работать так index.php или archive.php, где будет перечислено 10 (или более) сообщений. Когда вы его создадите, создайте новую страницу на сайте и установите шаблон страницы в соответствии с вашим новым шаблон.

После этого перейдите в Настройки -> Чтение и выберите эту страницу в качестве главной страницы. Теперь у вас должен быть список последних добавленных вами пользовательских сообщений.

 1
Author: Tyler Carter, 2012-06-10 00:20:38