Класс Woocommerce $ product недоступен внутри фрагмента PHP

Я пытаюсь написать PHP-код для отображения дополнительных полей на странице моего продукта с помощью «Woody Snippets» в WordPress. Но я не могу получить доступ к классу $product внутри своего фрагмента. Это невозможно или я что-то не так делаю?

Вот мой код:

    global $product;

    $seller = get_post_field( 'post_author', $product->get_id());
    $author  = get_user_by( 'id', $seller );
    $store_info = dokan_get_store_info( $author->ID );

    ?>
        <span class="details">
            <?php printf('Call me at <a href="tel:%s">%s</a>', $store_info['phone'], $store_info['phone']) ?>
        </span>

этот плагин? wordpress.org/plugins/insert-php

GrafiCode 22.04.2022 22:28

Да, Вуди... :)

anixrud 22.04.2022 22:39

Я понял, что проблема связана с моей темой. Газетная тема. Теперь мне нужно решить проблему темы.

anixrud 23.04.2022 10:15
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Что нового в PHP 8.1?
Что нового в PHP 8.1?
Если вы все еще используете PHP 7, то эта статья для вас. В PHP 8, а именно в PHP 8.1, встроены некоторые очень востребованные функции, которые вам...
Разработка LMS на заказ для повышения эффективности работы и обучения
Разработка LMS на заказ для повышения эффективности работы и обучения
За последние годы в образовании произошла большая революция, и сегодня почти все учебные заведения делают упор на эксклюзивное управление учебным...
0
3
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понял, что причиной проблемы является моя тема. Моя тема использует шаблоны для просмотра сообщений, таких как сообщения, продукты, страницы магазина и т. д. И из-за этого идентификатор страницы продукта woocommerce указывает на идентификатор шаблона, и на этой странице нет доступного класса $ product. Итак, я нашел решение, запросив следующее.

global $wp;
global $wp_query;

$productid = url_to_postid(home_url( $wp->request));
$postdata = get_postdata($productid);

$authorID = $postdata['Author_ID'];

$store_info = dokan_get_store_info( $authorID );
?>
    <span class="details">
        <?php printf('<a href="tel:%s">%s</a>', 
            $store_info['phone'], $store_info['phone']) ?>
    </span>

Другие вопросы по теме