@maksimbagatov

Как отобразить в плагине свой шаблон Wordpress по своему урлу?

Вызываю в публичной части в плагине Wordpress обработку pfghjcf

add_action('parse_request', array(&$this, 'site_url_handler'));

function site_url_handler($query)
	{
		
		$m = NULL;
		
		// Manually parse the URL request
		if(!empty($_SERVER['REQUEST_URI']))
		{
			$urlvars = explode('/', $_SERVER['REQUEST_URI']);
		}
		
		if(!empty($urlvars[1]) && $urlvars[1] == 'alias' && empty($urlvars[2]))
		{
			add_filter('template_include', array(&$this, 'my_template'));
		}
}


если авторизован как админ в публичной части, то шаблон my_template вызывается, а если не авторизован то не вызывается.

Подскажите, плиз, в чем может быть проблема.
  • Вопрос задан
  • 2905 просмотров
Пригласить эксперта
Ответы на вопрос 1
banderos120
@banderos120
Играю на балалайке
Если просто нужна одна страница, то проще обойтись вот так.
Если нужны будут еще параметры из GET массива, то тогда нужно будет работать c add_rewrite_rule(), add_rewrite_tag() и хуками подключения файлов шаблона , например template_include.
Для примера, вот:
add_action('init', function(){
    add_rewrite_tag('%tax%', '([^&]+)');
    add_rewrite_tag('%tags_name%', '([^&]+)');
    add_rewrite_rule('^tags/([^/]*)/([^/]*)/?$', 'index.php?tax=$matches[1]&tags_name=$matches[2]', 'top');
});

add_filter('template_include', function($template){
    
    global $wp_query;
    
    if(!empty($wp_query->query_vars['tags_name']) && !empty($wp_query->query_vars['tax'])){
        
        $wp_query->is_tax = true;
        
        $slug = $wp_query->query_vars['tags_name'];
        
        $tax = $wp_query->query_vars['tax'];
        
        $term = get_term_by('slug', $slug, $tax . '_tags');
        
        if(!$term) return THEME_PATH . DIR_SEP .'404.php';
        
        $wp_query->queried_object = $term;
        
        $wp_query->queried_object_id = $term->term_id;
        
        return THEME_PATH . DIR_SEP .'tags.php';
        
    }
        
    return $template;
    
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы