@VPank
Бессмертие ради знаний. Знания ради бессмертия.

Как реализовать похожие товары woocommerce для постов блога с похожими тегами?

Есть необходимость выводить товары для отдельных постов. Причем по меткам. Ну к примеру есть пост "Дизайн ванной" у этого поста есть метка "Ванная" и есть товары с меткой "Ванная". Можно ли реализовать слияние этих меток, чтобы при заходе на этот пост в сайдбар выводить товары по этой метке? Или может еще какой хитрый способ?
  • Вопрос задан
  • 765 просмотров
Решения вопроса 1
@VPank Автор вопроса
Бессмертие ради знаний. Знания ради бессмертия.
Способ Павла по ряду понятных причин не работает. Способ xmoonlight слишком сложный. Решил проблему сам. Схема такая. С помощью jquery выбиваем атрибут href у тега поста, обрабатываем до получения ярлыка тега, с помощью проверки if else смотрим есть ли у нас данные в переменной php если нет, то мгновенно перезагружаем страницу отправив get с переменной jquery, проверяем еще раз, есть, выполняем поставленную задачу и добавляем данную переменную в хук woocommerce и выводим товары по данному тегу. Конец.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Palych_tw
@Palych_tw
Типа веб-разработчик
Вот этот код выведет до 5-ти продуктов, теги которых, совпадают с каким-либо тегом поста. Имена тегов должны быть полностью идентичными
<?php global $post;
            $post_tags = get_the_tags($post->ID);
            $tag_query = array();
            $i=0;
            foreach ($post_tags as $tag) {
                $tag_query[i] = $tag->name;
                $i++;
            }
            $args = array (
                'post_type' => 'product',
                'posts_per_page' => 5,
                'tax_query' => array(
                    array(
                        'taxonomy' => 'product_tag',
                        'field'    => 'name',
                        'terms'    => $tag_query,
                    )
                )
            );
            $products = new WP_Query($args);
            if ( $products->have_posts() ) :
            while ( $products->have_posts() ) : $products->the_post();
            //здесь выводим продукты в нужной разметке
            endwhile;
            endif; wp_reset_postdata();
            ?>
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Для простого сравнения - подойдет функция расстояния Левенштейна в PHP: levenstein(): реализация с мультибайтовой кодировкой.

Для полного "покрытия" всех потребностей нечеткого сравнения на сайте, можно использовать класс Fuzzy Search нечеткого сравнения.
Fuzzy Search - это PHP-class нечеткого сравнения двух строк с человеческой логикой.
Он позволяет сравнивать строки и возвращать процент их похожести.
Может применяться в любых задачах обработки подобных данных: поиск, сравнение, сортировка, сегментация и т.д.
Проверена работа с русским и английским языком одновременно.
При написании "айфон", находит "iPhone" - если он есть в списке, работает не используя словарь! Т.е., используется фонемный поиск (так, как анализирует человек).
С использованием Fuzzy Search возможно автоматически распознать неверно написанный поисковый запрос и предложить возможные варианты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы