自定义字段值的总和和计数

时间:2017-05-22 作者:Rob

我需要能够将特定自定义字段的所有值相加,然后得到总计数。

例如,我为评论创建了一个自定义帖子类型,每个帖子都有用于五星评级的自定义字段。

我需要的是将星级的所有值相加,然后除以总计数,得到平均值。

3 个回复
SO网友:Rob

谢谢你们的帮助。他们并没有完全放弃工作,但我通过做以下几件事获得了我所需要的结果

$reviewsNum = 0;
$reviewsCount = 0;  
$argsSchema = array( \'post_type\' => \'reviews\', \'posts_per_page\' => -1 );
$loopSchema = new WP_Query( $argsSchema );
$count_reviews = wp_count_posts( \'reviews\' )->publish;
while ( $loopSchema->have_posts() ) : $loopSchema->the_post();
    $reviewrating       =   get_post_meta(get_the_ID(), "_reviewrating", true);
    if (!empty($reviewrating)){
        $reviewsNum += $reviewrating;
    }
endwhile;
$averagerating = $reviewsNum / $count_reviews;

SO网友:TomC

我做了类似的事情,为产品的重量添加了一个自定义字段。这是我的代码:

function epcpt_total_tonnage(){


    $query_args = array(
            \'post_type\' => \'projects\',
            \'post_status\' => \'publish\',
            \'order\' => \'DESC\'
        );


        $total_tonnage = 0;
        $query = new WP_Query($query_args);
        if ( $query->have_posts() ) {
            while( $query->have_posts() ) {
            $query->the_post();
            // do the processing for each post

            $total_tonnage = $total_tonnage + get_field( "tonnage", $post->ID, 123 );
            // $total_tonnage = $total_tonnage + get_post_meta( $post->ID, \'tonnage\', true );
            }
        }
        echo \'<p>Total output tonnage to date: \' . number_format_i18n( $total_tonnage ) . \' Tonnes</p>\';
    }
您可以更改post_type “审阅”,然后修改您的get_field() 适合的值。

SO网友:Wacław Jacek

以下几点应该可以奏效。我使用了get\\u field函数,因为我注意到您在这篇文章中标记了“高级自定义字段”。

function get_average_rating( $post_id ) {
    $rating_sum = 0;

    $reviews_of_post = get_posts( array(
        \'post_type\' => \'NAME_OF_YOUR_REVIEW_POST_TYPE\',
        \'posts_per_page\' => -1,
        \'meta_query\' => array(
            array(
                \'key\' => \'NAME_OF_A_CUSTOM_FIELD_ON_THE_POST_TYPE_CONTAINING_RELATIONSHIP_TO_POST\',
                \'value\' => $post_id,
                \'compare\' => \'=\',
            ),
        ),
    ) );

    if ( empty( $reviews_of_post ) ) {
        return 0; // If there are no reviews, we return 0.
    }

    foreach ( $reviews_of_post as $review ) {
        $rating_sum += get_field( \'NAME_OF_CUSTOM_FIELD_CONTAINING_RATING\', \'post_\' . $review->ID);
    }

    return $rating_sum / count( $reviews_of_post );
}

结束

相关推荐

自定义字段值的总和和计数 - 小码农CODE - 行之有效找到问题解决它

自定义字段值的总和和计数

时间:2017-05-22 作者:Rob

我需要能够将特定自定义字段的所有值相加,然后得到总计数。

例如,我为评论创建了一个自定义帖子类型,每个帖子都有用于五星评级的自定义字段。

我需要的是将星级的所有值相加,然后除以总计数,得到平均值。

3 个回复
SO网友:Rob

谢谢你们的帮助。他们并没有完全放弃工作,但我通过做以下几件事获得了我所需要的结果

$reviewsNum = 0;
$reviewsCount = 0;  
$argsSchema = array( \'post_type\' => \'reviews\', \'posts_per_page\' => -1 );
$loopSchema = new WP_Query( $argsSchema );
$count_reviews = wp_count_posts( \'reviews\' )->publish;
while ( $loopSchema->have_posts() ) : $loopSchema->the_post();
    $reviewrating       =   get_post_meta(get_the_ID(), "_reviewrating", true);
    if (!empty($reviewrating)){
        $reviewsNum += $reviewrating;
    }
endwhile;
$averagerating = $reviewsNum / $count_reviews;

SO网友:TomC

我做了类似的事情,为产品的重量添加了一个自定义字段。这是我的代码:

function epcpt_total_tonnage(){


    $query_args = array(
            \'post_type\' => \'projects\',
            \'post_status\' => \'publish\',
            \'order\' => \'DESC\'
        );


        $total_tonnage = 0;
        $query = new WP_Query($query_args);
        if ( $query->have_posts() ) {
            while( $query->have_posts() ) {
            $query->the_post();
            // do the processing for each post

            $total_tonnage = $total_tonnage + get_field( "tonnage", $post->ID, 123 );
            // $total_tonnage = $total_tonnage + get_post_meta( $post->ID, \'tonnage\', true );
            }
        }
        echo \'<p>Total output tonnage to date: \' . number_format_i18n( $total_tonnage ) . \' Tonnes</p>\';
    }
您可以更改post_type “审阅”,然后修改您的get_field() 适合的值。

SO网友:Wacław Jacek

以下几点应该可以奏效。我使用了get\\u field函数,因为我注意到您在这篇文章中标记了“高级自定义字段”。

function get_average_rating( $post_id ) {
    $rating_sum = 0;

    $reviews_of_post = get_posts( array(
        \'post_type\' => \'NAME_OF_YOUR_REVIEW_POST_TYPE\',
        \'posts_per_page\' => -1,
        \'meta_query\' => array(
            array(
                \'key\' => \'NAME_OF_A_CUSTOM_FIELD_ON_THE_POST_TYPE_CONTAINING_RELATIONSHIP_TO_POST\',
                \'value\' => $post_id,
                \'compare\' => \'=\',
            ),
        ),
    ) );

    if ( empty( $reviews_of_post ) ) {
        return 0; // If there are no reviews, we return 0.
    }

    foreach ( $reviews_of_post as $review ) {
        $rating_sum += get_field( \'NAME_OF_CUSTOM_FIELD_CONTAINING_RATING\', \'post_\' . $review->ID);
    }

    return $rating_sum / count( $reviews_of_post );
}

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: