【问题标题】:How to get all custom field values for specific field for custom post type WordPress如何获取自定义帖子类型WordPress的特定字段的所有自定义字段值
【发布时间】:2018-12-24 09:03:38
【问题描述】:

我会尽力为社区解释我的问题。

我在 WordPress 中有一个名为“people”(即 slug)的自定义帖子类型

属于“people”的每个帖子类型都有一个与之关联的高级自定义字段,简称为“number”。字段类型是数字

这是我想要实现的目标:

我想为所有帖子获取 number 的值,例如在 foreach 上,该值适用于所有帖子。

然后我想将所有这些值相加得出一个总数。

我知道如何在 PHP 中处理计算,这不是问题。

您能否就在所有帖子的自定义字段中收集所有数字的最佳方法以及如何存储它们以计算总数的最佳方法提出建议。

谢谢。

【问题讨论】:

  • 您能使用 CPTs 存档吗?对所有帖子运行一个while循环并计算循环内的总数,如$total += $value;(内部)。

标签: php wordpress advanced-custom-fields


【解决方案1】:

您可以使用get_posts()(wordpress 内置方法)从该帖子类型中获取所有帖子,如下所示:

$args = array( 'post_type'        => 'people',
               'posts_per_page'   => -1
             );

$posts = get_posts($args);

然后,您可以像这样对所有帖子进行foreach 循环:

if(!empty($posts))
{
    $total = 0;

    foreach($posts as $p)
    {
       $total += get_field('number', $p->ID);
    }
}

【讨论】:

    【解决方案2】:

    我能想到的一种方法是获取人员帖子类型的所有帖子,然后获取字段数据。

    这种方法是这样的:

    $peoplePosts = get_posts(
                       array(
                           'post_type'      =>  'people',
                           'posts_per_page'  =>  -1
                       ));
    $sum = 0;
    print_r(peoplePosts);
    if (is_array($peoplePosts)) {
        foreach ( $peoplePosts as $peoplePost) {
            $currentVal = get_field('number', $peoplePost->ID);
            $sum = (float) $sum + (float) $currentVal;
        }
    }
    echo $sum;
    

    【讨论】:

    • 谢谢,这成功了!我会指出,您的示例中有 2 个错误,这破坏了我的页面。 1) 在posts_per_page 之后缺少关闭'。 2) 你没有用) 关闭(is_array。然而,在修复这些之后,您的代码运行良好,并且您为我的问题提供了完美的解决方案。谢谢!
    • @T.Sheen 我为代码中的错误道歉。老实说,我现在半睡半醒,但我很高兴它对你有用。干杯队友
    猜你喜欢
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2019-05-12
    • 2014-12-26
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多