Вопрос или проблема
У меня есть определенный пост, и каждый пост, на который я кликаю, открывается на отдельной странице, где показаны более подробные сведения. Но у меня разные шаблоны для деталей поста, которые будут показаны на отдельной странице.
<?php query_posts('post_type=posts&category_name=design'); while(have_posts()): the_post(); ?>
<a href="https://wordpress.stackexchange.com/questions/202399/<?php the_permalink(); ?>">Подробности</a>
<?php endwhile; wp_reset_query(); ?>
Теперь в single.php я хочу сделать условие, где the_permalink мог бы передать слаг, может быть? Тогда я мог бы включить шаблон для деталей дизайна.
Single.php
<?php get_header();
$categorySlugName = single_cat_title(true);
if($categorySlugName == 'design'){
include 'design-details.php';
}
?>
Это было довольно просто. После того как я прошел через кодекс WordPress,
мне просто нужно было изменить вторую строку в single.php
$categorySlugName = single_cat_title(true);
НА
$categorySlugName = get_category_by_slug($slug);
Ответ или решение
Перманентная ссылка на отдельную страницу поста в WordPress
В большинстве случаев, когда вы работаете с WordPress, создание индивидуальных страниц для постов становится необходимостью, особенно если для каждого поста требуется особый шаблон. Вы на верном пути, пытаясь создать различные шаблоны для отображения деталей постов в зависимости от их категории. Представленный вами код демонстрирует начальные шаги к достижению этой цели.
Определение условия для использования разных шаблонов
Ваша основная задача заключается в том, чтобы на странице single.php
правильно определить, какой шаблон подключить в зависимости от категории поста. Вы уже начали двигаться в правильном направлении с использованием функции single_cat_title()
, однако для достижения лучшей точности, стоит рассмотреть использование функции get_category_by_slug()
, которая позволяет получить объект категории по её слагу.
Исправление кода
Ваш первоначальный код для получения имени категории был следующим:
$categorySlugName = single_cat_title(true);
Однако, замена на следующую строку даст возможность эффективно получать объект категории и, следовательно, манипулировать им более гибко:
$categorySlugName = get_category_by_slug($slug);
После получения объекта категории вы можете легко проверять её слаг и подключать соответствующий шаблон. Например:
<?php get_header();
$slug = get_post_field('post_name', get_post()); // Получаем слаг текущего поста
$category = get_the_category(); // Получаем массив категорий текущего поста
if ($category) {
foreach ($category as $cat) {
if ($cat->slug == $slug) {
include 'design-details.php'; // Подключаем специфичный шаблон
break; // Прерываем цикл, так как шаблон найден
}
}
}
?>
<!-- Основной контент поста -->
<div>
<?php the_content(); ?>
</div>
<?php get_footer(); ?>
Оптимизация SEO
Для обеспечения высокой видимости вашего контента в поисковых системах необходимо учесть еще несколько факторов. Убедитесь, что:
- Читаемость URL-адресов: Используйте понятные и информативные слаги, которые включают ключевые слова.
- Мета-теги: Обязательно добавьте соответствующие мета-теги (заголовки и описания) для каждой страницы, чтобы они были уникальными и содержательными, отражая суть поста.
- Структура заголовков: Используйте заголовки (H1, H2, H3 и т.д.) для улучшения структурирования текста и облегчения навигации как для пользователей, так и для поисковых роботов.
Заключение
Создание уникальных шаблонов для различных категорий постов позволяет значительно улучшить опыт пользователей и лояльность к вашему контенту. Регулярная оптимизация под поисковые системы способствует успешному продвижению вашего сайта. Переходите к реализации предложенных рекомендаций и не забывайте о важности тестирования каждого измененного элемента перед запуском на живом сайте.