Wordpress - 使用template_include

时间:2017-09-09 17:30:54

标签: wordpress templates plugins themes override

案例

我正在创建一个带有一些预定义* .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

0 个答案:

没有答案