Вопрос или проблема
Я хочу показать шаблоны моей темы для продвижения. Поэтому мне нужно показать разные шаблоны для только одного пользовательского типа записи. Например, в заголовке меню, если нажать кнопку шаблона 1, отобразится архив с шаблоном 1, если нажать кнопку шаблона 2, отобразится архив того же типа записи с шаблоном 2.
Я создал архивные шаблоны пользовательского типа записи, но не могу сделать их выбираемыми для посетителей.
Они будут отображаться одновременно. Как я могу это сделать?
Я написал ?templete=2 в адресной строке, но это не считалось в wp, поэтому я не могу построить условие if-else на этом.
Существует 2 основных метода создания пользовательских шаблонов. Они следующие:
- Шаблон для выбора страницы
- Индивидуальная страница шаблона в зависимости от типа страницы (единственное, архив и так далее) согласно иерархии файлов WP
Пожалуйста, не стесняйтесь изучать и посмотреть, какой метод лучше всего подходит для данного случая.
Метод выбора шаблона для страницы
Этот метод предназначен для создания страниц вручную и добавления их в меню для выбора в редактировании страницы.
Шаги для добавления:
- создайте страницу шаблона и сохраните под именем файла
template-{$name}.php
- добавьте страницу и выберите этот шаблон из списка шаблонов на правой боковой панели в меню редактирования страницы
- внешний вид > меню, добавьте вновь созданные страницы в верхнее меню (если есть) например. Шаблон1, Шаблон2, когда пользователь нажимает на ссылку Шаблон1, будет загружен template-template1.php, если шаг 2 выполнен правильно. Аналогично для ссылки Шаблон2.
<?php
/**
* Пример шаблона для Архивного Стиля1, следующий "Архивный Стиль1" будет отображен из меню выбора
*
* Имя Шаблона: Архивный Стиль1
*
* @package myPackage
*/
get_header(); ?>
<!-- контент здесь -->
<!-- пользовательский цикл -->
<?php
get_footer();
Плюсы
- можно выбрать шаблон страницы из меню редактирования страницы при добавлении новой страницы
- можно применять к многим разным страницам с одним и тем же шаблоном
- каждый шаблон может иметь различную логику цикла
Индивидуальная страница шаблона
Для архивной страницы, назначенной для одного пользовательского типа записи, создайте файл с именем archive-post_type_name.php в папке активной темы. Система именования такова: archive-{$posttype}.php
.
Поскольку один тип записи может иметь только один конкретный файл шаблона. Что касается переключения шаблонов для разных записей, требуется пользовательская логика, такая как сравнение слага записи и так далее, а затем загрузка другого файла шаблона. Следующее иллюстрирует эту концепцию
<?php
get_header(); ?>
<!-- контент здесь -->
<!-- пользовательский цикл -->
// может использоваться такой код: $post->post_name для проверки и переключения
// если условие 1
// имя файла: content-archive-style1.php
// get_template_part( 'content', 'archive-style1' );
// если условие 2
// имя файла: content-archive-style2.php
// get_template_part( 'content', 'archive-style2' );
<?php
get_footer();
Плюсы
- автоматически загружается, если существует тип записи
- унифицированный контроль в одном файле
- полный контроль и гибкость логики
- применяется только к конкретному типу записи
.
Ответ или решение
Для реализации функционала с несколькими шаблонами архивов, специфическими для одного пользовательского типа записи в WordPress, необходимо учитывать особенности структуры шаблонов и взаимодействия с ними. Мы рассмотрим два основных метода: создание страницы с выбором шаблона и использование индивидуальных шаблонов.
Метод 1: Шаблон для выбора страницы
Этот метод подразумевает создание отдельных страниц с выбором шаблона, что предоставляет пользователю возможность самостоятельно выбирать отображение контента.
Шаги для реализации:
-
Создание шаблона страницы
Создайте файл шаблона, назвав егоtemplate-archive-style1.php
(или аналогично для каждого шаблона). В начале файла добавьте следующий код:<?php /** * Шаблон для Архива Стиля 1 * * @package myPackage */ get_header(); ?> <!-- Здесь содержимое и пользовательский цикл --> <?php get_footer(); ?>
-
Создание страниц
В админ панели WordPress создайте новые страницы и выберите созданный вами шаблон для каждой страницы:- Страница 1: "Архив Стиль 1"
- Страница 2: "Архив Стиль 2"
-
Добавление в меню
Перейдите в раздел "Внешний вид" -> "Меню" и добавьте ранее созданные страницы в меню вашего сайта, чтобы пользователь мог легко перейти к ним.
Метод 2: Индивидуальные шаблонные страницы
Если вы хотите, чтобы все страницы одного типажа (архивы) отображались на одном URL, вам потребуется логика выбора шаблона на основе переданных параметров.
Шаги для реализации:
-
Создание основного шаблона
Создайте файл с именемarchive-post_type_name.php
, заменивpost_type_name
на название вашего пользовательского типа записи. Внутри этого файла реализуйте логику выбора:<?php get_header(); $template = get_query_var('template'); // Передача параметра через URL if ($template === 'style1') { get_template_part('content', 'archive-style1'); // Загрузка соответствующего шаблона } elseif ($template === 'style2') { get_template_part('content', 'archive-style2'); } else { get_template_part('content', 'archive-default'); // Шаблон по умолчанию } get_footer(); ?>
-
Изменение структуры URL
Для передачи параметра в URL, при использовании ссылок в меню убедитесь, что они направляют на архив с требуемым параметром. Например:
/your-custom-post-type/?template=style1
/your-custom-post-type/?template=style2
Обратная связь и тестирование
После реализации одного из методов, убедитесь, что вы проверили каждую ссылку, и все шаблоны отображаются правильно. Протестируйте взаимодействие с сайтом и проанализируйте, насколько легко пользователям переключаться между различными стилями отображения.
Заключение
Эти методы позволяют вам создать масштабируемое решение для отображения нескольких шаблонов архивов для одного пользовательского типа записей. Выбор между ними зависит от ваших предпочтений и от того, насколько сложно будет пользователям переключаться между различными вариантами отображения. Используя данные подходы, вы сможете эффективно управлять пользовательским опытом на вашем сайте.