Wordpress Plugin Template redirect custom post, page, taxonomy

Here is example of how we can redirect to custom templates in wordpress plugin with page name, custom post type, custom taxonomies etc 

 

<?php
add_action("template_redirect", 'my_theme_redirect');

function my_theme_redirect()
 {
 global $wp;
 $plugindir = dirname(__FILE__);

 // A Specific page by title / name

 if ($wp->query_vars["pagename"] == 'agenda')
 {
 $templatefilename = 'page-event-list.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 do_theme_redirect($return_template);
 }

 // A Specific Custom Post Type

 if ($wp->query_vars["post_type"] == 'events')
 {
 $templatefilename = 'single-event.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 dmk_redirect_to_login_if_not_logged_in();
 do_theme_redirect($return_template);

 // A Custom Taxonomy Page

 }
 elseif ($wp->query_vars["taxonomy"] || is_tax('location') == 'location')
 {
 $templatefilename = 'taxonomy-event_location.php';
 if (file_exists(TEMPLATEPATH . '/' . $templatefilename))
 {
 $return_template = TEMPLATEPATH . '/' . $templatefilename;
 }
   else
 {
 $return_template = $plugindir . '/templates/' . $templatefilename;
 }

 do_theme_redirect($return_template);
 }
 }

// Function includes file and does redirection

function do_theme_redirect($url)
 {
 global $post, $wp_query;
 if (have_posts())
 {
 include ($url);

 die();
 }
   else
 {
 $wp_query->is_404 = true;
 }
 }
Advertisements

Wordpress bypass sanitize filter for post insert

I found solution for wordpress 3.6 and just want to share here
filter had to be unset due to security problems with it. You could try doing kses_remove_filters() before inserting the post and kses_init_filters() after inserting the post if you are trying to avoid the kses filtering of the post fields. Just be wary since that defeats most of the security measures for inserting posts.

kses_remove_filters(); // remove filter
wp_insert_post($args); //insert post
kses_init_filters(); // put back filter