কেবল সমর্থনের ভিত্তিতে পোস্টের ধরণগুলি পান


9

আমি বিল্টিন এবং কাস্টম পোস্টের উভয় প্রকার সহ একটি তালিকা পুনরুদ্ধার করার চেষ্টা করছি:

$post_types = get_post_types(array(
  'public' => TRUE,
), 'objects');

প্রায় উপরে কাজ করে, কিন্তু আমি বাদ দেওয়ার চাই attachmentএই তালিকা থেকে, শুধুমাত্র যেমন নির্দিষ্ট সমর্থনে পোস্ট ধরনের ফিরে editor, titleএবং thumbnail। এটা কি সম্ভব?

উত্তর:


9

আমি খুঁজে পেয়েছি get_post_types_by_support()এটি প্রত্যাশিত ফলাফল পাওয়ার সমাধান বলে মনে হচ্ছে:

$post_types = get_post_types_by_support(array('title', 'editor', 'thumbnail'));

উপরে ইচ্ছা প্রত্যাবর্তন post, pageএবং কোন কাস্টম পোস্ট টাইপ যে সমর্থন title, editorএবং thumbnail

যেহেতু এটি ব্যক্তিগত পোস্টের প্রকারগুলিও ফেরত দেবে, তাই আমরা তালিকাটি লুপ করতে পারি এবং প্রান্তে টাইপটি দেখতে পাওয়া যায় কিনা তা পরীক্ষা করতে পারি। এটি is_post_type_viewable()ফাংশনটি ব্যবহার করে করা যেতে পারে :

foreach ($post_types as $key => $post_type) {
  if (!is_post_type_viewable($post_type)) {
    unset($post_types[$post_type]);
  }
}

কেবল একটি নোট: এটি বেশিরভাগ ক্ষেত্রে কাজ করবে ।
সাইবমেটা

4

get_post_types()কোনও পোস্ট টাইপের অবজেক্টের ক্ষেত্রগুলি মেলাতে আর্গুমেন্টের অ্যারে গ্রহণ করে । সুতরাং, আপনি এর মতো কিছু করতে পারেন (পরীক্ষিত নয়):

$post_types = get_post_types(array(
  'public'   => true,
  'supports' => array( 'editor', 'title', 'thumbnail' )
), 'objects');

দুর্ভাগ্যক্রমে, আপনি এই ফাংশনটিতে "বাদ দিন" এর মতো কিছু সেট করতে পারবেন না, এবং আপনি কেবল এমন পোস্টের প্রকার পাবেন যা হুবহু সমর্থন করে 'editor', 'title', 'thumbnail', আরও বেশি কিছু হবে না।

অথবা আপনি ব্যবহার করতে পারেন get_post_types_by_support()(কেবল ডাব্লুপি 4.5 এবং তার চেয়ে বেশি এর জন্য Also এছাড়াও, নোট করুন যে আপনি এই কার্যক্রমে নির্দিষ্ট পোস্টের প্রকারগুলি বাদ দিতে পারবেন না, তবে সমর্থনটির নির্দিষ্ট ক্ষেত্রে editor, title, thumbnail, সংযুক্তি পোস্টের ধরণটি বেশিরভাগ ক্ষেত্রে বাদ দেওয়া হবে )।

$post_types = get_post_types_by_support( array( 'editor', 'title', 'thumbnail' ) );

আপনি যদি এমন কিছু চান যা কোনও ক্ষেত্রে কার্যকর হবে তবে আমি আরও বিস্তৃত মানদণ্ডের ভিত্তিতে পোস্টের ধরণগুলি পাওয়ার চেষ্টা করব, তারপরে আপনার নিজের অ্যারে তৈরি করুন, এরকম কিছু:

$_post_types = get_post_types_by_support( array( 'editor', 'title', 'thumbnail' ) );

$post_types = [];

foreach($_post_types as $post_type) {
    // In most cases, attachment post type won't be here, but it can be
    if( $post_type->name !== 'attachment' ) {
        $post_types[] = $post_type;
    }
}

ব্যবহার supportsকরে কি মনে হচ্ছে কাজ হচ্ছে না? আমার কাছে কাস্টম পোস্ট টাইপ রয়েছে যা সমর্থন করে editorএবং আমি যদি ব্যবহার supports => array('editor')করি তবে আমি খালি ফলাফল পাব? আপনার দ্বিতীয় পদ্ধতির যদিও এটি কাজ করে বলে মনে হচ্ছে।
সাইক্লোনকোড

2
দেখে মনে হচ্ছে আমরা এটি get_post_types_by_support()অর্জনের জন্য সমর্থনটি ব্যবহার করতে পারি।
সাইক্লোনকোড

0

ওপি-র প্রশ্নের সহজতম পদ্ধতিটি হবে কেবল ফিরে আসা অ্যারে থেকে 'সংযুক্তি' আনসেট করা;

$post_types = get_post_types(array('public' => TRUE,), 'objects');
unset($post_types['attachment']);

অন্যান্য সমাধানগুলির মতো মার্জিত না হলেও এর কমপক্ষে ওভারহেড রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.