Вопрос или проблема
У меня есть живой сайт, который использует пользовательский тип записи “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 );
Спасибо.
Иерархия шаблонов позволяет вам быть конкретным вплоть до названия записи. Это, в свою очередь, позволяет использовать метод (которым я воспользовался) для тестирования новой версии шаблона на одной конкретной странице.
Например. Если вы создадите страницу 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-адресу, вы можете воспользоваться следующим подходом:
-
Создание специальной страницы и связанной с ней записи:
Создайте новую запись ресурса "virtual-programs" с уникальным слагом, напримерtest-program
. Это позволит вам использовать более специфичный подход к шаблонизации. -
Настройка шаблона для определенной страницы:
В вашем случае, когда вы создаете запись с слагом, вы можете использовать загрузку файла шаблона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: Переход на новый шаблон
После завершения тестирования и устранения всех проблем, вы можете заменить старые шаблоны заведомо новыми:
- Переименуйте
single-virtual-program-new.php
вsingle-virtual-program.php
иsingle-virtual-program-new.twig
вsingle-virtual-program.twig
. - Удалите старые шаблоны, чтобы не запутаться в дальнейшем.
Заключение
Использование различных версий шаблонов в WordPress предоставляет гибкость и контроль над разрешением пользовательских сценариев. Вы можете использовать предоставленный метод для тестирования новых шаблонов параллельно с уже действующими. Это не только позволяет оптимизировать качество вашего контента, но и улучшает пользовательский опыт на вашем веб-сайте.