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->博客。
任何建议或帮助都将不胜感激。
答案 0 :(得分:0)
我正在使用的主题(繁荣的主题)编码将“博客”的默认值应用于面包屑。由于我创建的自定义插件生成了自己的模板页面,因此主题导致默认。
为了解决这个问题,我添加了一个子主题并根据需要重写了面包屑代码。