是否可以通过WP_Query
根据相应的post author?
用例:我有高级订阅者和基本订阅者。我希望在搜索结果页面中,高级订阅者的帖子显示在基本订阅者的帖子之前。
解决此问题的一种方法是添加meta_key
到post, 指示作者的订阅者状态,但每次该用户的状态更改时,我都必须更新该用户的所有帖子。
有没有办法通过直接引用用户元值来实现这一点?
$args = array(
\'post_status\' => \'publish\',
\'post_type\' => \'listing\',
\'meta_key\' => \'???\', // how can I refer to the meta_key of the author of a post ?
\'orderby\' => \'???\',
\'order\' => \'DESC\'
);
$query = new WP_Query($args);
最合适的回答,由SO网友:Pieter Goosen 整理而成
这会给你一个想法,我相信这会帮助你前进。
此查询首先使用WP_User_Query
获取所有注册为高级订阅者和基本订阅者的作者用户。这些用户的订购者meta_value
以便优先显示高级订户。
A.foreach
循环返回每个用户自己的ID,可以将其返回到WP_Query
按以下顺序显示每个用户的帖子meta_value
这是完整的代码。根据需要进行修改
<?php
$args = array(
\'who\' => \'authors\',
\'meta_key\' => \'account\',
\'orderby\' => \'meta_value\',
\'order\' => \'DESC\',
\'meta_query\' => array(
array(
\'key\' => \'account\',
\'value\' => array(1, 2),
)
)
);
// The WP_User_Query
$user_query = new WP_User_Query( $args );
// User Loop
if ( ! empty( $user_query->results ) ) {
foreach ( $user_query->results as $user ) {
$user->ID;
$the_query = new WP_Query( \'author=\' . $user->ID . \'&post_status=publish&post_type=listing\' );
echo \'<p>\' . $user->display_name . \'</p>\';
// The Loop
if ( $the_query->have_posts() ) {
echo \'<ul>\';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo \'<li>\' . get_the_title() . \'</li>\';
}
echo \'</ul>\';
}
/* Restore original Post Data */
wp_reset_postdata();
}
}
?>
SO网友:Matt
如果我理解正确,这就是你要找的:
您需要为每个帖子指定“subscriber\\u status”(这需要是一个自定义元字段)。您还需要为每个作者各自的“subscriber\\u状态”分配一个自定义元字段。
$current_user = wp_get_current_user();
// This represents the custom meta field associated with the user data
$subscriber_status = get_the_author_meta(\'subscriber_status\', $current_user->ID);
// This will query against the custom meta field associated with the post data
$query = new WP_Query([
\'post_type\' => \'listing\',
\'post_status\' => \'publish\',
\'meta_key\' => \'subscriber_status\',
\'meta_value\' => $subscriber_status,
\'order_by\' => \'meta_value\',
\'order\' => \'DESC\',
]);
希望这能帮到你。
More on wp_get_current_user()
More on get_the_author_meta()
More on WP_Query