按作者或POST_PARENT筛选媒体库

时间:2014-07-30 作者:fizzbang

我正在尝试筛选媒体库,以便只有当前用户或正在编辑的帖子的子级上载的媒体项可见。如果这两个条件都是必需的,我做起来没有问题,但我不知道如何执行或查询。

我发现可以为内部查询定义关系,如meta\\u query和tax\\u query等,但不能定义外部查询。(请注意,我已经尝试在法典中广泛阅读,但WordPress的开发对我来说还是很新的,所以我可能遗漏了一些明显的东西。)

就我所知:

add_filter( \'ajax_query_attachments_args\', \'filterMediaLibrary\', 10, 1 );
function filterMediaLibrary($query = array()) {
    $query[\'post_parent\'] = $_POST[\'post_id\'];
    //$query[\'author\'] = get_current_user_id();
    return $query;
}
这两个查询(post\\u parent和author)分别工作。有没有办法将它们结合起来,使其成为一个加法过滤器而不是限制性过滤器?

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

我认为唯一的方法是使用查询过滤器

function wpse156319_posts_where( $where, $query ) {
    global $wpdb;
    $where .= $wpdb->prepare( \' AND (\' . $wpdb->posts . \'.post_parent = %s OR \' . $wpdb->posts . \'.post_author = %s)\', $_POST[\'id\'], get_current_user_id() );
    return $where;
}
您只需在ajax_query_attachments_args 而不是做其他事情

function filterMediaLibrary($query = array()) {
    add_filter( \'posts_where\', \'wpse156319_posts_where\', 10, 2 );
    return $query;
}
由于这是一个一次性的ajax查询,因此不需要删除它。

结束

相关推荐

参数POSTS_PER_PAGE的WP_QUERY问题

我有一个查询,其中显示了捐赠者的姓名以及献礼。它使用日期元查询显示。$args = array( \'post_type\' => \'donors\', \'order_by\' => \'id\', \'order\' => \'DESC\', \'posts_per_page\' => -1, \'date_query\' => array( array( \'