GET_COMMENTS_NUMBER()与GET_POST_FIELD(‘COMMENT_COUNT’,ID)

时间:2015-05-29 作者:Lea Cohen

当我想显示一篇文章的评论数量时,我在循环中,建议使用哪个函数?

get_post_field( \'comment_count\', get_the_ID() )

get_comments_number()  
这是get_post_field 功能:

/**
 * Retrieve data from a post field based on Post ID.
 *
 * Examples of the post field will be, \'post_type\', \'post_status\', \'post_content\',
 * etc and based off of the post object property or key names.
 *
 * The context values are based off of the taxonomy filter functions and
 * supported values are found within those functions.
 *
 * @since 2.3.0
 *
 * @see sanitize_post_field()
 *
 * @param string      $field   Post field name.
 * @param int|WP_Post $post    Post ID or post object.
 * @param string      $context Optional. How to filter the field. Accepts \'raw\', \'edit\', \'db\',
 *                             or \'display\'. Default \'display\'.
 * @return string The value of the post field on success, empty string on failure.
 */
function get_post_field( $field, $post, $context = \'display\' ) {
    $post = get_post( $post );

    if ( !$post )
        return \'\';

    if ( !isset($post->$field) )
        return \'\';

    return sanitize_post_field($field, $post->$field, $post->ID, $context);
}
还有这个idget_comments_number:

 /**
 * Retrieve the amount of comments a post has.
 *
 * @since 1.5.0
 *
 * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is global $post.
 * @return int The number of comments a post has.
 */
function get_comments_number( $post_id = 0 ) {
    $post = get_post( $post_id );

    if ( ! $post ) {
        $count = 0;
    } else {
        $count = $post->comment_count;
        $post_id = $post->ID;
    }

    /**
     * Filter the returned comment count for a post.
     *
     * @since 1.5.0
     *
     * @param int $count   Number of comments a post has.
     * @param int $post_id Post ID.
     */
    return apply_filters( \'get_comments_number\', $count, $post_id );
}
我可以看出他们有不同之处,但我不知道哪一个更好(如果有的话。也许他们都可以)。

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

它们几乎是一样的。你真的不能说一个更好。一个有一个特定的目的,另一个有一个更一般的目的——那就是它。就我个人而言,我倾向于选择具体的,但这只是我个人的喜好。总之,只需选择要使用的一个。

来自@TheDeadMedic的添加

(…)后者也使用过滤器get_comments_number, 一些插件(如Disqs)可能会使用它来拦截值。对于WordPress,普遍的共识是:如果某个函数有特定的用途,即使有“其他方法”可以使用它,也要使用它。

结束

相关推荐

Can't reply to comments

我无法通过仪表板批准或回复评论。批准只返回注释。快速回复不起作用,它说找不到页面,并以红色显示了一大堆代码,没有什么太明显的。我停用了所有插件,但仍然无法工作。所以我猜测一个文件丢失了,因为它这么说,但没有说丢失了哪一页。下面是作为屏幕截图返回的部分代码。