如何从所有作者的帖子中将一个字段相加(获得总和)

时间:2015-11-24 作者:ezkay

使用插件WPeddit 我想数一数epicredvote 将一位作者的所有帖子的得分加在一起,得出总和。

以下是一个显示分数的自定义字段,如“3”或“-2”或其他内容:

echo get_post_meta(get_the_ID(), \'epicredvote\', true );
所以我知道,我必须以某种方式建立一个循环。。。

这是我发现的,但不要知道数字$allscore:

$authorPost = get_posts( array( \'author\' => 1 ) );

foreach( $catPost as $post ); {
    setup_postdata( $post );
    $ids[] = get_the_ID();
}

$idList     = implode( ",", $ids );     //turn the array into a comma delimited list
$meta_key   = \'epicredvote\';
$allscore   = $wpdb->get_var( $wpdb->prepare("
        SELECT sum(meta_value) 
        FROM $wpdb->postmeta 
        WHERE meta_key = %s 
        AND post_id in (" . $idList . ")
    ",
    $meta_key
) );

echo \'user 1 All posts View Count\' . $allscore . \' \';

1 个回复
SO网友:Emily Frouin

首先,您必须在使用全局$wpdb之前声明它。在调用表名时,还需要包含表前缀。

global $wpdb;
$posts_table = $wpdb->prefix . "posts";
$posts_meta_table = $wpdb->prefix . "postmeta";
接下来,根据所需的作者获取帖子id数组(确保您拥有所需作者的id,分配给$author\\u id)。

$authors_posts = $wpdb->get_col($wpdb->prepare("SELECT * FROM ".$posts_table." WHERE post_author = %d", $author_id) );
为SQL生成以逗号分隔的post id数组版本

$comma_delimited = implode(\',\', array_map(\'intval\', $author_posts));
接下来,使用id数组从post元表中获得“epicredvote”的和。注意#投票数存储在meta\\u值列中

$allscore = $wpdb->get_var( $wpdb->prepare(
    "SELECT SUM(meta_value) 
    FROM " .$posts_meta_table . "
    WHERE (meta_key = \'epicredvote\' 
           AND post_id IN %s)"
   , $comma_delimited));

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请