【问题标题】:get_posts with meta query for a user relation (ACF) not returning any result带有用户关系 (ACF) 元查询的 get_posts 不返回任何结果
【发布时间】:2017-03-28 07:10:53
【问题描述】:

我有一个自定义帖子类型 fvc_members

使用高级自定义字段,我添加了一个名为 user 的新字段,它是与现有用户的关系对象。

我有以下代码来查询当前用户设置为user

的帖子
$args = array(
    'numberposts' => 5,
    'post_type' => 'fvc_members',
    'meta_query' => array(
        array(
            'key'       => 'user',
            'value'     => '"' . get_current_user_id() . '"',
            'compare'   => '='
        )
    )
);

$posts = get_posts($args);

我尝试了不同的选项来写入值(包裹在''中,包裹在“”中,不换行,与 LIKE 比较),但是我找不到让它工作的方法

【问题讨论】:

  • 您确定get_current_user_id() 不为空或为空吗?您是否尝试将其分配给变量 $mCurrentUserId = get_current_user_id()$args 之前,然后是 value => $mCurrentUserID
  • 试试这个 -> $args = array( 'numberposts' => 5, 'post_type' => 'fvc_members', 'meta_query' => array( array( 'meta_key' => 'user', 'meta_value' => get_current_user_id(), ) ) );
  • 我输出 get_current_user_id() 并且我收到了我期望的结果
  • 也试试你所拥有的,但不要使用compare
  • 这行得通!谢谢 - 随时将其作为完整答案发布

标签: php wordpress advanced-custom-fields


【解决方案1】:

尝试$args 而不使用compare 语句。您只需要使其自动成为“比较”语句的键和值:

$args = array(
    'numberposts' => 5,
    'post_type' => 'fvc_members',
    'meta_query' => array(
        array(
            'key'       => 'user',
            'value'     => '"' . get_current_user_id() . '"',
        )
    )
);

【讨论】:

    【解决方案2】:

    如果user 只有一个整数值,那么你不需要 反逗号,并添加比较类型。

    代码如下:

    $args = [
        //...
        //...
        'meta_query' => [
            [
                'key' => 'user',
                'value' => get_current_user_id(),
                'compare' => '=',
                'type' => 'NUMERIC' //<-- add this
            ]
        ]
    ];
    //...
    $posts = get_posts($args);
    

    参考:Custom Field Parameters

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      相关资源
      最近更新 更多