我正在开发一个插件。在插件文件夹中,有一个文件夹“模板”,我从中复制了文件并粘贴到活动主题中的“my\\u文件夹”。他们动作完美。现在,当我从主题编辑文件时,他们没有编辑,但当我从插件文件夹编辑文件时,他们编辑了。
我只想当我从主题编辑文件时,结果会显示在前端,而不是插件。
我还使用template_include
胡克,但我不知道哪里出错了。
这是我的代码:
add_filter(\'template_include\', \'my_template_chooser\');
function my_template_chooser($template){
global $wp_query;
$plugindir = dirname(__FILE__);
$post_type = get_query_var(\'post_type\');
if( $post_type == \'my_items\' ){
if(file_exists(TEMPLATEPATH . \'/my_items/my_items.php\')) {
return locate_template(\'my_items/my_items.php\');
} else {
return $plugindir . \'/template/my_items.php\';
}
}
if( $post_type == \'my_items\' && is_single() ){
if(file_exists(TEMPLATEPATH . \'/my_items/single-my_items.php\')) {
return locate_template(\'my_items/single-my_items.php\');
} else {
return $plugindir . \'/template/single-my_items.php\';
}
}
if (is_tax(\'my_items_tags\')) {
if(file_exists(TEMPLATEPATH . \'/my_items/taxonomy-my_items_tags.php\')) {
return locate_template(\'my_items/taxonomy-my_items_tags.php\');
} else {
return $plugindir . \'/template/taxonomy-my_items_tags.php\';
}
}
return $template;
}
我也试过这个
return locate_template(\'my_items/taxonomy-my_items_tags.php\');
至
return TEMPLATEPATH .\'my_items/taxonomy-my_items_tags.php\';
但什么都没发生。请告诉我哪里做错了
最合适的回答,由SO网友:5ervant - techintel.github.io 整理而成
要获取模板目录,可以使用get_template_directory_uri()
像这样:
$themeDir = get_template_directory_uri();
// ...
$themeItems = $themeDir . \'/my_folder/my_items.php\';
if (file_exists($themeItems))
return $themeItems;
else
return $pluginDir . \'/template/my_items.php\';
欲了解更多信息,请访问
Function Reference/get template directory uri.. 如果要将PHP代码放在主题目录中,最好放在“functions.PHP”文件中,或者
include($theFile)
在“functions.php”中放置php代码的位置。