Плагин YITH Wishlist отображает один и тот же идентификатор продукта для каждого товара.

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

Привет, коллеги по Stack Exchange! У меня, похоже, возникла проблема с использованием плагина YITH Wishlist для добавления функции списка желаемого к моим продуктам в создаваемой мною пользовательской теме. Когда я навожу курсор на иконку сердца на каждом продукте (т.е. иконку списка желаемого), я вижу один и тот же идентификатор продукта (66) для каждого продукта в URL внизу браузера. Вот код, который я использовал для создания этой таблицы:

<table class="specs-table">
  <tr class="t-row spec-headings">
    <th class="t-header spacer"></th>
    <!-- ...Другие заголовки... -->
    <th class="t-header"></th>
  </tr>
  <?php                         

    $connection = mysqli_connect("localhost", "root", "root", "local");

    $sql = "
            SELECT * FROM wp_posts
            WHERE post_status="publish"
            AND post_type="product"
        ";

    $result = mysqli_query($connection, $sql);

    if(mysqli_num_rows($result) > 0) {
       while ($row = mysqli_fetch_assoc($result)) {
       // Извлечение пользовательского поля ACF непосредственно из базы данных
         $post_id = $row['ID'];
        //Объект продукта WooCommerce
         $product = wc_get_product( $post_id );

        // Спецификации продукта
        $partNumber = get_post_meta( $post_id, 'acf_part_number', true);
        /* ...Больше спецификаций... */

    ?>
    <tr class="t-row specs">
      <td class="t-value p_thumb"><img class="listing-image" 
      <!-- ...Больше столбцов таблицы... -->                                         
      <td class="t-value pa">
      <!-- Добавить в корзину -->
      <?php 
        echo apply_filters( 'woocommerce_loop_add_to_cart_link',
        sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" class="button %s product_type_%s">%s</a>',
        esc_url( $product->add_to_cart_url() ),
        esc_attr( $product->get_id() ),
        esc_attr( $product->get_sku() ),
        $product->is_purchasable() ? 'add_to_cart_button' : '',
        esc_attr( $product->get_type() ),
        esc_html( $product->add_to_cart_text() )
        ),
        $product );
     ?>
     <!-- Добавить в список желаемого -->
     <div class="wishlist-shortcode">                                                   
        <?php echo do_shortcode("[yith_wcwl_add_to_wishlist wishlist_url="http://wj-parts.local/my-wishlist/"]"); 
        ?> 
     </div>
   </td>
 </tr>

  <?php
  }
} else {
  ?>
<tr>
 <td colspan="3">Данные недоступны</td>
</tr>
  <?php
   }
?>

</table>

Больше кода доступно здесь.

Я попробовал несколько способов, чтобы исправить эту проблему. Один из них заключался в изучении инженерии плагина, другой – в поисках в Google. Я также попытался использовать эту PHP функцию (которая, конечно, только выводила текст):

<?php 
  $wishlist = file_get_contents(
        "content-single-product.php",
        true,
        null,
        1910,
        112
  );
  echo $wishlist;
?>

Я понимаю, что не использование этого шорткода плагина в цикле продуктов, вероятно, не является стандартным способом его использования. Однако ситуация не оставила мне другого выбора (если, конечно, я не разработаю функцию списка желаемого сам). Любые советы будут очень ценными.

Вот некоторая основная информация о среде:

  • Конструктор сайтов: WordPress 6.7.1 + WooCommerce
  • Сервер: Nginx (с использованием Local)
  • Язык программирования: PHP 8.1.23
  • Используемый плагин: YITH Wishlist
  • Операционная система: ZorinOS Lite 16.3

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

Проблема дублирования ID продукта в плагине YITH Wishlist

Здравствуйте, уважаемые коллеги!

Вы столкнулись с ситуацией, когда при использовании плагина YITH Wishlist для добавления функции списка желаемого в вашей кастомной теме отображается один и тот же ID продукта (66) для всех товаров. Вместо корректного отображения уникальных идентификаторов для каждого товара, плагин функционирует некорректно. Давайте разберемся, возможные причины данной проблемы и способы её устранения.

Основные моменты

  1. Код таблицы товаров: В вашем коде вы используете цикл для отображения товаров. Однако критически важно правильно инициализировать элементы вашего HTML-кода, которые будут работать с плагином YITH Wishlist.

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

    echo do_shortcode("[yith_wcwl_add_to_wishlist wishlist_url='http://wj-parts.local/my-wishlist/']");

    возвращает интерфейс для добавления в список желаемого, но без указания корректного ID продукта.

Решение проблемы

Чтобы каждый товар отображал свой уникальный ID в списке желаемого, вам необходимо изменить подход к вызову шорткода YITH Wishlist. Необходимо передать ID текущего продукта как параметр шорткода. Ваш исправленный код может выглядеть следующим образом:

<div class="wishlist-shortcode">
    <?php echo do_shortcode("[yith_wcwl_add_to_wishlist id='$post_id' wishlist_url='http://wj-parts.local/my-wishlist/']"); ?>
</div>

Обратите внимание на то, что мы добавили id='$post_id' в шорткод. Это позволит каждому товару использовать свой уникальный ID, что должно решить проблему.

Проверка совместимости

Проверьте совместимость вашей темы с текущей версией плагина YITH Wishlist. Иногда обновление плагина или ошибки совместимости могут вызывать подобные проблемы.

Логирование ошибок

Рекомендуется включить режим отладки в WordPress, добавив следующие строки в файл wp-config.php:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

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

Заключение

Использование плагина YITH Wishlist требует корректной интеграции с вашими товарами. Убедитесь, что при вызове шорткодов передаются правильные параметры (в данном случае ID товара). Обновите ваш код в соответствии с рекомендациями, приведёнными выше, и ошибка с одинаковым отображением ID продуктов будет устранена. Если проблема не решится, рекомендуется обратиться к документации плагина или технической поддержке разработчиков.

Надеюсь, эта информация окажется вам полезной! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их. Удачи с вашим проектом!

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

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