0

My theme file, multiple times over, passes sets a variable to a template part used in a subsequent template part file via set_query_var, like so...

set_query_var('feature_id', array(143866));
set_query_var('tax_meta_value',  'Payments');
get_template_part('partials/page-blocks/block_tag_new');

set_query_var('tax_meta_value',  'Venture Capital');
get_template_part('partials/page-blocks/block_tag_new');

In the template part, the variable is plucked out, using get_query_var, as $feature_id.

The only problem is - in the second instance here, for example - the template part still retains a memory of the first feature_id value passed above.

When I call the template part in the second instance, how do I ensure that no feature_id value is resident, since none is passed?

Do I need to do something like set the ensuing $feature_id, within the template part file, as global and unset it? Or do that but in the calling file, or something else?

0

When I call the template part in the second instance, how do I ensure that no feature_id value is resident, since none is passed?

I'm afraid you misunderstood what set_query_var really does. It doesn't pass anything and it doesn't work only for the next get_template_part call.

OK, so what does it really do? From docs:

Set query variable.

And here's its code:

function set_query_var( $var, $value ) {
    global $wp_query;
    $wp_query->set( $var, $value );
}

So now everything should be clear. So let's take a look at your original code:

set_query_var('feature_id', array(143866));  // <- sets query var called feature_id to 143866
set_query_var('tax_meta_value',  'Payments');  // <- set query var called tax_meta_value to Payments
get_template_part('partials/page-blocks/block_tag_new');

set_query_var('tax_meta_value',  'Venture Capital');  // <- sets tax_meta_value to Venture Capital 
// feature_id is still 143866, because it hasn't been changed
get_template_part('partials/page-blocks/block_tag_new');

If you want to unset the query var, you can set it to false/NULL:

set_query_var('feature_id', false);
  • I didn't quite misunderstand, though I think I did use incorrect language. Anyway, passing a "false" value to set_query_var absolutely works as the correct answer. Thank-you. – Robert Andrews Mar 3 at 22:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.