我正在创建一个带有一些预定义* .php页面的WordPress插件,这些页面位于插件的模板文件夹中。所以这个文件夹包含" login.php"," register.php"等文件。 &安培; " activate.php&#34 ;.
这些模板页面可以被主题覆盖。所以我的插件应该挂钩template_include
WordPress过滤器,以检查使用的主题是否使用模板覆盖。如果是这样,WordPress应加载theme template
,否则应加载预定义的plugin template
。
要确定哪个模板应该用于页面,您可以使用我的插件在WordPress的管理区域内选择一个页面(见下图)
我不知道如何获取页面选择模板的路径。 This教程很有帮助,但并不能100%满足我的需求。所以我想出了以下代码来检索要检索的模板的页面ID。但由于模板的ID可能会发生变化,因此我不想对任何内容进行硬编码。因此,我不知道如何继续。也许有人可以指出我正确的方向?
add_filter('template_include', 'getTemplate');
function getTemplate($template)
{
global $post;
/*
$pages = array (
'Register' => 2,
'Login' => 3,
'Logout' => 5,
'Activate' => 7,
'Password reset' => 9,
)
*/
$pages = get_option('myPlugin-pages');
$page_id = $pages[$post->post_title];
// Whats next?
return $template;
}
根据下图,左边和左边的粗体文本是插件页面的硬编码名称。所以我的插件需要5页。在右侧有一个下拉列表,其中包含WordPress注册的所有页面的列表。保存这些设置时,会在wp_options
数据库表中添加/更新记录,并使用选项名称myPlugin-pages
。