是否基于帖子元更改帖子模板?

时间:2012-09-15 作者:thomas

我正试图找到一种在插件中使用自定义模板的方法。

如果可能的话,我想避免使用自定义的帖子类型。我搜索了一种方法,将我的主题文件添加到管理员的下拉列表中(在页面属性下),但似乎没有任何效果。

以下是我所拥有的:

add_filter(\'page_template\', \'catch_plugin_template\');

function catch_plugin_template( $template ) {
if( is_page_template(\'page_template.php\') ){
    $template = WP_PLUGIN_DIR . \'/myplugin/page_template.php\';
    return $template;   
}
} 
然而,由于我无法从模板列表中选择“page\\u template.php”,因此它不会启动。关于如何解决这个问题或以其他方式解决这个问题,有什么建议吗?我已经考虑过根据post meta是否有值来更改模板,但我无法实现这一点。

如果我删除if statement 但我希望找到某种可行的替代方案。

1 个回复
SO网友:Shrikant Yadav

尝试以下代码,它也可以与if语句一起使用。

define( \'MY_PLUGIN_PATH\', plugin_dir_path( __FILE__ ) );

function catch_plugin_template( $template ) {

    if( is_page_template(\'page_template.php\') ){

        $template = MY_PLUGIN_PATH . \'/page_template.php\';

    } 

    return $template;   
} 
add_filter(\'template_include\', \'catch_plugin_template\');

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在