WP_Query থেকে পোস্ট আইডস পান?


27

নিম্নলিখিত থেকে কোয়েড করা পোস্ট আইডির একটি অ্যারে পুনরুদ্ধার করার কোনও উপায় কি:

$latest = new WP_Query( array (
    'orderby'               => 'rand',
    'posts_per_page'        => 3
));

if ( $latest -> have_posts() ) : while ( $latest -> have_posts() ) : $latest -> the_post();

    get_template_part( 'templates/content', 'post' );

endwhile; endif; wp_reset_postdata();

অনুসরণ করুন:

আমি wp_list_pluckপোস্ট আইডির একটি অ্যারে পুনরুদ্ধার করতে ব্যবহৃত :

$post_ids = wp_list_pluck( $latest->posts, 'ID' );

তারপরে ইমপ্লিট ফাংশনটি ব্যবহার করে অ্যারেটিকে স্ট্রিংয়ে রূপান্তরিত করুন:

$post_ids_string = implode( ',', $post_ids );

অস্পষ্ট প্রশ্নের জন্য দুঃখিত।


রিক, আপনার প্রশ্ন অস্পষ্ট। কোনও প্রশ্ন পোস্ট করার আগে আপনি কী চান তা খুব পরিষ্কার করুন। এটি অপ্রাসঙ্গিক স্টাফগুলির উত্তর দেওয়া থেকে প্রত্যেককে বাঁচাবে। আপনার আসলে পোস্ট আইডিটি স্ট্রিংয়ে ফিরে আসা দরকার, অ্যারে নয়
পিটার গুসেন

1
আপনার wp_reset_postdataযদি বিবৃতিটির বাইরে না থাকে তবে অন্যথায় আপনি পোস্ট ডেটা পরিবর্তন করতে না পারলে পুনরায় সেট করতে পারেন
টম জে নওয়েল

1
আপনি যদি কেবল আইডি চান, আপনার s_ha_dum এর উত্তর গুরুত্ব সহকারে বিবেচনা করা উচিত। এটি আপনার পরে ফেলে দেওয়া ডাটাবেস থেকে প্রচুর অন্যান্য ডেটা পুনরুদ্ধার না করে আইডি ফিরিয়ে দেবে।
ক্রিস রায়ে

উত্তর:


43

চেষ্টা

$post_ids = wp_list_pluck( $latest->posts, 'ID' );

পড়ুন wp_list_pluck


5
আপনার যদি কেবল পোস্ট আইডির জন্য নয়, তবে প্রতিটি পোস্টের জন্য পুরো ডেটা প্রয়োজন হলে এটি কার্যকর হতে পারে। অন্যথায়, আমি @ এস-হা-ডামের সমাধানটি নিয়ে যেতে চাই।
মারিয়ান

74

fieldsআপনার ক্যোয়ারিতে যুক্তিটি ব্যবহার করুন ।

ক্ষেত্র (স্ট্রিং) - কোন ক্ষেত্রটি ফিরবে। সমস্ত ক্ষেত্র
পূর্বনির্ধারিতভাবে ফিরে আসে । আরও দুটি অপশন রয়েছে: - 'আইডস' - পোস্ট আইডির একটি অ্যারে ফিরিয়ে দিন। - 'আইডি => পিতামাতা' - একটি সহযোগী অ্যারে [প্যারেন্ট => আইডি,…] ফিরিয়ে দিন।

http://codex.wordpress.org/Class_Reference/WP_Query#Return_Fields_Parameter

$latest = new WP_Query( array (
    'orderby'               => 'rand',
    'posts_per_page'        => 3,
    'fields' => 'ids'
));
var_dump($latest->posts);

12
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি আইডির পক্ষে এটির তদন্তের চেয়ে আরও দ্রুত তৈরি করে এবং নতুন অ্যারেতে 'প্লাকিং' (লুপ এবং পুনঃসঞ্জন) করার চেয়ে এটি আরও দ্রুত তৈরি করে।
ব্যারি কোইজ

সম্ভবত আপনার আগে আইডি পাওয়ার দরকার পরে স্বাভাবিক ডাব্লুপিউইউকিউরি ইতিমধ্যে কার্যকর হয়ে গেছে, উদাহরণস্বরূপ যখন আপনি পরে দুটি ক্যোয়ারী মার্জ করেন এবং পূর্ববর্তী ক্যোয়ারী থেকে ফলাফলগুলি বাদ দিতে আইডির প্রয়োজন হয়।
ট্রেইনোসিস

2

@ এস-হা-ডাম থেকে সমাধানটি ব্যবহার করা যদি অর্থনৈতিক হয় তবে আপনার যদি কেবল আইডির দরকার হয় তবে আপনার কাছে পূর্ববর্তী কোয়েরি অবজেক্ট সেট নেই।

এখানে কেন:

switch ( $q['fields'] ) {
    case 'ids':
        $fields = "$wpdb->posts.ID";
        break;
    case 'id=>parent':
        $fields = "$wpdb->posts.ID, $wpdb->posts.post_parent";
        break;
    default:
        $fields = "$wpdb->posts.*";

কারণ ক্ষেত্রে আপনি কেবল 'fields' => 'ids'আইডির চেয়ে বেশি কিছু পাবেন না নির্দিষ্ট করে।

আপনি যদি যান 'fields' => 'id=>parent'(সত্যিই মজাদার লাগে) তবে আপনি প্যারেন্ট আইডিও পাবেন।

'fields'ওয়ার্ডপ্রেস v4.7 হিসাবে আর্গুমেন্ট ব্যবহার করে অন্য কোনও উপায়ে প্রভাব ফেলবে না।

উদাহরণস্বরূপ আপনার কাছে ক্যোয়ারী রয়েছে wp_list_pluckতবে কাজটি করবে।

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