I want to make a custom WP_Query using custom taxonomy terms ID´s.

Example of the term’s ID’s : 19,18,214,226,20

Why does this work:

$query_args = array (
    'post_type' => 'works’,
    'tax_query' => array(
        array(
            'taxonomy'  => 'materials',
            'field'     => 'term_id',
            'terms'     => array( 19,18,214,226,20 ),
        )
    ),
);

It shows all items from all taxonomy terms ID’s,

But this doesn’t:

$tax = '19,18,214,226,20';

$query_args = array (
    'post_type' => 'works',
    'tax_query' => array(
        array(
            'taxonomy'  => 'materials',
            'field'     => 'term_id',
            'terms'     => array( $tax ),
        )
    ),
);

Using the variable $tax the query result only shows items the first term ID (19), and ignores all the others.

Why does this happens and how can i use the variable in the tax_query instead of hardcode the ID’s ?

2 Answers
2

It looks like you are making an array with a single string inside.

Check if making $tax into an array before passing it will work:

$tax = array( 19, 18, 214, 226, 20 );

$query_args = array (
    'post_type' => 'works',
    'tax_query' => array(
        array(
            'taxonomy'  => 'materials',
            'field'     => 'term_id',
            'terms'     => $tax,
        )
    ),
);

If you need to make an array from a formatted string, you can use the explode PHP function that takes a delimiter and a string, and returns an array, like so:

$tax_string = '19,18,214,226,20';
$tax_array = explode( ',', $tax_string );

Hope that works!

Leave a Reply

Your email address will not be published. Required fields are marked *