Wordpress - 插件自定义模板始终在面包屑

时间:2017-03-21 19:37:23

标签: php wordpress .htaccess templates

UPDATE *****

我找到了插件加载到博客上的原因。我需要将以下内容添加到load_main函数

public function load_main(){
$dir = plugin_dir_path( __FILE__ );        
include ($dir.'/templates/main.php');   
exit();
}

但是,我仍在试图找出为什么面包屑显示为Home->博客。

我是否需要为自定义模板创建自定义分类和发布类型?如果是这样,我如何将其应用于面包屑的模板。

任何帮助将不胜感激。

ORIGINAL POST ****

我创建了一个重写规则来路由到自定义模板。当我激活我的插件时,正在应用重写规则,但是当我导航到固定链接时,我将自定义模板加载到“博客”页面的顶部。在我页面顶部的含义,我看到我创建的main.php模板,后面是我所有博客文章的列表。

面包屑显示固定链接导航到“博客”菜单项。这是我用于我的rewrite_rules并加载自定义模板的代码。

class ssa_tools {
public function __construct(){
    register_activation_hook(__FILE__, array($this,'flush_application_rewrite_rules'));
    add_action('template_redirect', array($this,'front_controller'));
    add_action('ssa_main', array($this,'load_main'));
    add_filter('query_vars', array($this, 'manage_user_routes_query_vars'));

} 
public function manage_user_routes() {
    add_rewrite_rule( '^ssa_tools/([^/]+)/?','index.php?control_action=$matches[1]', 'top' );
}
public function manage_user_routes_query_vars($query_vars){
    $query_vars[] = 'control_action';
    return $query_vars;
}
public function flush_application_rewrite_rules() {
    $this->manage_user_routes();
    flush_rewrite_rules();
}
public function front_controller(){
    global $wp_query;
    $control_action = isset ( $wp_query->query_vars['control_action'] ) ? $wp_query->query_vars['control_action'] : '';

    switch ($control_action) {
        case 'ssa_main':
            do_action('ssa_main');
            break;
}
public function load_main(){
    $dir = plugin_dir_path( __FILE__ );     
    include ($dir.'/templates/main.php');       
}
}

我使用的URL是本地计算机上的ssa.dev/ssa_tools/ssa_main/。看起来路由发生了两次,一次是我的模板然后路由到“博客”页面。再次,当我看到面包屑它显示home->博客。

任何建议或帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我正在使用的主题(繁荣的主题)编码将“博客”的默认值应用于面包屑。由于我创建的自定义插件生成了自己的模板页面,因此主题导致默认。

为了解决这个问题,我添加了一个子主题并根据需要重写了面包屑代码。