计数具有特定元值的帖子

时间:2014-06-18 作者:user12920

如何仅统计具有特定自定义元字段值的帖子?

$productCount = wp_count_posts(\'product\');
echo $productCount->publish;
这给了我所有帖子的总数。

我怎样才能知道这些帖子中有多少是自定义的元值cat?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

wordpress中没有默认/本机函数来计算特定元值的帖子数。wp_count_posts 仅根据职位类型统计职位数量

这里可能有用WP_Query 创建自定义查询以获取具有该特定元值的所有帖子,然后使用$wp_query->found_posts 以获取post计数。

这应该可以

 $query = new WP_Query( array( \'meta_key\' => \'color\', \'meta_value\' => \'blue\' ) );

   echo $query->found_posts;

SO网友:tazziedave

最好的方法可能是:

global $wpdb;
$count = $wpdb->get_row("SELECT COUNT(*) AS THE_COUNT FROM $wpdb->postmeta WHERE (meta_key = \'color\' AND meta_value = \'blue\')");

return $count->THE_COUNT;
以下是一系列函数,使其更易于使用:

    /**
     * Returns the number of posts a particular metakey is used for.
     * Optionally qualified by a specific value or values in an array of the meta key.
     *
     * @param string            $key
     * @param null|string|array $value
     *
     * @return mixed
     */
    function get_meta_count( $key, $value = null) {
        global $wpdb;

        $where = get_meta_where($key, $value);
        $count = $wpdb->get_row("SELECT COUNT(*) AS THE_COUNT FROM $wpdb->postmeta WHERE $where");
        return $count->THE_COUNT;
    }

    /**
     * Returns the postmeta records for a particular metakey.
     * Optionally qualified by a specific value or values in an array of the meta key.
     *
     * @param string            $key
     * @param null|string|array $value
     *
     * @return mixed
     */
    function get_meta ( $key, $value = null) {
        global $wpdb;
        $where = get_meta_where($key, $value);
        return $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE $where");
    }

    /**
     * Returns the where string for a metakey query
     *
     * @param string            $key
     * @param null|string|array $value
     *
     * @return string
     */
    function get_meta_where( $key, $value) {
        $where = "meta_key = \'$key\'";

        if (null !== $value) {
            if (\\is_array($value)) {
                \\array_walk($value,\'add_quote\');
                $in = \\implode(\',\', $value);  // Seperate values with a comma
                $where .= " AND meta_value IN ($in)";
            } else {
                $where .= " AND meta_value = \'$value\'";
            }
        }

        return $where;
    }

    /**
     * Puts quotes around each value in an array when used as a callback function
     *
     * @param $value
     * @param $key
     */
    function add_quote( &$value, $key)
    {
        $value = "\'$value\'";
    }

结束

相关推荐

Average Account Age

我想看看是否有办法找到通过我的wordpress站点访问的用户帐户的平均年龄,不包括管理员帐户的年龄。我说的年龄不是指他们的实际出生年龄,而是指他们账户的使用期限。有没有一种简单的方法来确定这一点?