#php #wordpress #woocommerce #product #hook-woocommerce
#php #wordpress #woocommerce woocommerce #продукт #крюк-woocommerce
Вопрос:
Я пытаюсь получить идентификатор продукта для просматриваемого продукта, чтобы передать этот идентификатор в виджет TrustPilot для отображения отзывов об этом продукте.
Я попытался создать фрагмент кода с помощью этого кода:
global $product;
$id = $product->get_id()
Но я получил сообщение об ошибке и — буду честен — я действительно не понимаю, что я делал! Я искал решения большую часть дня, так что я надеюсь, что кто-нибудь будет достаточно любезен, чтобы помочь!
Как уже упоминалось, цель состоит в том, чтобы иметь возможность заполнить data-sku="xxxxxxxx"
поле в TrustPilot «TrustBox» — инструменте javascript, который извлекает и представляет отзывы из trustpilot. Я думаю, идентификатор нужно будет обновить в HTML для элемента.
Весь код TrustPilot показан ниже:
Добавьте это в заголовок
<!-- TrustBox script -->
<script type="text/javascript" src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script>
<!-- End TrustBox script -->
Добавьте это в тело, где вы хотите, чтобы появился виджет
<!-- TrustBox widget - Product Reviews SEO -->
<div class="trustpilot-widget" data-locale="en-GB" data-template-id="5717796816f630043868e2e8" data-businessunit-id="5d472f87ff988700011c73b8" data-style-height="700px" data-style-width="100%" data-theme="light" data-sku="487" data-name="10 Plantshake Pack" data-review-languages="en">
<a href="https://uk.trustpilot.com/review/foga.co" target="_blank" rel="noopener">Trustpilot</a>
</div>
<!-- End TrustBox widget -->
Ответ №1:
Обновлено
Чтобы получить идентификатор продукта на отдельных страницах продукта, вы можете использовать: $product_id = get_the_ID();
Чтобы быть уверенным в получении объекта product на отдельных страницах продукта, вы можете использовать:
$product = wc_get_product( get_the_ID() );
Или даже лучше:
global $product;
if ( ! is_a( $product, 'WC_Product' ) ) {
$product = wc_get_product( get_the_ID() );
}
Теперь вы можете использовать подключенную функцию, чтобы вставить весь связанный код на отдельные страницы продукта. Ваш javscript будет динамически заполняться названием продукта и артикулом:
add_action('woocommerce_before_single_product', 'action_before_single_product', 5 );
function action_before_single_product(){
global $product;
$id = $product->get_id(); // Product Id
$sku = $product->get_sku(); // Product sku
$name = $product->get_name(); // Product name
?>
<!-- TrustBox widget - Product Reviews SEO -->
<div class="trustpilot-widget" data-locale="en-GB" data-template-id="5717796816f630043868e2e8" data-businessunit-id="5d472f87ff988700011c73b8" data-style-height="700px" data-style-width="100%" data-theme="light" data-sku="<?php echo $sku; ?>" data-name="<?php echo $name; ?>" data-review-languages="en">
<a href="https://uk.trustpilot.com/review/foga.co" target="_blank" rel="noopener">Trustpilot</a>
</div>
<!-- End TrustBox widget -->
<?php
}
Ввод кода functions.php файл активной дочерней темы (или активной темы). Это должно сработать.
Комментарии:
1. Loic — большое спасибо, что нашли время ответить так подробно! Могу ли я попросить вас уточнить, где / как должны быть развернуты эти различные фрагменты текста?
2. Хм — извините, я все еще борюсь! Я попытался поместить код (более длинный, последний фрагмент кода) непосредственно на страницу продукта, и я вижу это: get_id() $sku = $product-> get_sku(); $name = $product-> get_name(); ?> Прямо над виджетом, которыйданные не заполнены, что означает, что идентификатор не вводится… Есть еще идеи?
3. Вероятно, нет! Я помещаю это в шаблон макета продукта (и я также тестировал прямо в описание продукта …) Куда я должен их поместить?
4. Спасибо @LoicTheAztec — это работает! Вроде того… Он проходит правильно, что удивительно! Однако виджет отзывов просто помещается в начало страницы с помощью функции. Как я могу вставить фактический виджет в подходящее место на странице и по-прежнему динамически заполнять его?
5. @OllieThirlwell-Pearce Где именно вы хотите, чтобы это было? В каком месте на странице продукта?