WP_QUERY按自定义元筛选

时间:2020-06-17 作者:David Sticker

我尝试创建一个页面,列出具有元值的用户。

我搜索以获取具有网站url或user\\u DescriptionTX的所有用户

1 个回复
最合适的回答,由SO网友:rank 整理而成

您可以使用OR 关系之后,您使用get_users() 函数获取您在查询中选择的所有用户。然后使用将其nicename输出到列表中foreach.

$your_url = \'https://www.yoururl.com\';
$your_description = \'your description\';

$args = array(
\'meta_query\' => array(
    \'relation\' => \'OR\',
    array(
        \'key\'     => \'user_url\',
        \'value\'   => $your_url,
        \'compare\' => \'=\'
    ),
    array(
        \'key\'     => \'description\',
        \'value\'   => $your_description,
        \'compare\' => \'=\'
    )
)
);
$users_array = get_users($args);
echo \'<ul>\';
if ($users_array ) {
  foreach ($users_array as $user) {
    echo \'<li>\'.$user->user_nicename.\'</li>\';
  }
  echo \'</ul>\';
} else {
  echo \'nothing found\';
}
另一种方法是遍历所有用户,检查元值,如果值合适,只输出名称。缺点是您必须检查所有用户,如果用户很多,这可能需要一些时间。因此,我只是将此添加为一个补充,但建议使用元查询。

https://developer.wordpress.org/reference/functions/get_user_meta/

$users = get_users( array( \'fields\' => array( \'ID\',\'user_url\',\'user_nicename\',\'description\' ) ) );
foreach($users as $user){
    $userurl = get_user_meta ( $user->user_url)); // all the values you need
    if ( $userurl == $your_url ) { echo $user->user_nicename.\'<br>\'; }
    // and so on
}
<小时/>

EDIT because of comment:

您可以通过将meta\\u键添加到$args数组来订购:

$args = array(
\'meta_query\' => array(
    \'relation\' => \'OR\',
    array(
        \'key\'     => \'user_url\',
        \'value\'   => $your_url,
        \'compare\' => \'=\'
    ),
    array(
        \'key\'     => \'description\',
        \'value\'   => $your_description,
        \'compare\' => \'=\'
    ),
),
\'orderby\' => \'user_url\'
);
这将适用于所有类型的字段,您只需要meta\\u键和order\\u by。下面是一篇关于如何使用它的好文章:https://rudrastyh.com/wordpress/meta_query.html

$args = array(
    \'meta_key\' => \'license_id\',
    \'orderby\' => \'meta_value\'
);
您还可以选择ASC或DESC顺序:

\'orderby\' => array(
        \'license_id\' => \'ASC\'
    ),

相关推荐

使用wp_Query匹配字符串(标题)时出现问题

我正在修复一个旧网站,我们将两种类型的帖子的标题进行匹配,以将它们链接在一起。有一个wp_query 其中使用\'title\' => get_the_title() 这样做,但它只在某些时候起作用。我的第一个解决方案是使用html_entity_decode(). 这适用于90%的案例,我需要保留此处理来处理这些帖子。然而,我现在遇到了一个特殊的异常值,它的标题如下It’s Raining Outside My Mother’s House.如果我比较== 这两个值在没有预处理的情况下返回true