在插件中创建模板文件,例如。template-pluginname.php
, 然后钩住template_include
并告诉WordPress使用它:
function wpse114181_template_include( $template ) {
return ( \'\' != get_query_var( \'plugin_key\' ) ? plugin_dir_path( __FILE__ ) . \'template-plugin.php\' : $template );
}
add_filter( \'template_include\', \'wpse114181_template_include\' );
注意:这要求您使用
add_query_arg()
, 但比依赖
$_REQUEST
直接地
根据此注释编辑:
这段代码唯一的问题是,正如我前面所说的,我想通过插件来正确处理任何主题。因此,如果我自己设计一个模板文件,它看起来不像当前激活的主题页面。php
如果您完全打算覆盖帖子标题和帖子内容,那么您可以使用the_title
和the_content
过滤器:
function wpse114181_filter_the_title( $title ) {
if ( is_page() && \'\' != get_query_var( \'plugin_key\' ) ) {
return \'Your Post Title Here\';
} else {
return $title;
}
}
add_filter( \'the_title\', \'wpse114181_filter_the_title\' );
function wpse114181_filter_the_content( $content ) {
if ( is_page() && \'\' != get_query_var( \'plugin_key\' ) ) {
return \'Your Post Content Here\';
} else {
return $content;
}
}
add_filter( \'the_content\', \'wpse114181_filter_the_content\' );