WordPress发布查询和循环

时间:2018-08-08 14:16:12

标签: wordpress

我有一个自定义帖子类型,其中包含几个自定义帖子字段。 我想做的是显示所有帖子的字段1,然后放入一些html内容,然后显示所有帖子的字段2。因此,结构将如下所示:

  
      
  • 帖子1的字段1
  •   
  • 帖子2的字段1
  •   
  • 帖子3的字段1
  •   
  • 帖子4的字段​​1
  •   
     

这里有HTML内容

     
      
  • 帖子1的字段2
  •   
  • 帖子2的字段2
  •   
  • 帖子3的字段2
  •   
  • 帖子4的字段​​2
  •   

有没有比两次查询帖子更好的方法了?这是一组完全相同的帖子。

当前,我的Post查询和循环看起来像这样

    // Query to display Field 1 for all posts
        <?php
            $new_loop = new WP_Query( array(
            'post_type' => 'pbt',
                'posts_per_page' => 5
            ) );
        ?>
        <?php if ( $new_loop->have_posts() ) :  while ( $new_loop->have_posts() ) : $new_loop->the_post(); ?>
        FIELD 1 DATA GOES HERE
        <?php endwhile; else: endif; ?>
        <?php wp_reset_query(); ?>

MY HTML CONTENT GOES HERE

    // Query to display Field 2 of posts
        <?php
            $new_loop = new WP_Query( array(
            'post_type' => 'pbt',
                'posts_per_page' => 5
            ) );
        ?>
        <?php if ( $new_loop->have_posts() ) :  while ( $new_loop->have_posts() ) : $new_loop->the_post(); ?>
        FIELD 2 DATA GOES HERE
        <?php endwhile; else: endif; ?>
        <?php wp_reset_query(); ?>

有没有更清洁的方法? 如您所见,为了将html数据放置在它们之间,我将重复查询和发布循环两次。

有没有一种方法可以拉动所有帖子的字段1,然后暂停循环或其他操作,放置html内容,然后拉动所有帖子的字段2,而无需重复查询?

2 个答案:

答案 0 :(得分:1)

@shtarley

也许是从一个循环中创建两个数组的更好方法,即

$ field1 []; $ field2 [];

将来自wp_query循环的所有值存储在这两个数组中,之后仅显示第一个数组,然后显示html和第二个数组之后。我不知道,但我假设您需要两个字段都位于不同的位置。

答案 1 :(得分:0)

// Query to display Field 1 for all posts
    <?php
        $new_loop = new WP_Query( array(
        'post_type' => 'pbt',
            'posts_per_page' => 5
        ) );
    ?>
    <?php if ( $new_loop->have_posts() ) :  while ( $new_loop->have_posts() ) : $new_loop->the_post(); ?>
    FIELD 1 DATA GOES HERE
    <?php endwhile; else: ?>

MY HTML CONTENT GOES HERE

// Query to display Field 2 of posts

    <?php while ( $new_loop->have_posts() ) : $new_loop->the_post(); ?>
    FIELD 2 DATA GOES HERE
    <?php endwhile; else: endif; ?>
    <?php wp_reset_query(); ?>