কীভাবে ডাব্লুপিওউয়ের ফলাফল থেকে পোস্ট ডেটার অ্যারে পাবেন?


35

ডাব্লুপি_কিউয়ারি পদ্ধতিতে যখন কোনও ক্যোয়ারী চালাবেন তখন আমি একটি বস্তু পেয়েছি। আমি বুঝতে পারি যে আমি তখন স্টাফগুলি প্রদর্শন করতে লুপটি করতে পারি। তবে, আমার লক্ষ্যটি কোনও কিছু প্রদর্শন করা নয়, পরিবর্তে, আমি "ফোরচ ..." এর মতো কিছু করে কিছু পোস্ট ডেটা পেতে চাই। আমি কীভাবে পোস্ট ডেটার অ্যারে পেতে পারি যা আমি লুপ করে ডেটা পেতে পারি?


2
টেমপ্লেট ট্যাগ ব্যবহার করে সরাসরি পোস্ট ডেটা অ্যাক্সেসের মধ্যে মনে রাখার একটি গুরুত্বপূর্ণ পার্থক্য হ'ল ডেটাগুলিতে ফিল্টার প্রয়োগ করা হয় না এবং কিছু কার্যকারিতা ভেঙে যেতে পারে।
মিলো

উত্তর:


73

আপনার ওয়ার্ডপ্রেস কোডেক্সে ডব্লিউপি_কিউয়ের জন্য ফাংশন রেফারেন্সটি পড়তে হবে । সেখানে আপনার দেখতে অনেকগুলি উদাহরণ রয়েছে। আপনি যদি একটি ব্যবহার করে ফলাফল সেটটি লুপ করতে না চান তবে আপনি সম্পত্তিটিতে whileথাকা প্রশ্নের সাথে সমস্ত পোস্ট ফেরত পেতে পারেন ।WP_Queryposts

উদাহরণ স্বরূপ

$query = new WP_Query( array( 'post_type' => 'page' ) );
$posts = $query->posts;

foreach($posts as $post) {
    // Do your stuff, e.g.
    // echo $post->post_name;
}

1
আপনি যে উদাহরণগুলির সাথে লিঙ্ক করেন তার কোনওটিই পোস্টগুলি কীভাবে প্রসেস করা যায় তা প্রদর্শন করে না। সুতরাং এটি উত্তম যে আপনি উত্তর দিয়েছিলেন, আফসোস তাদের ডকুমেন্টেশনে নেই। অন্য টিপ: আপনি যদি কোনও অনন্য পোস্টে কোনও ম্যাচ করছেন তবে আপনি 'posts_per_page'=>1আরগস সহ এই জাতীয় কোনও ফাংশন ব্যবহার করতে পারেন । function wp_queryfirstpost($args) { $q=new WP_Query($args); $pp=$q->get_posts(); $firstpost=false;if ($pp) $firstpost=$pp[0]; wp_reset_postdata(); return $firstpost; }
হেনরিক এরল্যান্ডসন

@ রফলাক্স: আপনি একজন সাধু! Get_the_title / ID / younameit এড়িয়ে যাওয়ার জন্য দুর্দান্ত।
শিশি

8
এর $query->postsপরিবর্তে আপনার ব্যবহার করা উচিত , $query->get_posts()কোয়েরি পার্সিং এবং অতিরিক্ত অপ্রয়োজনীয় ডাটাবেস কোয়েরিগুলির পুনরায়
চলন শুরু করবে

query- $> get_posts (); প্রত্যাশার মতো কাজ করছে না নিশ্চিত নয় কেন তবে এটি ক্যোয়ারীর চেয়ে কম পোস্ট দেয়। : এখানে দেখুন stackoverflow.com/questions/25395299/...
Laxmana

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

11

আসলে, আপনাকে while()লুপ ব্যবহার করতে অস্বীকার করার দরকার নেই । একই WP_Post অবজেক্টটি ইতিমধ্যে postসম্পত্তিতে সঞ্চিত আছে :

        $query = new WP_Query( $args );

        if ( $query->have_posts() ) {

            while ( $query->have_posts() ) {

                $query->the_post();

                // now $query->post is WP_Post Object, use:
                // $query->post->ID, $query->post->post_title, etc.

            }

        }

2
ifঅপ্রয়োজনীয়।
আক্কুমুলেটর

2
না, ifনিরর্থক নয়। এই ক্ষেত্রে এটি সঠিক তবে বেশিরভাগ উত্পাদন পরিস্থিতিতে আপনার কাছে যদি এবং সেই সময়ের মধ্যে সম্পাদন করার কোড থাকে।
Magi182

2
@ Magi182 যা একে একে অপ্রয়োজনীয় করে তোলে, ঠিক এই ক্ষেত্রে। লোকেরা কখন এটি ব্যবহার করতে হবে তা শিখতে হবে।
ফ্রোডবোরলি

4
@ ফ্রয়েডোবর্লি, "লোকেরা" দিয়ে শুরু হওয়া বক্তব্যগুলির দুর্দান্ত জিনিসটি হ'ল আপনি প্রায় সর্বদা "লোককে" ব্যবহার করতে পারবেন না এবং বিবৃতিটি এখনও সত্য হিসাবে পরীক্ষা করে।
Magi182

1
@ Magi182 উপরের কোডটি পরিপূরক করার জন্য কোড লাইন পেয়ে আমি সম্ভবত একশো সুন্দর করতে পারব।
ফ্রোডবোরলি

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