【问题标题】:Does "Advanced Custom Fields" taxonomy field support user pages?“高级自定义字段”分类字段是否支持用户页面?
【发布时间】:2015-09-21 00:39:04
【问题描述】:

我有一个用户页面的“分类”自定义字段。我想构建一个由该字段过滤的查询。它适用于普通查询,但不适用于用户查询,我做错了吗?

<?php
    $args = array(
        'key' => 'fruits', 
        'value' => 'apple'
);

// The Query
    $user_query = new WP_User_Query( $args );

// User Loop
    if ( ! empty( $user_query->results ) ) {
        foreach ( $user_query->results as $user ) {
        echo $user->display_name;
        }
    } else {
    echo 'No users found.';
}
?>

【问题讨论】:

  • 自定义字段参数 显示与某个自定义字段关联的用户。自 3.2.0 以来,WP_Meta_Query 类用于解析这部分查询,因此请检查该类的文档以获取完整的最新参数列表。 meta_key (string) - 自定义字段键。 meta_value (string) - 自定义字段值。
  • Vrajesh 是正确答案 (y)

标签: wordpress foreach advanced-custom-fields


【解决方案1】:

改用get_users

$users = get_users(array(
    'meta_key' => 'fruits',
    'meta_value' => 'apple'
));
var_export($users);

Wordpress 代码:get_users()

编辑:

经过一番研究,事实证明get_users() 只是WP_user_query 的包装,所以切换到这个函数不会有任何区别。

但是...您是否注意到在我的回答(和 vrajesh')中,我们已将您的 key 替换为 meta_key,并将 value 替换为 meta_value ... 它们在 @987654330 中明确定义@class,所以如果它们没有任何意义,我会感到惊讶。

如果你碰巧使用了原来的 $args(我猜这实际上并不是指水果和苹果),那么这很可能就是你什么都得不到的解释。

【讨论】:

  • 运气不好。我认为用户不支持分类法。
  • "meta_key" 适用于用户,但不适用于仅适用于普通字段的分类字段。
  • 好吧,我现在放弃了。如果它仍未解决,我可能会在我实际运行一些测试时试一试,但显然在黑暗中刺伤是没有回报的:p 如果使用内置查询功能确实不可能,你总是可以求助于直接数据库查询,虽然很明显它会更复杂,也更不适应未来。
  • 是的,对于直接数据库查询,我必须致电我的后端程序员;)
【解决方案2】:

试试这个:

$args = array( 'meta_key' => 'fruits', 'meta_value' => 'apple','compare' => '=');

【讨论】:

  • 我已经尝试过了,但它不起作用(“未找到用户。”)。这适用于普通 ACF 字段,但不适用于“分类”字段。
  • 同样的问题。顺便提一句。与什么比较?
  • @HenningFischer compare 是比较运算符(即meta_key 需要为=meta_value)。见Meta_query compare operator explanation
  • 好的,但在普通(非用户)查询中,无需“比较”即可。
  • 你有解决方案吗?..:)
【解决方案3】:

使用 WP_Query 而不是 WP_User_Query。 WP_User_Query 用于从用户和用户元表中检索数据。据我了解,您正在从帖子和 postmeta 表中检索数据。 Class Reference/WP User QueryClass Reference/WP Query

更新:

试试这个

<?php
     $args = array(
      'meta_query' => array(
        'key' => 'fruits', 
        'value' => 'apple',
        'compare' => '='
      )  
 );

// The Query
   $user_query = new WP_User_Query( $args );

// User Loop
    if ( ! empty( $user_query->results ) ) {
        foreach ( $user_query->results as $user ) {
           echo $user->display_name;
         }
    } else {
    echo 'No users found.';
 }
?>

【讨论】:

  • 不,正如我所说,这是一个用户查询,因为分类自定义字段是针对用户的。
  • 使用更新后的循环,$args 将被忽略并显示所有用户。
  • 我开始认为不支持分类 ACF 字段。
  • 这可能是原因。 WP_User_Query 将只查看 user 和 usermeta 表。 ACF 分类法与用户表无关。
猜你喜欢
  • 2015-05-27
  • 2016-06-28
  • 2021-02-18
  • 2017-08-28
  • 1970-01-01
  • 2017-12-16
  • 2018-08-06
  • 2013-11-25
  • 2022-12-05
相关资源
最近更新 更多