0

I have a custom post type with a couple of custom post fields. What I am trying to do is to display field 1 of all posts, then put some html content, and then display field 2 for all posts. So, the structure will be something like this:

  • Field 1 for post 1
  • Field 1 for post 2
  • Field 1 for post 3
  • Field 1 for post 4

HTML CONTETENT GOES HERE

  • Field 2 for post 1
  • Field 2 for post 2
  • Field 2 for post 3
  • Field 2 for post 4

Is there a better way to do it than to query the posts twice? It's the exact same set of posts.

Currently my Post query and loop looks like this

    // 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(); ?>

Is there a cleaner way to do it? As you can see, I'm repeating the query and post loop twice in order to put html data between them.

Is there a way I could pull field 1 for all posts, then pause the loop or something, put html content, and then pull field 2 for all posts without repeating the query?

2 Answers 2

1

@shtarley

May be it is a better way to make two arrays from one loop i.e.

$field1[]; $field2[];

Store all the values from wp_query loop inside this two arrays and after that just show first array and then your html and after that second array.I don't know but i am assuming that you need both fields on different different palces.

Sign up to request clarification or add additional context in comments.

Comments

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(); ?>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.