我正在尝试为我的自定义插件编写代码,其中需要包含一个模板页面。我尝试了几种方法,但它将我重定向到404。在此之后,我还添加了模板重定向代码,但没有结果。有人请注意我哪里做错了?
我的代码片段的几个示例:
add_filter( \'template_include\', \'portfolio_newpage_template\', 99 );
function portfolio_newpage_template( $template ) {
$new_template = locate_template( array( dirname( __FILE__ ). \'/portfolio-page-template.php\' ) );
if ( \'\' != $new_template ) {
return $new_template ;
}
return $template;
}
对于重定向,我使用:
function templateRedirect() {
//global $wp;
// if ($wp->request == \'http://localhost/plugin-testing/portfolio\') {
// loadWordPressTemplate(dirname( __FILE__ ). \'/portfolio-page-template.php\');
if ( is_page_template(\'portfolio-page-template.php\') ){
loadWordPressTemplate(plugin_dir_url( __FILE__ ) . \'portfolio-page-template.php\');
}
}
add_action(\'template_redirect\', \'templateRedirect\');
我已经搜索了很多代码,但我没有找到解决问题的正确方法。目前,我正在本地主机中进行测试,因此当url类似于以下内容时,我需要加载模板:
esc\\u url(home\\u url())。\'/投资组合\'
还有一件事我不想用wp_insert_post function 这需要update_post_meta function 使文章/页面在管理区域可见。但是如果有任何方法可以从管理区域隐藏插入的帖子/页面,我会非常感激。
提前感谢
SO网友:Rick Hellewell
请参见我的问题和我自己的答案,事实证明这是解决方案:Create Page that uses specific template .
我的问题是让特定页面使用插件文件夹中的模板。我使用了以下代码(以及一些支持代码来创建插件):
// include our template
add_filter( \'template_include\', \'use_our_page_template\', 99 );
function use_our_page_template( $template ) {
if ( is_page( \'My Custom Page\' ) ) {
$new_template = plugin_dir_path( __FILE__ ) . \'templates/mycustomtemplate.php\';
return $new_template;
}
return;
这将您的模板添加到“我的自定义页面”的模板列表(数组)。您可以在插件文件中使用该代码。根据需要更改页面名称。如果希望该模板可用于所有页面,请删除“If”语句。
如果您将上述代码放在插件的“init”中,那么(如果插件已启用),插件文件夹中的模板(\'plugin-name\'/templates
) 将显示在您创建的任何页面上。
请参阅我对上述问题的回答以获取更多解释。