문제가 제대로 생겼는지 100 % 확신하지 못하지만 ... 아마도 도움이 될 것입니다 ...
미디어 업 로더는 간단한 첨부 파일을 가져 오므로 WP_Query
많은 필터를 사용하여 내용을 수정할 수 있습니다.
유일한 문제는 당신이 사용하는 부모와 같은 특정의 CPT와 쿼리 게시물 수 없다는 것입니다 WP_Query
인수 ... 그래서, 우리는 사용해야 할 것입니다 posts_where
및 posts_join
필터.
미디어 업 로더의 검색어 만 변경하려면을 사용 ajax_query_attachments_args
합니다.
그리고 이것이 결합되었을 때의 모습입니다.
function my_posts_where($where) {
global $wpdb;
$post_id = false;
if ( isset($_POST['post_id']) ) {
$post_id = $_POST['post_id'];
$post = get_post($post_id);
if ( $post ) {
$where .= $wpdb->prepare(" AND my_post_parent.post_type = %s ", $post->post_type);
}
}
return $where;
}
function my_posts_join($join) {
global $wpdb;
$join .= " LEFT JOIN {$wpdb->posts} as my_post_parent ON ({$wpdb->posts}.post_parent = my_post_parent.ID) ";
return $join;
}
function my_bind_media_uploader_special_filters($query) {
add_filter('posts_where', 'my_posts_where');
add_filter('posts_join', 'my_posts_join');
return $query;
}
add_filter('ajax_query_attachments_args', 'my_bind_media_uploader_special_filters');
게시물 (게시물 / 페이지 / CPT)을 편집하는 동안 미디어 업 로더 대화 상자를 열면이 특정 게시물 유형에 첨부 된 이미지 만 표시됩니다.
특정 게시물 유형 (페이지를 말하십시오)에 대해서만 작동하려면 다음과 같이 my_posts_where
기능 조건을 변경해야합니다 .
function my_posts_where($where) {
global $wpdb;
$post_id = false;
if ( isset($_POST['post_id']) ) {
$post_id = $_POST['post_id'];
$post = get_post($post_id);
if ( $post && 'page' == $post->post_type ) { // you can change 'page' to any other post type
$where .= $wpdb->prepare(" AND my_post_parent.post_type = %s ", $post->post_type);
}
}
return $where;
}