একটি নির্দিষ্ট পোস্ট ধরণের সমস্ত পোস্টের শিরোনাম কীভাবে পুনরুদ্ধার করবেন?


9

আমি ক্লায়েন্ট পক্ষের প্রতিধ্বনি করছি এমন একটি ফর্মের মধ্যে একটি নির্বাচিত উপাদানটির মধ্যে শিরোনামগুলি ব্যবহার করতে চাই। এই কাজ করতে সবচেয়ে ভালো উপায় কি হতে পারে?


প্রশ্নটি খুব পরিষ্কার নয়। আপনি কি নির্দিষ্ট পোস্ট ধরণের অধীনে সমস্ত পোস্টের জন্য সমস্ত পোস্ট শিরোনাম ফেরত দেওয়ার চেষ্টা করছেন? এটা কি সঠিক?
আহমেদ ফুয়াদ

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

উত্তর:


11

নির্দিষ্ট পোস্ট ধরণের সমস্ত পোস্ট শিরোনাম অনুসন্ধান করুন

// Function that returns post titles from specific post type as form select element
// returns null if found no results.

function output_projects_list() {
    global $wpdb;

    $custom_post_type = 'page'; // define your custom post type slug here

    // A sql query to return all post titles
    $results = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM {$wpdb->posts} WHERE post_type = %s and post_status = 'publish'", $custom_post_type ), ARRAY_A );

    // Return null if we found no results
    if ( ! $results )
        return;

    // HTML for our select printing post titles as loop
    $output = '<select name="project" id="project">';

    foreach( $results as $index => $post ) {
        $output .= '<option value="' . $post['ID'] . '">' . $post['post_title'] . '</option>';
    }

    $output .= '</select>'; // end of select element

    // get the html
    return $output;
}

// Then in your project just call the function
// Where you want the select form to appear
echo output_projects_list();

3
এটি এমন কোনও কিছুর জন্য অতি জটিল ফাংশন যা ডাব্লুপি_কিউয়ারি ক্লাসে ওয়ার্ডপ্রেস সরবরাহ করে এমন API ব্যবহার করে সহজেই করা যায়। @Ialocin দ্বারা প্রদত্ত উত্তরটি আরও ভাল। এর জন্য আপনার $ wpdb দরকার নেই।
somebodysomewhere

হ্যাঁ এবং মন্তব্যের মূল বক্তব্য কী? :)
আহমেদ ফুয়াদ

1
@ ব্রায়ান far betterঅন্যান্য উত্তর সম্পর্কে কি ? এটি প্রযুক্তিগতভাবে দ্রুততর কারণ আপনি মাইএসকিএল থেকে আপনার কেবলমাত্র ডেটা ধরছেন। অন্য উত্তর (সহজ উত্তর) সমস্ত ডেটা মেমরির মধ্যে গ্রাস করে তারপরে পিএইচপি-তে এটি পরে পরিবর্তন করে। পিএইচপি জন্য আরও কাজ। উভয় গ্রহণযোগ্য তবে প্রত্যেকেরই শক্তি রয়েছে। যদি আপনি মাইএসকিএল জানেন তবে এটি মোটেও জটিল নয়। এটি বেশ সহজ।
জোমো 1984 20

আমি @ জোমোয়ে ১৯৯৮ এর সাথে একমত, এই ফাংশনটি অন্য উত্তরের মতো সহজ নয় ... তবে এটি একটি স্মৃতির দৃষ্টিকোণ থেকে অনেক বেশি দক্ষ। এসকিউএল হ'ল মূল্যবান তথ্য হ্রাস / নিষ্কাশনের জন্য (ডাব্লুপি_লিস্ট_প্লক (...) এর চেয়ে) আরও ভাল জায়গা। হ্যাঁ, এটি কিছুটা জটিল, তবে আপনার সিস্টেম
এটির

13

আপনি - এবং আমার মনে, উচিত - ডেটা পাওয়ার জন্য এপিআই ফাংশনগুলি ব্যবহার করুন।

// query for your post type
$post_type_query  = new WP_Query(  
    array (  
        'post_type'      => 'your-post-type',  
        'posts_per_page' => -1  
    )  
);   
// we need the array of posts
$posts_array      = $post_type_query->posts;   
// create a list with needed information
// the key equals the ID, the value is the post_title
$post_title_array = wp_list_pluck( $posts_array, 'post_title', 'ID' );

2
+1 এর জন্য wp_list_pluck()। আমি সবসময় তার সম্পর্কে ভুলে যাই ...
FACE

আমাকে প্লকের সাথে পরিচয় করানোর জন্য +1! আমি এই আগে কিভাবে দেখা হয়নি ??
শীতল

5

একটি জন্য হায়ারারকিকাল পোস্টের প্রকারের, আমরা বিল্ট-ইন:

wp_dropdown_pages( 
    [ 
        'post_type' => 'page',
        'echo'      => 1, 
        'name'      => 'wpse_titles', 
        'id'        => 'wpse-titles' 
    ] 
);

এটি পোস্ট শিরোনাম এবং অপশন মান হিসাবে পোস্ট আইডি সহ একটি নির্বাচিত উপাদান উত্পন্ন করবে ।

উদাহরণ:

<select name='wpse_titles' id='wpse-titles'>
    <option class="level-0" value="1">AAA</option>
    <option class="level-0" value="2">BBB</option>
    <option class="level-1" value="3">&nbsp;&nbsp;&nbsp;CCC</option>
</select>

এটা তোলে থেকে পরিষ্কার না ডকুমেন্টেশন জন্য wp_dropdown_pages(), কিন্তু এটির জন্য একটি মোড়কের এর get_pages()এবং এটি এর ইনপুট আর্গুমেন্ট সমর্থন করি।


0

আমি যেভাবে সবসময় এরকম কাজ করে চলেছি তা নীচে কিছু ব্যবহার get_postsএবং foreachপছন্দ করা:

// Create our arguments for getting our post
$args = [
  'post_type'=>'custom-slug'
];

// we get an array of posts objects
$posts = get_posts($args);

// start our string
$str = '<select>';
// then we create an option for each post
foreach($posts as $key=>$post){
  $str .= '<option>'.$post->post_title.'</option>';
}
$str .= '</select>';
echo $str;

এটি ভাল কাজ করছে, আপনাকে ধন্যবাদ। আমি বর্তমানে সংরক্ষিত বিকল্পটিতে 'নির্বাচিত' যুক্ত করার চেষ্টা করছি, আমি কোডের বিভিন্ন বিট চেষ্টা করেছি এবং শেষ পর্যন্ত এসেছি, যা আমাকে বিকল্পটি আপডেট করার অনুমতি দিচ্ছে তবে 'নির্বাচিত' যুক্ত হচ্ছে না সঠিক এক। আমি কী ভুল করছি তাতে কোন পয়েন্টার? । $ str। = '<বিকল্প'। ($ পোস্ট == $ মান 2? 'নির্বাচিত = নির্বাচিত': '') ''> '। $ post-> post_title। '</option>';
any
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.