মিডিয়া লাইব্রেরি - কাস্টম পোস্ট ধরণের চিত্রগুলিকে সীমাবদ্ধ করুন


10

এমন কিছু ওয়ার্ডপ্রেস ম্যাজিক / প্লাগইন রয়েছে যা মিডিয়া লাইব্রেরিতে কেবলমাত্র নির্দিষ্ট কাস্টম পোস্ট ধরণের আপলোড করা চিত্রগুলি দেখায়? আমার কাছে "শিল্পী" নামে একটি কাস্টম পোস্ট টাইপ রয়েছে, আমি চাই যখন প্রশাসক কোনও চিত্র আপলোড / সংযুক্তি করতে ক্লিক করেন, মিডিয়া লাইব্রেরি পপআপ কেবল শিল্পীদের কাস্টম টাইপ করে আপলোড করা চিত্রগুলি দেখায়, পুরো সাইটটি নয়।

আমি কাস্টম ক্ষেত্রগুলি পরিচালনা করার জন্য এসিএফ প্লাগইন এবং কাস্টম পোস্টের প্রকারগুলি ui ব্যবহার করি। এটা কি সম্ভব?


আমি এটি সঠিকভাবে বুঝতে পেরেছি কিনা তা আমাকে চেক করতে দিন ... সুতরাং আপনি মিডিয়া লাইব্রেরি পপআপটি এমনভাবে পরিবর্তন করতে চান যাতে এটি কেবলমাত্র সিপিটি সম্পাদনা করার সময় আপনি যদি এটি খুলেন তবে নির্দিষ্ট সিপিটিতে আপলোড করা চিত্রগুলি দেখায়। আপনি যখন অন্যান্য পোস্টের ধরণগুলি সম্পাদনা করেন তখন সর্বদা এর মতো কাজ করা উচিত?
Krzysiek Dróżdż

এটি করার পিছনে প্রসঙ্গ / যুক্তি কী? আপনি কি শিল্পী বাছাইকারীকে বাস্তবায়নের চেষ্টা করছেন?
টম জে নোয়েল

1
আমার ক্ষেত্রে ব্যবহারের ক্ষেত্রটি একটি বড় ওয়ার্ডপ্রেস সাইট যেখানে প্রত্যেকে একই পোস্টের ধরণের সম্পাদনা করে না। সাইটের সর্বত্র আপলোডগুলির বিপরীতে সর্বাধিক সাম্প্রতিক সম্পর্কিত ফাইল আপলোডগুলি প্রদর্শন করা অনেক পরিশ্রমী (এবং দরকারী), যাতে ফাইলগুলি পুনরায় ব্যবহার করার প্রয়োজন হয় তা সহজেই বাছাই করা যায়। (আমি এই প্রশ্নটি প্রাথমিকভাবে জিজ্ঞাসা করি নি তবে অনুগ্রহ যোগ করেছি। ক্রিজিসাইক বর্ণিত ঠিক তেমন চেষ্টা করার চেষ্টা করছি (উত্তরের জন্য ধন্যবাদ, আমি চেষ্টা করব))
নির্দেশিকা

উত্তর:


9

আমি আপনার সমস্যাটি ঠিকঠাক পেলে 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;
}

আপনার সহায়ক মন্তব্যের জন্য ধন্যবাদ, আমি আমার উত্তরটি মুছলাম যাতে কাউকে বিভ্রান্ত না করে। আপনার উপর +1
jackreichert

0

বৈশিষ্ট্যযুক্ত চিত্রটি সম্পাদনা করার সময় কেবলমাত্র সম্পত্তির চিত্র প্রদর্শন করুন

function my_bind_media_uploader_special_filters($query) 
{

    add_filter('posts_where', 'my_posts_where');
    return $query;
}

add_filter('ajax_query_attachments_args','my_bind_media_uploader_special_filters');

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 && 'property' == $post->post_type) {
            $where .= $wpdb->prepare(" AND id in (select distinct meta_value from 
            wpdb_postmeta where meta_key='fave_property_images' and post_id = $post_id)", 
            $post->post_type);
        }
    }
    return $where;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.