检查模板部件,否则筛选内容

时间:2013-08-16 作者:GhostToast

在一个将自己的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); 那么,我想我想知道,在运行时,我还能如何知道这个文件是否存在。

那么,如果提供了模板,运行此过滤器并简单地返回未更改的$内容,计算成本是否很高?还是有更好的方法?

1 个回复
最合适的回答,由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;
}

结束

相关推荐

Apply_Filters()和_Excerpt提供了意外的结果

我觉得我一定错过了一些显而易见的东西,但我似乎无法让WordPress合作。我正在用一个函数生成Facebook OG标签。除了摘录,一切都很好。自get_the_excerpt($post->ID), 有没有其他方法可以创建摘录而不必创建一个全新的循环?我觉得这太过分了。我的第一反应是apply_filters():$description = apply_filters(\'the_excerpt\', get_post($post->ID)->post_content);