Цикл внутри цикла wordpress?

145
20 декабря 2017, 23:02

Создана произвольная таксономия для каталога товаров и с помощью плагина ACF тип поля Relationship сделан вывод этих товаров в нужных местах. Появилась необходимость вывести эти посты внутри цикла для этого написал шорткод, но он отказывается работать внутри записи, если вставлять прямо в .php все работает. Подскажите в чем моя ошибка? Шорткод выводит данные в начало поста, в независимости от того где его разместить. Код шорткода

    function true_mycode_func( $atts ){
        extract( shortcode_atts( array(  
                          'posts_per_page'  => 20,
                          'post_type'       => 'card',
                          'post__in'            => $ids,
                          'post_status'     => 'any',
                          'orderby'         => 'post__in', 
        ), $atts ) );  
        // создаем запрос для выборки типов записей card 
        $ids = get_field('catalog_card', false, false);
        $loop =  new WP_Query(array(
                          'posts_per_page'  => 20,
                          'post_type'       => 'card',
                          'post__in'            => $ids,
                          'post_status'     => 'any',
                          'orderby'         => 'post__in',
                      ));
        // В цикле проходим по записям и создаем HTML-структуру.  
        if($loop){  
            while ($loop->have_posts()){  
                 $loop->the_post();  
                 $output .= get_template_part( 'template-parts/single', 'card' );  
            }  
        }  
        wp_reset_postdata();                  
        return $output;  
        }
    add_shortcode( 'mycode', 'true_mycode_func' );

Заранее спасибо!

ДОПОЛНЕНИЕ. Даже если ни чего не выводить return в коде, и вставить [mycode] в запись, цикл все равно выводится в начале записи ???

Answer 1

После окончания цикла в вашем шорткоде надо выполнить

wp_reset_postdata();

Эта функция возвращает переменные цикла в правильное состояние. Подробнее здесь.

И еще одна проблема - если у вас тема twentyseventeen, то она использует основной цикл WordPress внутри /template-parts/single. Вам надо использовать для вывода контента поста шаблон без цикла: wp-content/themes/twentyseventeen/template-parts/post/content.php

READ ALSO
Проблема json_decode в PHP

Проблема json_decode в PHP

Столкнулся с такой проблемкойФункция json_decode в php не отрабатывает этот файл: http://kwork

194
про свойство класса

про свойство класса

Есть класс А , в нем определены статично-публичное св-во $price и публичный статичный метод meth с данным св-вом $price, который присваивает внутри...

178
Суммирование с условием

Суммирование с условием

Добрый деньПишу SQL запрос, но не могу понять как реализовать

142
сделать рекурсивную выборку в Laravel 5.3 Mysql

сделать рекурсивную выборку в Laravel 5.3 Mysql

У меня есть таблица категорий (id,name,parent,root) и надо сделать рекурсивную выборкуВ модели

145