Пользовательский запрос, ломающий WP admin - PullRequest
0 голосов
/ 10 марта 2020

У меня есть этот простой пользовательский запрос, который проходит через мой пользовательский тип записи.

Он находится внутри папки плагинов, активирован и превращен в шорткод, который отлично работает.

Шорткод отображает все так, как должно. ОДНАКО:

Когда я go редактирую страницу, я получаю короткую белую страницу с результатами запроса, затем открывается страница администратора редактирования. И тогда моя админка тоже полностью отделена от левой стороны.

А затем при нажатии на кнопку «редактировать» выдает ошибку, в которой говорится «Ошибка обновления. Ответ не является действительным JSON -ответ».

Это сводит меня с ума, я уже делал несколько из них раньше, но не по какой-то причине мой администратор отказался от простого l oop. Чего мне не хватает?

Спасибо за потраченное время!

function show_ambassadors($atts) {

$args = array(
    'post_type' => 'ambassadorer',
    'post_status' => 'publish',
    'posts_per_page' => 8,
    'orderby' => 'title',
    'order' => 'ASC'
);

$loop = new WP_Query($args);

?>

    <div class="ambassador-container">

<?php

if($loop->have_posts()) {

while ( $loop->have_posts() ) : $loop->the_post(); 

    $thumbnail = get_post_thumbnail_id($post);
    $image = wp_get_attachment_image_url($thumbnail, "thumbnail");
    $categories = get_the_terms( $post->ID, 'category' );

?>

<div class="ambassador-inner-container">
    <div class="ambassador-image" style="background-image: url('<?php echo $image ?>'); background-size: cover; background-repeat: no-repeat;"></div>
    <h3 class="ambassador-title"><?php print the_title();  ?></h3>
    <h4 class="ambassador-category"><?php foreach($categories as $cats) {echo ($cats->name);} ?></h4>
</div>

<?php 

endwhile;
}

?>

</div>
<?php 
}

add_shortcode('showamb', 'show_ambassadors');

1 Ответ

1 голос
/ 10 марта 2020

При использовании the_post() метода WP_Query вы манипулируете глобальными переменными, которые используются « основным WordPress l oop».

Вам необходимо использовать wp_reset_postdata функция для восстановления этих глобальных переменных:

if($loop->have_posts()) {

    while ( $loop->have_posts() ) : $loop->the_post();

    [...]

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