«Переопределение глобальных переменных WordPress запрещено», хотя код кажется нормальным

<?php foreach ( $upsells as $upsell ) : ?>

            <?php
                $post_object = get_post( $upsell->get_id() );

                setup_postdata( $GLOBALS['post'] =& $post_object );

        ?>

        <?php endforeach; ?>

    <?php woocommerce_product_loop_end(); ?>

Это дает

ERROR   Overriding WordPress globals is prohibited on line setup_postdata( $GLOBALS['post'] =& $post_object );

Я работаю над темой для thmeforest.net

Зачем нужна эта строчка: setup_postdata( $GLOBALS['post'] =& $post_object );

Vasim Shaikh 01.05.2018 13:46

для отображения продукта upshell в плагине woocommerce

saagar 01.05.2018 13:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
635
1

Ответы 1

Это неправильная практика. Вы должны использовать wp_query для этого продукта.

  add_action('woocommerce_after_single_product_summary', 'show_cross_sell_in_single_product', 30); 

function show_cross_sell_in_single_product(){
        $crosssells = get_post_meta( get_the_ID(), '_crosssell_ids',true);
        $args = array( 
            'post_type' => 'product', 
            'posts_per_page' => -1, 
            'post__in' => $crosssells 
            );
        $products = new WP_Query( $args );
        if ( $products->have_posts() ) : 
            echo '<div class = "cross-sells"><h2>Cross-Sells Products</h2>';
            woocommerce_product_loop_start();
            while ( $products->have_posts() ) : $products->the_post();
                wc_get_template_part( 'content', 'product' );
            endwhile; // end of the loop.
            woocommerce_product_loop_end();
            echo '</div>';
        endif;
        wp_reset_query(); }

Объяснение кода: все дополнительные продукты добавляются с помощью этой функции, когда вы просто пишете do_action (), это просто.

вы поняли, о чем я?

Vasim Shaikh 01.05.2018 14:16

спасибо, но коды объяснили насчет setup_postdata ($ GLOBALS ['post'] = & $ post_object); и передал сообщение как глобальную переменную.

saagar 02.05.2018 07:26

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