我要做的是在Wordpress中查询并汇总当前登录用户的自定义字段。
我的写作公司有一个网站,可以让作家登录并声称他们想做的工作。对于每个作业,都有一个名为“字数”的字段,我在其中输入需要完成的文章的字数。为了计算每个作者对作业的欠款,我使用单词count字段(使用元键“assignment_word_count”)并将其乘以每个作者每个单词支付的统一费率。
到目前为止,我所做的最接近的脚本是我想要的,它是一个SQL脚本。不幸的是,它总结了所有字数统计字段,而不仅仅是属于当前用户的字数。如果我尝试向代码添加任何内容以将其限制为当前用户,则总数将降至零。
<?php
$now = current_time('mysql');
$sql = "SELECT ";
$sql .= "meta_value FROM $wpdb->posts AS posts, $wpdb->postmeta AS postmeta ";
$sql .= "WHERE posts.ID = postmeta.post_id AND postmeta.meta_key = 'assignment_word_count' ";
$sql .= "AND posts.post_status = 'paid' ";
$sql .= "AND posts.post_date < '$now' ";
$sql .= "AND postmeta.meta_value != '' ";
$results = array(); $values = array();
$results = $wpdb->get_results($sql);
$totalpay = 0;
if (!empty($results)){
foreach ($results as $result) {
$totalpay += $result->meta_value;
}
}
echo 'Total Paid: $' . $totalpay * money_format('0.0040=(#10.2n', $number);
?>
我发现还有另一个脚本应该完全符合我的要求,但它告诉我内爆行是一个无效的参数。
<?php
//get current user
global $current_user;
get_currentuserinfo();
// build query of ids by user
$userPosts = get_posts(array('author' => $current_user->ID, 'post_type'=> 'assignments')); //change this
// loop to create array of ids by user
foreach ($userPosts as $post) {
setup_postdata($post);
$ids[] = get_the_ID();
}
$idList = implode(",", $ids); //tun this crap into a list
$meta_key = 'assignment_word_count';//set this to your custom field meta key
$totalpay = $wpdb->get_col($wpdb->prepare("
SELECT meta_value
FROM $wpdb->postmeta
WHERE meta_key = %s
AND post_id in (" . $idList . ")", $meta_key));
echo 'Total pay: $ ' . array_sum( $totalpay); ?>
答案 0 :(得分:0)
您应首先尝试使用硬编码的用户ID修复查询,然后再次尝试处理当前用户的传递方式。
在查询中,右侧字段名称是post_author,而不是作者。
答案 1 :(得分:0)
http://codex.wordpress.org/Function_Reference/wp_get_current_user使用此函数并获取currenet用户ID
然后
if(currentuserid=="meabox_user")
{
display the metaboxes
.........
}