在一个将自己的post类型带到表中的插件中,我希望处理post_meta
通过筛选the_content
- 除非用户提供了自己的single-{post-type}.php
样板
我应该在the_content
滤器还是其他地方?
if ( file_exists( get_stylesheet_directory() . \'/single-event.php\' ) ) {
include( get_stylesheet_directory() . \'/single-event.php\' );
} elseif ( file_exists( get_template_directory() . \'/single-event.php\' ) ) {
include( get_template_directory() . \'/single-event.php\' );
} else {
// filter time
}
如果它不在我的
add_filter(\'the_content\', \'event_filter_function\', 10);
那么,我想我想知道,在运行时,我还能如何知道这个文件是否存在。
那么,如果提供了模板,运行此过滤器并简单地返回未更改的$内容,计算成本是否很高?还是有更好的方法?
最合适的回答,由SO网友:kaiser 整理而成
这里有两段代码片段非常简单:
如果主题中没有模板,请从插件中添加模板
add_filter( \'page_template\', \'wpse110317_append_meta\' );
function wpse110317_append_meta( $template )
{
is_singular()
AND ! file_exists( get_template_directory()."/{$template}" )
AND $template = plugin_dir_path( __FILE__ )."/{$template}";
return $template;
}
在内容中添加内容,直到主题中有一个模板
add_filter( \'page_template\', \'wpse110317_maybe_add_filter\' );
function wpse110317_maybe_add_filter( $template )
{
is_singular()
AND ! file_exists( get_template_directory()."/{$template}" )
AND add_action( \'the_content\', \'wpse110317_append_meta\' );
return $template;
}
function wpse110317_append_meta( $content )
{
// do stuff
return $content;
}