1
votes

I've created a custom post type and taxonomy for it. I want admin to be able to chose a taxonomy they want to show on the page when creating a new one (page). I've created a custom page template, and there is a conditional custom field that shows available taxonomies, when that template is selected. Used custom post type UI and advanced custom fields plugins for that.

<?php
    // this one gets taxonomy custom field
    $taxo = get_field('top_to_show');
    // and from here on, it outputs the custom post type
    $args = array(
      'post_type' => 'top_item',
      'post_status' => 'publish',
      'tops' => $taxo
    );
    $lineblocks = new WP_Query( $args );
    if( $lineblocks->have_posts() ) {
      while( $lineblocks->have_posts() ) {
        $lineblocks->the_post();
        ?>

<div>Custom post type layout html</div>

<?php
      }
    }
    else {
      echo '';
    }
 wp_reset_query(); ?>

Now, when I select "Term ID" for taxonomy custom field for the page, it doesn't show anything at all. And when I select "Term Object", it shows all posts from all taxonomies, and not the specifically selected one.

How do I make it show that specifically chosen taxonomy posts?

1

1 Answers

0
votes

That method of retrieving posts by taxonomy, with the tax parameter, is deprecated: https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

You should use tax_query instead. Assuming 'tops' is the name of the taxonomy, and your custom field returns the Term ID only:

$args = array(
    'post_type' => 'top_item',
    'post_status' => 'publish',
    'tax_query' => array(
        array(
            'taxonomy' => 'tops',
            'field'    => 'term_id',
            'terms'    => $taxo,

        ),
    ),
);