Невозможно получить название термина таксономии для отображения на сайте Wordpress с помощью функций. php (с использованием ACF) - PullRequest
0 голосов
/ 26 мая 2020

У меня проблемы с отображением термина таксономии в качестве заголовка для моих фрагментов сообщений о продуктах. Это на сайте Wordpress, с использованием темы Avada, с Woocommerce и плагином Advanced Custom Fields. Таксономия создается подключаемым модулем Custom Taxonomies, и на остальной части сайта все отлично работает. "эхо" сообщения. Я получал идентификационный номер терминов таксономии перед тем, как читать дальше в topi c, и поменял местами «идентификатор объекта» на «имя-термина» во внешнем интерфейсе ACF, но теперь я не могу получить идентификатор или title!

Пожалуйста, помогите, PHP не моя сильная сторона, так что я уверен, что это новинка ie недосмотр!

add_action( 'woocommerce_shop_loop_item_title', 'artist_link' );
function artist_link() {
    $value = get_field("product_artist");
    if($value)
    {
    echo "can't return value here, but I'd like the artist product term! ";
    }
    else
    {
    echo 'No Artist Entry';
    }
}

Этот фрагмент кода взят из моих функций . php, поскольку тема Avada требует, чтобы вы использовали l oop вместо файла «single-XXX. php».

Я также должен упомянуть, что это единственный выбор из множественного выбора, а «product_artist» взят из ACF, идентификатор термина пользовательской таксономии - «художники».

Спасибо!

* РЕДАКТИРОВАТЬ: для тех, у кого может возникнуть эта проблема в будущем, это то, что сработало для меня

add_action('woocommerce_shop_loop_item_title', 'artist_link');
function artist_link()
{
    // Get the WooCommerce global variable for the current product
    global $product;
    if ($product instanceof \WC_Product) {
        $value = get_field("product_artist", $product->get_id());
        if ($value) {
            echo $value->name;
        } else {
            echo 'Value falsey, do something with it here';
        }

        return;
    }

    echo 'No global product here';

}

Похоже, я пытался вызвать строку, а не объект (это то, что $ value есть).

1 Ответ

0 голосов
/ 26 мая 2020

Глядя на код , вызывающий это действие, можно увидеть глобальную переменную, которая вводится в область видимости и должна быть установлена ​​до вызова действия, которое вы должны иметь возможность использовать. Если я правильно читаю, эта переменная должна быть экземпляром WC_Product, который через свой родительский класс имеет метод get_id(), и я думаю, что вам нужно передать ACF get_field() функция как второй параметр:

add_action('woocommerce_shop_loop_item_title', 'artist_link');
function artist_link()
{
    // Get the WooCommerce global variable for the current product
    global $product;
    if ($product instanceof \WC_Product) {
        $value = get_field("product_artist", $product->get_id());
        if ($value) {
            echo $value;
        } else {
            echo 'Value falsey, do something with it here';
        }

        return;
    }

    echo 'No global product here';

}
...