从某些页面中排除自定义函数内容

时间:2012-11-04 作者:jmreicha

我添加了一个小的自定义函数,在我的函数中的每个博客条目的底部显示一个小的作者简介。我正在使用的当前主题中的php文件。到目前为止,它工作得很好,但我注意到该功能正在应用于每个页面,例如,它显示在我的“联系人”页面的底部。

下面是我所说的一个例子,可以直观地看到正在发生的事情:

enter image description here

以下是我在函数中使用的代码:

function get_author_bio ($content=\'\'){

    global $post;

    $post_author_name=get_the_author_meta("display_name");
    $post_author_description=get_the_author_meta("description");
    $html.="<div class=\'author_text\'>\\n";
    $html.="<h4>About the Author: <span>".$post_author_name."</span></h4>\\n";
    $html.= $post_author_description."\\n";
    $html.="</div>\\n";
    $html.="<div class=\'clear\'></div>\\n";
    $content .= $html;

    return $content;
}

add_filter(\'the_content\', \'get_author_bio\');
如何使此功能仅应用于我的博客文章主页,而不应用于我网站上的其他页面?

希望这足以帮助我,但我可以更新这些问题,以提供您可能需要的任何其他信息。谢谢

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

检查页面类型:

function get_author_bio ($content=\'\'){

    if ( ! is_single() ) // not a blog post, stop immediately
    {
        return $content;
    }

    global $post; // continue with regular work
了解这些检查函数的最简单方法是查看函数get_body_class(). 以下是最重要的:

is_rtl()
is_front_page()
is_home()
is_archive()
is_date()
is_search()
is_paged() 
is_attachment() 
is_404() 
is_single() 
is_page() 
is_singular() // same as is_page() and is_single()
is_attachment() 
is_archive() 
is_post_type_archive() 
is_author() 
is_category() 
is_tag() 
is_tax() 
is_user_logged_in() 
is_admin_bar_showing() 
您甚至可以将它们组合在一起:

// search results, not the first page
if ( is_search() and is_paged() )

// attachment and user has probably a profile
if ( is_attachment() and is_user_logged_in() ) 
其中一些函数接受参数以限制结果:

// contact page only
if ( is_page( \'contact\' ) )

// this post was written by the tooth fairy
if ( is_author( \'tooth-fairy\' ) )

结束

相关推荐

Ajax, filters and shortcodes

您能理解为什么我无法在ajax帖子包含中应用短代码过滤器吗?让我更好地解释一下:我已经设法在另一篇文章中包含一篇文章,通过admin-ajax.php, 正如著名的5 tips.很明显,我不想显示快捷码标签,也不想去掉它们,所以我在回应do_shortcode($post->post_content)此时,虽然我正在运行“Cleaner gallery”插件,但post gallery会被渲染,但未被过滤add_filter( \'post_gallery\', \'cleaner_gallery\