scottb
  • 0
Гуру

Добавить шаблон на панель атрибутов страницы как для сообщений, так и для страниц?

  • 0

Я хотел бы сохранить свою основную тему в качестве активной темы, но разрешить пользователям выбирать немного другой макет с помощью панели «Атрибуты страницы/публикации». В идеале я хотел бы сохранить этот макет в каталоге «стили» моей основной темы в отдельной папке.

MyTheme > стили > My-special-Layout > style.css

Так что в панели «Атрибуты страницы» я вижу там шаблон под названием «Мой-специальный-макет»

Однако у меня есть две проблемы…

  1. Кажется, я не могу отобразить «дочернюю» тему на панели «Атрибуты страницы». (Я просто добавляю папку в основной каталог темы и помещаю туда style.css файл со значением » Template: my_main_theme_directory «). Но я никогда не вижу никаких шаблонов на панели «атрибуты страницы».

  2. Я не могу получить панель «Атрибуты страницы» в редакторе POST. Я бы хотел, чтобы шаблон применялся как к сообщениям, так и к страницам. Как получить эту панель в редакторе сообщений?

Share
  1. Вы не правильно делаете дочерние темы. Дочерняя тема — это отдельная тема, которую должны использовать все, но она зависит от другой темы для всех частей шаблона, которые она не предоставляет. Вам нужны шаблоны:

    http://codex.wordpress.org/Theme_Development#Defining_Custom_Templates

    По сути, просто создайте новый файл темы в корневом каталоге темы (например foobar.php ), напишите это вверху:

    /*
    Template Name: Foobar
    */
    

    Это даст вам новый шаблон под названием Foobar (очевидно, измените Foobar на что угодно. Это имя появится в раскрывающемся меню на странице редактора).

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

    function my_post_templater($template){
      if( !is_single() )
        return $template;
      global $wp_query;
      $c_template = get_post_meta( $wp_query->post->ID, '_wp_page_template', true );
      return empty( $c_template ) ? $template : $c_template;
    }
    
    add_filter( 'template_include', 'my_post_templater' );
    
    function give_my_posts_templates(){
      add_post_type_support( 'post', 'page-attributes' );
    }
    
    add_action( 'init', 'give_my_posts_templates' );
    

    Если вы поместите этот код в functions.php файл своей темы, это должно сработать (если у вас действительно есть пользовательские шаблоны в папке вашей темы).

    Подробнее о дочерних темах читайте здесь:

    http://codex.wordpress.org/Child_Themes

    • 0
    • Спасибо, Джон, ты прав. Я изменил название, так как понял, что на самом деле ищу не «дочернюю тему», а скорее шаблон. Однако я хочу, чтобы шаблон использовал существующий макет для основной темы (index.php, single.php, page.php и т. д.) и извлекал информацию о стиле из styles/mytemplate/style.css. Как я могу это сделать?

      • 0
    • Как выбрать шаблон для пользовательского типа поста? Выбираемые шаблоны AFAIK с помощью атрибутов страницы работают только для страниц.

      • 0
  2. В wordpress 4.7+ вы можете поместить «Тип сообщения шаблона» в свой собственный файл шаблона, чтобы отобразить его в атрибуте страницы как для страницы, так и для сообщения.

    /*
      Template Name: Your Template Name
      Template Post Type: post, page
    */
    
    • 0

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

You must login to add an answer.