在循环中调用函数会导致数据重复

时间:2017-02-10 作者:Jordan Lewallen

我试图在我的提要上显示帖子编号(用于排名),这是通过调用包含wordpress循环的函数并返回递增的值来实现的。但是,通过这样做,循环似乎停止查找新帖子,而是重复内容(仅重复此函数调用下面的内容),例如文章标题(特征图像不同,因为它是在函数之前调用的)。我该如何解决这个问题?

下面是它的样子:

enter image description here

在中找到循环plugin.php

function ori_load_more_func() {

//removed irrelevant code

  // Query the posts by the specified IDs, and sort by like count
    $args = array(
      \'post_type\'   => array( \'post\'),
      \'post__in\'      => $most_popular_posts,
      \'meta_key\'    => \'_liked\',
      \'orderby\' => array( \'meta_value_num\' => \'DESC\', \'date\' => \'DESC\' ),
      \'post_status\' => \'publish\',
      \'paged\'       => $offset,
      \'posts_per_page\'  => $posts_per_page,
      \'post__not_in\' => array($current_post_id) //skip current displayed post
    );

  ob_start();

    global $ranking;


  $posts_query = new WP_Query( $args );

  if ($posts_query->have_posts()) {

          $result[\'have_posts\'] = true;
         // echo \'<div class="load_more_single_post_container">\';

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

            return $ranking += 1;

            echo get_template_part( \'template-parts/content\', get_post_format() );



         endwhile;

//      $ranking = $ranking + 1;
        //echo \'</div>\';
        $data = ob_get_clean();
        wp_send_json_success( $data );
        wp_die();

  }


}
调用函数的位置content.php

<div class="rank-number">
  <?php echo ori_load_more_func($ranking); ?>
</div>

1 个回复
SO网友:Paco Ciccarelli

首先,您可以删除return $ranking += 1; 并替换为$ranking += 1;.

我们不知道发生了什么template-parts/content, 但别忘了加一点<?php wp_reset_postdata(); ?> 就在你endwhile;.

相关推荐

如何在WordPress unctions.php中将短代码值传递到Head

我正在尝试为wordpress帖子上的图表创建一个快捷代码。到目前为止,我已经使用了短代码,我可以看到短代码值正在被传递,但我需要知道的是如何将这些值传递到Google图表,以便正确工作。以下是我目前掌握的代码:function chart_shortcode($atts) { $a = shortcode_atts( array( \'value1\' => \'\', \'value2\' => \'\', \'value