Шаблон страницы WordPress для динамического отображения записей по категориям

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

Новый в PHP.

У меня есть собственный шаблон страницы, который я хочу использовать для отображения списка записей. Идея в том, чтобы каждая запись имела категорию, и я мог предоставлять категорию для страницы. Например, предположим, что есть 5 записей с категорией “новости” и страница под названием последние новости, где я передаю категорию “новости” в качестве аргументов запроса. Но затем я также могу использовать тот же шаблон страницы для другой страницы, скажем, с категорией “блог”, чтобы получить другую категорию. Поэтому я полагаю, что шаблон страницы должен динамически считывать категорию, назначенную странице.

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

Страница не является страницей категории, просто обычная страница.

                          'posts_per_page' => 6,'orderby' => 'date')); 
  if(have_posts()) : while(have_posts()) : the_post(); ?>
   <div class="custom_page">
    <div class="latest_news_cont">

     <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a>

     <!--  <a href="<?php the_permalink() ?>"><h2><?php the_title(); ?></h2></a> -->
     <div id ="helloworld" class="portfolio-work"><a href="<?php the_permalink() ?>" 
        '" style="text-decoration:none;">'<h2><?php the_title(); ?></h2></a></div>
     
     <?php the_excerpt(); ?>
     <p style="text-align:left;"><a href="<?php the_permalink() ?>" 
                                    class="readmore_news">ЧИТАТЬ ДАЛЕЕ </a></p>
     <br>
     <div class="clear"></div>
    </div>
   </div>
  <?php endwhile; ?>
  <?php else : ?>

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

Это очень похоже на то, что вы пытаетесь сделать что-то, что уже делает WordPress? Существует шаблон под названием ‘category.php’, который вы можете использовать. Он отображает любую категорию записей, поэтому принимает категорию динамически. Предполагая, что вы хотите, чтобы все страницы категорий отображались одинаково, это будет означать создание одного файла для любой категории, которую вы имеете сейчас или создадите в будущем.

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

Иерархия шаблонов

И также вот шаблон категории по умолчанию.

Шаблон категории

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

Это помогает вам в нужном направлении?

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

Для создания динамического шаблона страницы в WordPress, который будет отображать записи в зависимости от категории, необходимо внести определенные изменения в ваш текущий код. Учитывая, что вы хотите использовать одну и ту же страницу для разных категорий, мы можем использовать параметры запроса (query-args) для определения категории на основе переданных аргументов.

Шаги для создания динамического шаблона

  1. Создание пользовательского шаблона страницы:
    Убедитесь, что ваш шаблон имеет правильные заголовки, чтобы WordPress его распознавал. Например:

    <?php
    /*
    Template Name: Динамический шаблон для категорий
    */
    get_header();
  2. Получение категории из URL:
    Используйте функцию get_query_var() для получения значения параметра категории из URL. Например, если ваш URL заканчивается на ?category=news, вы сможете получить его следующим образом:

    $category = get_query_var('category');
  3. Создание WP_Query для извлечения постов по категории:
    Теперь, когда у вас есть категория, создайте объект WP_Query, чтобы получить записи:

    $args = array(
       'category_name' => $category,
       'posts_per_page' => 6,
       'orderby' => 'date',
    );
    
    $query = new WP_Query($args);
  4. Цикл для отображения постов:
    Используя цикл WordPress, вы сможете вывести полученные записи на страницу:

    if ($query->have_posts()) :
       while ($query->have_posts()) : $query->the_post(); ?>
           <div class="custom_page">
               <div class="latest_news_cont">
                   <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a>
                   <div class="portfolio-work">
                       <a href="<?php the_permalink(); ?>" style="text-decoration:none;">
                           <h2><?php the_title(); ?></h2>
                       </a>
                   </div>
                   <?php the_excerpt(); ?>
                   <p style="text-align:left;">
                       <a href="<?php the_permalink(); ?>" class="readmore_news">ПОДРОБНЕЕ</a>
                   </p>
                   <br>
                   <div class="clear"></div>
               </div>
           </div>
       <?php endwhile; 
    else :
       echo '<p>Записи не найдены.</p>';
    endif;
    
    /* Восстанавливаем глобальные данные поста */
    wp_reset_postdata();
  5. Добавление параметра к URL:
    Чтобы вывести записи для нужной категории, добавьте к URL параметр ?category=news или любую другую категорию, которую вы хотите отобразить.

Оптимизация для SEO

Чтобы оптимизировать страницу под SEO:

  • Убедитесь, что заголовок страницы содержит ключевые слова, относящиеся к категории.
  • Добавьте мета-теги для заголовка и описания, используя функцию wp_head().
  • Используйте понятные URL (человекопонятные адреса).

Заключительные рекомендации

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

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

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