I have a custom post type called movies and I need to quickly switch the template that displays the movies cpt on the front end via a link. How can this be done?
Files I have:
single-movies.php
template-movieslanding.php
template-movieswholesale.php
Functionality: A link group is displayed on each of the three templates as demonstrated below. These links are only displayed to logged in staff. The staff are not technical in the least and need a simplistic solution.
Views: Overview | Landing Page | Wholesale
When each link is clicked I need to switch to that template. All templates use the same custom post type.
Thanks!
~Matt
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
you can do it like this:
//add movies_view to query vars
add_filter('query_vars', 'my_query_vars');
function my_query_vars($vars) {
// add movies_view to the valid list of variables
$new_vars = array('movies_view');
$vars = $new_vars + $vars;
return $vars;
}
then add a template redirect based on that query_var:
add_action("template_redirect", 'my_template_redirect');
// Template selection
function my_template_redirect()
{
global $wp;
global $wp_query;
if ($wp->query_vars["post_type"] == "movies")
{
// Let's look for the property.php template file in the current theme
if (array_key_exists('movies_view', $wp->query_vars) && $wp->query_vars['movies_view'] == 'overview'){
include(TEMPLATEPATH . '/single-movies.php');
die();
}
if (array_key_exists('movies_view', $wp->query_vars) && $wp->query_vars['movies_view'] == 'landing'){
include(TEMPLATEPATH . '/template-movieslanding.php');
die();
}
if (array_key_exists('movies_view', $wp->query_vars) && $wp->query_vars['movies_view'] == 'wholesale'){
include(TEMPLATEPATH . '/template-movieswholesale.php');
die();
}
}
}
then add this var to your links
- For Overview add ?movies_view=overview to the url
- For Landing Page add ?movies_view=landing to the url
- For Wholesale add ?movies_view=wholesale to the url
Hope this helps
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0