আমি আপনার সমস্যাটি ঠিকঠাক পেলে 100% নিশ্চিত নই, তবে ... সম্ভবত এটি আপনাকে সহায়তা করবে ...
মিডিয়া আপলোডার সহজ সাথে সংযুক্তি পায় WP_Query
, যাতে আপনি এর সামগ্রীগুলি সংশোধন করতে অনেকগুলি ফিল্টার ব্যবহার করতে পারেন।
একমাত্র সমস্যা হ'ল আপনি 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');
আপনি যখন পোস্ট (পোস্ট / পৃষ্ঠা / সিপিটি) সম্পাদনার সময় মিডিয়া আপলোডার ডায়ালগটি খুলেন, আপনি কেবলমাত্র এই নির্দিষ্ট পোস্টের সাথে সংযুক্ত ছবিগুলি দেখতে পাবেন।
আপনি যদি এটি কেবলমাত্র একটি নির্দিষ্ট পোস্ট ধরণের জন্য কাজ করতে চান (আসুন পৃষ্ঠাগুলি বলি), আপনাকে 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;
}