Puddinq.com sharing knowledge

WordPress Select template to render query in wordpress

Wordpress Select template to render query in wordpress

Sometimes you want to use one archive template for different situations. In wordpress select a template by using the ‘template_include‘ filter. You have to use the function ‘locate_template()‘  to set the template.

This is if you want to stray from the normal way wordpress enables you to select a template. WordPress lets you create page templates in a way you can select them from a post (codex link). You can create custom archive pages for custom posts in a simular way (codex link). But what if you want to use an archive template for a page, or one template for everything…

WordPress select template

<?php

// put in your functions
function template_chooser($template)
{
  global $wp_query;
  $post_type = get_query_var('post_type');
  // If the query is a search query AND the post type is set to your_custom_post_type
  if( $wp_query->is_search && $post_type == 'your_custom_post_type' )
  {
    // use the your_custom_page.php to display the output
    return locate_template('your_custom_page.php');
  }
  // if the tax is your_tax
  if( is_tax('your_tax') ) 
  {
    // use the your_custom_page.php template to output
    return locate_template('your_custom_page.php');
  }
 
  return $template;
}
add_filter('template_include', 'template_chooser');