Skip to main content
1 of 2
Cedon
  • 1.7k
  • 2
  • 13
  • 26

You're going to need set up a new WP_Query in your content-*.php with the correct parameters in order to send it into a loop.

<?php
   $args = array(
     'tax_query' => array(
             array(
                    'taxonomy' => 'recipes',.
                    'field'    => 'slug',
                    'terms'    => 'dessert',
   );

   $your_posts = new WP_Query( $args );
?>

You can add any other parameters you want/need for this query. You can find more reference on parameters at the WordPress Codex page for WP_Query and add them to the $args array.

In my example, WP_Query is going to look at the recipes taxonomy, it's going to find recipes by looking at the slug, and find all posts with the value dessert.

Once you have the new WP_Query set up, you then send it into the WordPress loop:

<?php
    if ( $your_posts->have_posts() ) : while ( $your_posts->have_posts() ) : $your_posts->the_post();
?>
// Your Post Stuff Goes Here
<?php endwhile; else: ?> <p>Sorry, there are no posts to display</p>
<?php endif; ?>
<?php wp_reset_query(); ?>

In order to get at your custom fields, I would suggest writing a function in your functions.php file to handle this and call it within the loop. That way if you can use it throughout the theme with more ease.

<?php
   function my_custom_field( $id, $field_name ) {
      return get_post_meta( $id, $field_name, true );
   }
?>

What this function does is access the post's metadata, look for the field name you specify, and returns a single value. If there are multiple values using the same key, then omit the true and the function will instead return an array which you can then use a foreach() to process that.

So, for example, say your custom field is 'mood' then the call to the function would be:

<?php my_custom_field( $post->ID, 'mood' ); ?>
Cedon
  • 1.7k
  • 2
  • 13
  • 26