如何从WordPress中的用户ID数组中获取帖子?
问题描述:
我有用户ID的数组:如何从WordPress中的用户ID数组中获取帖子?
$users_id_array = array('1','23','4','7')
我需要显示该阵列的所有帖子。
我已经尝试了几个代码,但它不起作用。
首先我得到使用递归查询的MySQL用户ID的数组,然后我申请一个过滤器上get_posts
。
add_filter('get_posts', 'posts_filter_by_id');
function posts_filter_by_id($query) {
global $wpdb;
$usuarios_visibles= array();
// This is a recursive search for get user's id.
$busca_usuarios_visibles = $wpdb->get_results(
$wpdb->prepare("
SELECT * FROM wpbc_lists_father WHERE id_padre = %d
UNION SELECT * FROM wpbc_lists_father WHERE id_padre IN
(SELECT id_hijo FROM wpbc_lists_father
WHERE id_padre = %d)",
get_current_user_id(), get_current_user_id()
)
);
foreach ($busca_usuarios_visibles as $uv){array_push($usuarios_visibles, $uv->id_hijo);}
array_push($usuarios_visibles, get_current_user_id());
$args = array(
'posts_per_page' => 5,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'author' => $usuarios_visibles,
'author_name' => '',
'post_status' => 'publish',
'suppress_filters' => true
);
$query = get_posts($args);
//$query->set('posts_per_page', 3);
//$query->set('author', $busca_usuarios_visibles);
//$query->set('author', get_current_user_id());
return $query;
}
答
WordPress的这个功能提供了已经。
使用阵列作为一个起点,我们需要把它传递给WP_Query
对象之前将它转换成一个逗号分隔列表。
$users_id_array = array('1','23','4','7');
// Convert to comma separated list
$user_ids = implode(',', $users_id_array);
// Get all posts by these authors
$query = new WP_Query(array(
'post_type' => 'post',
'author' => $user_ids
));
从这里,您可以遍历$query
对象来显示帖子。
或者,你可以使用author__in
代替(它不需要为implode()
得到一个逗号分隔字符串):
$users_id_array = array('1','23','4','7');
$query = new WP_Query(array(
'post_type' => 'post',
'author__in' => $users_id_array
));
答
现在这项工作,非常感谢!你的代码简单而优雅!
这是代码:
add_filter('pre_get_posts', 'posts_filter_by_id');
function posts_filter_by_id($query) {
/* Comment this real code
global $wpdb;
$usuarios_visibles= array();
$busca_usuarios_visibles = $wpdb->get_results(
$wpdb->prepare("
SELECT * FROM wpbc_lists_father WHERE id_padre = %d
UNION SELECT * FROM wpbc_lists_father WHERE id_padre IN
(SELECT id_hijo FROM wpbc_lists_father
WHERE id_padre = %d)",
get_current_user_id(), get_current_user_id()
)
);
foreach ($busca_usuarios_visibles as $uv){array_push($usuarios_visibles, $uv->id_hijo);}
array_push($usuarios_visibles, get_current_user_id()); */
$users_id_array = array('1','23','4','7');
$user_ids = implode(',', $users_id_array);
$query->set('author', $user_ids);
$query->set('posts_per_page', 5);
return $query;
按照SO指引,你应该表现出你的代码/努力你都试过了。 – Nipun
我试过了几个代码,但没有任何结果......最后一个代码: –
[编辑]你的问题包括迄今为止尝试过的一个例子。 –