【发布时间】:2017-03-21 19:37:22
【问题描述】:
更新*****
我找到了插件加载到博客顶部的原因。我需要在 load_main 函数中添加以下内容
public function load_main(){
$dir = plugin_dir_path( __FILE__ );
include ($dir.'/templates/main.php');
exit();
}
但是,我仍在试图弄清楚为什么面包屑显示为 Home-> Blog。
我是否需要为我的自定义模板创建自定义分类和帖子类型?如果是这样,我如何将其应用于面包屑的模板。
任何帮助将不胜感激。
原帖****
我创建了一个重写规则来路由到自定义模板。当我激活我的插件时,正在应用重写规则,但是当我导航到永久链接时,我会在“博客”页面顶部加载自定义模板。这意味着在我的页面顶部,我看到了我创建的 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/。似乎路由发生了两次,一次用于我的模板,然后路由到“博客”页面。同样,当我查看面包屑时,它会显示主页->博客。
任何建议或帮助将不胜感激。
【问题讨论】:
标签: php wordpress .htaccess templates