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');