Поиск по категориям И пользовательским полям

Содержание
  1. Вопрос или проблема
  2. Ответ или решение
  3. Объяснение изменений:
  4. Оптимизация для SEO:
  5. , ), чтобы помочь поисковым системам лучше индексировать вашу страницу.
  6. Добавьте alt-тексты для изображений, чтобы улучшить доступность и SEO. Заключение: Этот код теперь будет фильтровать продукты по заданной категории и значению пользовательского поля. Не забывайте протестировать его в вашем окружении, чтобы убедиться, что всё работает корректно. Если будут дополнительные вопросы, не стесняйтесь обратиться за помощью.
  7. ), чтобы помочь поисковым системам лучше индексировать вашу страницу.
  8. Добавьте alt-тексты для изображений, чтобы улучшить доступность и SEO. Заключение: Этот код теперь будет фильтровать продукты по заданной категории и значению пользовательского поля. Не забывайте протестировать его в вашем окружении, чтобы убедиться, что всё работает корректно. Если будут дополнительные вопросы, не стесняйтесь обратиться за помощью.
  9. Заключение:

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

Мне нужно отобразить результаты, которые соответствуют двум критериям: значение в пользовательском поле и категория должны совпадать. Например, я хотел бы отобразить все результаты, категория которых «Одежда», и пользовательское поле meta_easyfatt_libero_1 содержит значение «МУЖЧИНЫ». Вот код, который я сейчас использую для пользовательских полей, но я не могу понять, как его изменить, чтобы он соответствовал моим требованиям.

    <?php
/* Шаблон: Шаблон Uomo */

get_header(); ?>

<div class="easyfatt-products-list">
  <h1><center>Продукты МУЖЧИНЫ</center></h1>
  <?php
  // Устанавливает количество продуктов на страницу и запрос
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  $args = array(
    'post_type' => 'product',
    'posts_per_page' => 15, // Показывает 12 продуктов на странице
    'paged' => $paged,
    'meta_query' => array(
      array(
        'key' => 'meta_easyfatt_libero_1',
        'value' => 'МУЖЧИНЫ',
        'compare' => 'LIKE',
      ),
    ),
    'tax_query' => array(
      array(
        'taxonomy' => 'product_cat',
        'field' => 'slug',
        'terms' => 'clothing', // Замените на слаг вашей категории "Одежда"
      ),
    ),
  );

  $query = new WP_Query($args);

  if ($query->have_posts()) { ?>
    <div class="products-grid">
      <?php while ($query->have_posts()) {
        $query->the_post(); ?>
        <div class="product">
 <?php if (has_post_thumbnail()) {
              the_post_thumbnail('medium'); // Показывает изображение продукта
            } else {
              echo '<img src="' . wc_placeholder_img_src() . '" alt="Изображение-заполнитель">';
            } ?>
          <h2><?php the_title(); ?></h2>
          <a href="<?php the_permalink(); ?>">Просмотреть</a>
        </div>
      <?php } ?>
    </div>

    <!-- Пагинация -->
    <div class="pagination">
      <?php
      echo paginate_links(array(
        'total' => $query->max_num_pages,
        'current' => $paged,
      ));
      ?>
    </div>
  <?php
  } else {
    echo '<p>Нет продуктов, найденных в этой категории.</p>';
  }

  wp_reset_postdata();
  ?>
</div>

<?php get_footer(); ?>

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

Для решения вашей задачи, необходимо модифицировать имеющийся код так, чтобы он учитывал и категорию, и значение пользовательского поля при выполнении запроса. Основная идея заключается в добавлении аргументов для получения продуктов из определенной категории, а также в расширении существующего массива meta_query.

Ниже приведён обновленный код, соответствующий вашим требованиям:

<?php
/* Template Name: Template Uomo */

get_header(); ?>

<div class="easyfatt-products-list">
  <h1><center>Prodotti UOMO</center></h1>
  <?php
  // Устанавливаем номер текущей страницы и параметры запроса
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  $args = array(
    'post_type' => 'product',
    'posts_per_page' => 15, // Показываем 15 продуктов на странице
    'paged' => $paged,
    'tax_query' => array(
      array(
        'taxonomy' => 'product_cat',
        'field'    => 'slug',
        'terms'    => 'clothing', // Замените 'clothing' на нужный вам слаг категории
      ),
    ),
    'meta_query' => array(
      array(
        'key' => 'meta_easyfatt_libero_1',
        'value' => 'MEN', // Обратите внимание на регистр и соответствие значению
        'compare' => 'LIKE',
      ),
    ),
  );

  $query = new WP_Query($args);

  if ($query->have_posts()) { ?>
    <div class="products-grid">
      <?php while ($query->have_posts()) {
        $query->the_post(); ?>
        <div class="product">
          <?php if (has_post_thumbnail()) {
            the_post_thumbnail('medium'); // Показываем изображение продукта
          } else {
            echo '<img src="' . wc_placeholder_img_src() . '" alt="Placeholder Image">';
          } ?>
          <h2><?php the_title(); ?></h2>
          <a href="<?php the_permalink(); ?>">Visualizza</a>
        </div>
      <?php } ?>
    </div>

    <!-- Пагинация -->
    <div class="pagination">
      <?php
      echo paginate_links(array(
        'total' => $query->max_num_pages,
        'current' => $paged,
      ));
      ?>
    </div>
  <?php
  } else {
    echo '<p>Ни один продукт не найден в этой категории.</p>';
  }

  wp_reset_postdata();
  ?>
</div>

<?php get_footer(); ?>

Объяснение изменений:

  1. tax_query:

    • Я добавил массив tax_query, чтобы фильтровать продукты по категории. Здесь вы можете заменить 'clothing' на слаг вашей категории, например, если у вас категория «Одежда», и её слаг «clothing», всё будет работать как задумано.
  2. meta_query:

    • Измените value в meta_query на 'MEN', чтобы он соответствовал вашему требованию. Убедитесь, что регистр соответствует тому, как значение хранится в базе данных.

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

  • Обеспечьте, что все URL-адреса (перенаправления) продуктов настроены правильно и обеспечивают хороший UX.
  • Используйте значимые теги заголовков (например,

    ,

    ), чтобы помочь поисковым системам лучше индексировать вашу страницу.

  • Добавьте alt-тексты для изображений, чтобы улучшить доступность и SEO.

Заключение:

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

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

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