Получить заголовок текущей таксономии категории товара в WooCommerce

21 нояб. 2013 г., 00:17:48
Просмотры: 46.7K
Голосов: 3

Я хочу показать заголовок текущей таксономии категории товара на странице отдельного товара.

Код ниже работает, но возвращает все категории товаров. Мне нужна помощь, чтобы выделить текущую категорию.

<?php 
    global $post;
    $args = array( 'taxonomy' => 'product_cat',);
    $terms = wp_get_post_terms($post->ID,'product_cat', $args);

    $count = count($terms); 
    if ($count > 0) {

    foreach ($terms as $term) {
        echo '<div style="direction:rtl;">';
        echo 'Категория: ' . $term->name;
        echo '</div>';
    }
}
?>

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

1
Комментарии

Пожалуйста, следите за вопросами, которые вы задали, это важная часть процесса на WPSE - ознакомьтесь с Что делать, когда кто-то ответил на мой вопрос? и Почему важны голосания? для более глубокого понимания. Спасибо!

Nicolai Grossherr Nicolai Grossherr
28 нояб. 2013 г. 00:05:44
Все ответы на вопрос 2
4

Вы можете использовать get_the_term_list

echo get_the_term_list( $post->ID, 'product_cat', '<div style="direction:rtl;">', '</div>', '' );

Система отображения 1 заголовка категории на странице отдельного товара перестаёт работать, если вы начинаете добавлять товар в несколько категорий.

Однажды я чуть не сошёл с ума на проекте, где клиент добавлял элементы портфолио в две категории, но почему-то хотел, чтобы я показывал "правильный" заголовок категории в зависимости от ситуации. Этот проект привёл меня к созданию плагина Radio Buttons for Taxonomies, который ограничивает пользователей выбором только одного термина в определённых таксономиях.

21 нояб. 2013 г. 02:50:11
Комментарии

Просто как информационное дополнение: использование get_the_term_list() делает то же самое, что и $product->get_categories().

Nicolai Grossherr Nicolai Grossherr
21 нояб. 2013 г. 03:06:48

@helgatheviking Спасибо, что нашли время помочь. Оба решения работают для одной категории.

Kapitol Kapitol
21 нояб. 2013 г. 03:42:03

@ialocin Действительно так! Каждый день узнаю что-то новое.

helgatheviking helgatheviking
21 нояб. 2013 г. 12:52:07

Мой жизненный девиз :)

Nicolai Grossherr Nicolai Grossherr
28 нояб. 2013 г. 00:05:13
6

В большинстве известных мне тем это стандартно, но ваша тема может отличаться. Приведённый ниже код взят из файла meta.php, который отвечает за отображение метаданных — категорий, тегов — в WooCommerce.

Код:

    <?php
            $size = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
            echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Категория:', 'Категории:', $size, 'woocommerce' ) . ' ', '.</span>' );
    ?>

Обновление:

Я давал развёрнутый ответ на эту проблему некоторое время назад:

21 нояб. 2013 г. 01:21:09
Комментарии

Спасибо, ialocin. Этот код возвращает все категории. Это не то, что мне нужно. Я хочу, чтобы отображалась только текущая категория, в которой я нахожусь.

Kapitol Kapitol
21 нояб. 2013 г. 01:49:49

Кажется, я вас неправильно понял, смотрите мою правку. @Kapitol

Nicolai Grossherr Nicolai Grossherr
21 нояб. 2013 г. 02:02:05

Ваше решение действительно показывает одну категорию, но это все еще не текущая категория. Вы упомянули проблему наличия нескольких родительских категорий, сказав "не будет работать, если у товара несколько главных/родительских категорий, или по крайней мере не покажет их все;"

Kapitol Kapitol
21 нояб. 2013 г. 02:10:24

Вы находитесь на странице одного товара, если у товара несколько категорий верхнего уровня, как может быть одна текущая категория? @Kapitol

Nicolai Grossherr Nicolai Grossherr
21 нояб. 2013 г. 02:13:51

Хороший вопрос. Возможно, это невозможно. Может быть, это решение вроде хлебных крошек. Ниже то, чего я хотел достичь.

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

Kapitol Kapitol
21 нояб. 2013 г. 02:19:15

Я знаю, что это невозможно без дополнительной логики. Кстати, у хлебных крошек та же проблема — как им определить правильный путь. Обычно выбирается один вариант в зависимости от того, как функция сортирует термины. Твою проблему, с другой стороны, можно решить, передавая значение на страницу товара из категории, с которой ты пришел, но это будет совершенно другой вопрос, не тот, который ты задал. Тебе стоит изучить этот вариант и задать новый вопрос. Этот, на мой взгляд, решен или не имеет ответа. @Kapitol

Nicolai Grossherr Nicolai Grossherr
21 нояб. 2013 г. 02:31:15
Показать остальные 1 комментариев