仅限当前用户的自定义字段 - Wordpress

时间:2014-12-23 20:01:15

标签: php sql wordpress

我要做的是在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);   ?>

2 个答案:

答案 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

.........
}