Как создать один шаблон для пользовательского типа записи с пользовательским URL?

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

У меня есть живой сайт, который использует пользовательский тип записи “virtual-programs”, и у меня есть работающий шаблон под названием single-virtual-program.twig и single-virtual-program.php.

Я разрабатываю новые шаблоны (single-virtual-program-new.twig и single-virtual-program-new.php).

В конечном итоге они заменят (single-virtual-program.twig и single-virtual-program.php).

Во время разработки я хочу, чтобы оба шаблона были активны, а затем, когда я буду доволен результатом, я активирую новые шаблоны и удалю старые.

Для этого мне нужно будет создать пользовательские URL-адреса для моих НОВЫХ шаблонов, чтобы я мог просматривать их, пока старые шаблоны еще вживую. Как мне это сделать?

К вашему сведению, я использую Timber (.twig).

Вот код из single-virtual-program.php

$post = Timber::query_post();
$context['post'] = $post;
$context['archive_link'] = get_site_url(null, str_replace('_', '-', $post->post_type));

$context['virtual_programs'] = Timber::get_posts(
  array(
    'post_type'       => array('virtual_programs'),
    'post__not_in'    => array($post->ID),
    'posts_per_page'  => 5,
    'meta_query'      => array(
        array(
            'key'     => 'event_type',
            'value'   => array('online', 'Online Short Course'),
            'compare' => 'NOT IN'
        )
      )
  )
);

$context["register_event_url"] = get_field("prices", $post->ID)[0]["register_link"];


Timber::render( 'single-virtual-programs-new.twig' , $context );

Спасибо.

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

Смотрите эту страницу на WP

Например. Если вы создадите страницу virtual-program с названием ‘wpse372687’, файл ‘single-virtual-program-wpse372687.php’ будет более специфичным для этой страницы. Когда вы посещаете эту страницу, используется новый шаблон, но любая другая страница virtual-program использует следующий лучший соответствующий старый/текущий шаблон.

У этого метода есть свои ограничения, но это простой способ тестирования бок о бок, если вы не хотите идти по пути создания стендового сервера (что также является хорошим предложением от Салли).

Хорошо, так что ответ прост, и я полностью забыл об этом.

Просто создайте новый шаблон (single-virtual-program-new), а затем в отдельной пользовательской записи выберите новый шаблон из выпадающего списка.

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

Создание единого шаблона для пользовательского типа записей с использованием пользовательских URL-адресов — важная задача для веб-разработчиков, которые хотят одновременно тестировать несколько версий шаблонов на действующем сайте. В данном ответе мы детально разберем, как вы можете создать и протестировать ваш новый шаблон для пользовательского типа записей "virtual-programs", используя Timber и WordPress.

Шаг 1: Подготовка нового шаблона

Ваша текущая структура – это single-virtual-program.twig и single-virtual-program.php. Для создания нового шаблона, как вы уже сделали, создайте файлы single-virtual-program-new.twig и single-virtual-program-new.php. Убедитесь, что новый шаблон содержит необходимую бизнес-логикой и разметкой, которую вы хотите протестировать.

Шаг 2: Настройка пользовательского URL

Для того чтобы новый шаблон можно было просматривать по уникальному URL-адресу, вы можете воспользоваться следующим подходом:

  1. Создание специальной страницы и связанной с ней записи:
    Создайте новую запись ресурса "virtual-programs" с уникальным слагом, например test-program. Это позволит вам использовать более специфичный подход к шаблонизации.

  2. Настройка шаблона для определенной страницы:
    В вашем случае, когда вы создаете запись с слагом, вы можете использовать загрузку файла шаблона single-virtual-program-test-program.php. Это более специфичная версия вашего шаблона, которая будет загружаться именно для этой записи.

Шаг 3: Регистрация нового шаблона

Если вы хотите, чтобы ваш новый шаблон загружался автоматически для всех записей, вы можете использовать следующие параметры в файле functions.php вашей темы для создания пользовательского шаблона:

function my_custom_post_template($template) {
    if (is_singular('virtual-programs') && get_query_var('name') == 'test-program') {
        $new_template = locate_template('single-virtual-program-new.php');
        if ($new_template) {
            return $new_template;
        }
    }
    return $template;
}
add_filter('template_include', 'my_custom_post_template');

Этот код проверяет, является ли текущая запись типа virtual-programs и имеет ли она слаг test-program. Если это так, то он использует ваш новый шаблон.

Шаг 4: Проверка нового шаблона

Перейдите в раздел записей вашей админ-панели WordPress, опубликуйте новую запись с слагом test-program и проверьте, работает ли ваш новый шаблон. Убедитесь, что все элементы отображаются корректно и функционал шаблона работает как задумано.

Шаг 5: Переход на новый шаблон

После завершения тестирования и устранения всех проблем, вы можете заменить старые шаблоны заведомо новыми:

  1. Переименуйте single-virtual-program-new.php в single-virtual-program.php и single-virtual-program-new.twig в single-virtual-program.twig.
  2. Удалите старые шаблоны, чтобы не запутаться в дальнейшем.

Заключение

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

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

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