WordPres ACF 'post-object' и продукт WooCommerce = ошибка на первой странице? - PullRequest
0 голосов
/ 16 января 2020

У меня есть этот WP_Query:

$query = new WP_Query(
        array(
            'posts_per_page' => $postsCount,
            'post_type' => 'events',
            'taxonomy' => 'events-category',
            'meta_key' => 'event-start-date',
            'orderby' => $postsOrderBy,
            'order' => $postsOrder,
            'meta_query' => array(
                array(
                        'key' => 'event-start-date',
                        'compare' => '>=',
                        'value' => date("Y-m-d"),
                        'type' => 'DATE',
                ),
            ),
        ),
    );
if ($query->have_posts()):
    while ($query->have_posts()): $query->the_post();
        // content
    endwhile;
    wp_reset_query();
endif;

В 'контенте' у меня есть что-то вроде этого:

    <?php
    $post_object = get_field('event-ticket');
        if( $post_object ):
            $post = $post_object;
            setup_postdata( $post );
            $product->get_id(); ?>

    <div class="e-post__details-item e-post__details-item--event-price"><i class="e-post__details-item--icon fas fa-ticket-alt"></i><?php woocommerce_get_template( 'single-product/price.php' ); ?></div>

    <div class="l-cta l-cta--events">

    <div class="e-post__event-stock-status">
        <?php if ( $product->is_in_stock() ) {
        echo '<div class="e-post__event-stock-status-available">'.__('Dostępne!', 'woocommerce').'</div>';
        } elseif ( ! $product->is_in_stock() ) {
        echo '<div class="e-post__event-stock-status-unavailable">'.__('Wyprzedane!', 'woocommerce').'</div>';
        } ?>
    </div>

    </div>

    <?php
    wp_reset_postdata();
    endif;
    ?>

get_field ('event-ticket') - тип поля постобъекта ACF с 'Post Object' вернуть объект. Это поле указывает на продукт WooCommerce для получения цены и количества товара.

WP_Query равен l oop CPT «События». В каждом случае я использую поле постобъекта для указания на продукт WooCommerce, который является тикетом.

ПРОБЛЕМА : Данные из 'event-ticket' работают на всех подстраницах (архивы, таксономия, страницы, посты cpt), но не на первой (главной) странице:

Uncaught Error
: Call to a member function get_id() on null

В чем может быть причина?

Ответы [ 2 ]

1 голос
/ 16 января 2020

Вы не объявили $product раньше. Вот почему вы получаете эту ошибку. $product->get_id(); когда вы не инициализировали $ product ранее.

Может быть, вы хотите сначала:

$product = new WC_Product($post->ID);
0 голосов
/ 16 января 2020

Я понял: я просто добавил global $ product; перед $ product-> get_id (); и теперь он работает :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...