我们创建了一个带有新模板的插件,我们希望挂钩主题函数并返回主插件函数。
我们尝试了:
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是否是更改主题模板的正确过滤器?
感谢您的帮助!
答案 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