用插件调用主题函数

时间:2017-08-20 17:37:20

标签: wordpress function templates plugins themes

我们创建了一个带有新模板的插件,我们希望挂钩主题函数并返回主插件函数。

我们尝试了:

add_filter( "page_template", "test" );

function test( $template ) {
    if( 'plugin_name.php' == basename( $template ) )
        $template = WP_PLUGIN_DIR . '/plugin_folder/plugin_name.php';
    return $template;
}

并在主题函数中更改了页面模板,其中插件的主要功能是在插件中运行模板:

add_filter( "page_template", "main_plugin_function" );

page_template是否是更改主题模板的正确过滤器?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我认为您应该使用template_include过滤器,此过滤器挂钩会在WordPress包含预定模板文件之前立即执行。这可以用于覆盖WordPress的默认模板行为。

例如

add_filter( 'template_include', 'portfolio_page_template', 99 );

function portfolio_page_template( $template ) {

    if ( is_page( 'portfolio' )  ) {
        $new_template = locate_template( array( 'portfolio-page-template.php' ) );
        if ( '' != $new_template ) {
            return $new_template;
        }
    }

    return $template;
}

https://codex.wordpress.org/Plugin_API/Filter_Reference/template_include