首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅适用于当前用户的合计自定义字段- Wordpress

仅适用于当前用户的合计自定义字段- Wordpress
EN

Stack Overflow用户
提问于 2014-12-24 04:01:15
回答 2查看 324关注 0票数 2

我要做的是在Wordpress中为当前登录的用户查询一个自定义字段并求和。

我有一个我的写作公司的网站,让作家登录并声称他们想做的工作。对于每个作业,有一个名为“字数统计”的字段,我在其中输入需要完成的文章的字数统计。为了计算每个作者在一次作业中欠多少钱,我使用word count字段(带有元键"assignment_word_count“),并将其乘以每个作者按单词支付的统一费率。

到目前为止,我放在一起做我想做的事情的最接近的脚本是SQL脚本。不幸的是,它对所有字数统计字段求和,而不是只计算属于当前用户的字段的总和。如果我尝试向代码中添加任何内容以将其限制为当前用户,则总数将降为零。

代码语言:javascript
运行
复制
<?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);
?>

我还发现了另一个脚本,它应该能做我正在寻找的事情,但它告诉我,内爆行是一个无效的参数。

代码语言:javascript
运行
复制
    <?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);   ?>
EN

回答 2

Stack Overflow用户

发布于 2014-12-26 20:30:23

首先,您应该尝试使用硬编码的用户id来修复查询,然后,再尝试如何传递当前用户。

在查询中,右边的字段名称是post_author,而不是author。

票数 0
EN

Stack Overflow用户

发布于 2014-12-26 20:46:13

http://codex.wordpress.org/Function_Reference/wp_get_current_user使用此函数并获取currenet用户id

然后

代码语言:javascript
运行
复制
if(currentuserid=="meabox_user")
{

display the metaboxes

.........
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27627201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档