WordPress Пользовательский Тип Записи – Атрибут Записи: Шаблон. Шаблон отображается и сохраняется на заднем плане, но по умолчанию рендерится файл темы.

Вопрос или проблема

Редактировать: Теперь я узнал, что это Hybrid Core, и, похоже, иерархия шаблонов другая. Тем не менее, я все еще не решил свою проблему ниже.

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

Это функция для добавления моего пользовательского типа поста. Это работает отлично.

add_action( 'init', 'register_cpt_location' );

function register_cpt_location() {

$labels = array(
    'name' => _x( 'Места', 'info_location' ),
    'singular_name' => _x( 'Место', 'info_location' )
);

$args = array(
    'labels' => $labels,
    'description' => 'Пользовательский тип поста для местоположения',
    'hierarchical' => true,
    'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'revisions', 'page-attributes' ),
    'public' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'menu_position' => 6,
    'show_in_nav_menus' => true,
    'publicly_queryable' => true,
    'exclude_from_search' => true,
    'has_archive' => true,
    'query_var' => true,
    'can_export' => true,
    'rewrite' => array( 
        'slug' => 'location', 
        'with_front' => false,
        'feeds' => true,
        'pages' => true
    ),
    'menu_icon' => 'dashicons-location',
    'capability_type' => 'post'
);

register_post_type( 'info_location', $args );   
}

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

Стандартный шаблон – “info_location.php”.

Это моя информация для шаблона “info_location-fm.php”.

/*
* Название шаблона: Location-fm
* Тип поста шаблона: info_location
*/

показ показателя для шаблонов (ниже)

показ показателя для шаблонов

новый шаблон выбран и сохранен, все еще не работает (ниже)

новый шаблон выбран и сохранен, все еще не работает

в вашем коде:

$labels = array(
    'name' => _x( 'Места', 'info_locaiton' ),
    'singular_name' => _x( 'Место', 'info_location' )
);

используйте это:

$labels = array(
    'name' => _x( 'Места', 'info_location' ),
    'singular_name' => _x( 'Место', 'info_location' )
);

В переменной $labels значение массива name имеет другой слуг. Я думаю, это может быть проблемой. Поэтому вы можете исправить это и проверить. Или вы можете использовать плагин для пользовательских типов постов, чтобы легко создать пользовательский тип поста.

Надеюсь, это поможет!

Ответ или решение

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

Проблема

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

Возможные причины и решения

  1. Ошибка в метаинформации шаблона:
    Убедитесь, что ваш файл шаблона info_location-fm.php содержит корректные комментарии в заголовке, как вы указали:

    /*
    * Template Name: Location-fm
    * Template Post Type: info_location
    */

    Если здесь есть опечатки или неверные значения, это может вызвать проблемы с выбором шаблона. В вашем случае, стоит проверить, правильно ли указано Template Post Type.

  2. Иерархия шаблонов:
    WordPress использует иерархию шаблонов для определения, какой файл загружать. Убедитесь, что ваш пользовательский тип записи info_location действительно позволяет применение пользовательских тем. Проверьте документацию Hybrid Core на наличие каких-либо специфичных для этой темы параметров, которые могут переопределить стандартное поведение.

  3. Недостаточная поддержка шаблонов:
    Возможно, Hybrid Core не поддерживает функционал конкретно для пользовательских типов записей. Убедитесь, что метод get_post_template() правильно работает с вами селектируемым шаблоном. Если он не поддерживает изменения, вам может понадобиться написать кастомную функцию, которая будет проверять и применять ваш шаблон.

    Например:

    add_filter('template_include', 'load_custom_template');
    function load_custom_template($template) {
        if (is_singular('info_location')) {
            $custom_template = get_post_meta(get_the_ID(), '_wp_page_template', true);
            if ($custom_template && locate_template($custom_template)) {
                return locate_template($custom_template);
            }
        }
        return $template;
    }
  4. Проблемы с метаданными:
    Убедитесь, что метаданные для записи корректно сохраняются. Иногда очистка кэша или использование плагина для управления кэшированием может помешать отображению актуальной информации. Проверьте это, чтобы исключить кэш как источник проблемы.

  5. Корректность привязки меток:
    В вашем коде есть небольшая, но важная ошибка в метках, которую вы уже упомянули:

    $labels = array(
        'name' => _x('Locations', 'info_location'), // правильное имя метки
        'singular_name' => _x('Location', 'info_location')
    );

    Будьте внимательны к синтаксису и проверяйте, чтобы все значения использовали одно и то же название для корректного отображения.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...