ডাব্লুপি_কিউয়ারী পোস্টের সংখ্যা কীভাবে সীমাবদ্ধ করবেন?


25

আমি গুগল এবং ডাব্লুপিএসইতে গবেষণা করে চলেছি এবং কেবলমাত্র আমি বারবার দেখতে পাই তা হ'ল অবহিত করা showposts।

আমি পরিচিত নই WP_Query, আর আমি চিন্তা যে যদি আমি সেট posts_per_pageআমার সীমা (অর্থাত। 5), এবং nopagingথেকে trueতা "ভালো কিছু করার জন্য হয়ে যাবে ঠিক আছে, আমি তোমাকে দিব শুধুমাত্র 5 টি "। তবে এটি কাজ করে না।

এখানে চিত্র বর্ণনা লিখুন

কিভাবে আমি এটি করতে পারব?


মাত্র'posts_per_page=5'
— পিটার গুজন

আমি এটি ব্যবহার করি, তবে এটি সমস্ত পোস্ট খুঁজে পেয়েছে। যদি আমি found_postsসম্পত্তিটিতে অ্যাক্সেস করি তবে এটি 5 এর চেয়ে বেশি সংখ্যক বলে I এটা কি সম্ভব? @ পিটারগুজেন
— এলিয়াসএনএস

আপনার nopagingপরামিতিটি সেট করা উচিত নয়, সেট করে সমস্ত পোস্ট পাওয়ার জন্য সত্যিকার অর্থে
— পিটার গুসেন

@ পিটারগুজন আমি যদি nopagingপ্যারামিটারটি সেট না করি তবে এটি ডিফল্ট হয়ে যায় false, তাই প্রথম পৃষ্ঠাটি 5 টি পোস্ট দেখায়, তবে ক্যোয়ারিতে আরও কিছু রয়েছে। আমি প্রশ্নের একটি ইমেজ যোগ করুন।
— এলিয়াসএনএস

আপনার মন্তব্যগুলি বিভ্রান্তিকর, আপনি কোনও পৃষ্ঠায় প্রদর্শিত পোস্টের পরিমাণ সীমাবদ্ধ করতে বলেছেন 5, এটিই আপনি পান। এখন, আপনি বলেছেন (আপনার পূর্ববর্তী মন্তব্যটি আবার পড়ুন :-)) ক্যোয়ারী আরও ধারণ করে। দয়া করে ব্যাখ্যা করুন. আপনি পোস্ট_পার_পৃষ্ঠা সেট করতে পারবেন না এবং তারপরে একই ক্যোয়ারীতে নো_পেজিং সেটকে সত্য হিসাবে সেট করতে পারবেন না এটি পোস্ট_প্রেজ_পৃষ্ঠা হয় বা নোপপেজিংয়ের সত্য হিসাবে সেট হয়
— পিটার গুসেন

উত্তর:


43

আমি মনে করি আপনি এখন যা করার চেষ্টা করছেন তা আমি বুঝতে পেরেছি। আপনি যখন কোনও কাস্টম ক্যোয়ারী WP_Queryচালিয়েছেন এবং প্রতি পৃষ্ঠায় মাত্র ৫ টি পোস্ট পাওয়ার সীমা নির্ধারণ করবেন, তখন কেবল 5 টি পোস্টটি ক্যোয়ারী দ্বারা পুনরুদ্ধার করা হবে এবং সেই প্রশ্নের মধ্যে কেবল 5 টি পোস্ট থাকবে, তবে পৃষ্ঠাগুলির খাতিরে , কিন্তুWP_Query এখনও পুরো ডাটাবেসের মাধ্যমে চলবে এবং ক্যোয়ারীর মানদণ্ডের সাথে মেলে এমন সমস্ত পোস্ট গণনা করে।

আপনি যখন ক্যোয়ারীর বৈশিষ্ট্য $found_postsএবং $max_num_pagesবৈশিষ্ট্যগুলি দেখেন তখন এটি দেখা যায় । একটি উদাহরণ নেওয়া যাক:

আপনার ডিফল্ট পোস্ট ধরণের সাথে সম্পর্কিত 20 টি পোস্ট রয়েছে post। পৃষ্ঠাগুলি ছাড়াই আপনার কেবল সর্বশেষ 5 টি পোস্ট দরকার। আপনার ক্যোয়ারীটি এমন দেখাচ্ছে

$q = new WP_Query( 'posts_per_page=5' );
  • var_dump( $q->posts ) প্রত্যাশা অনুযায়ী সর্বশেষ 5 টি পোস্ট দেবে
  • echo $q->found_posts তোমাকে দিবে 20
  • echo $q->max_num_pages তোমাকে দিবে 4

এই অতিরিক্ত কাজের প্রভাব কেবলমাত্র কয়েকটি পোস্ট সহ সাইটগুলিতে ন্যূনতম, তবে আপনি শত বা হাজার হাজার পোস্ট সহ কোনও সাইট চালাচ্ছেন তবে এটি ব্যয়বহুল হতে পারে। আপনার যদি সর্বদা 5 টি সর্বশেষ পোস্টের প্রয়োজন হয় তবে এটি সম্পদের অপচয় waste

এমন একটি অননুমোদিত প্যারামিটার বলা হয়েছে no_found_rowsযা বুলিয়ান মান ব্যবহার করে যা আপনার প্রয়োজনীয় ৫ টি পোস্ট সন্ধানের পরে আপনি আপনার ক্যোয়ারী জামিনে ব্যবহার করতে পারেন। এটি WP_Queryকোয়েড করা পোস্টগুলির পরিমাণ পুনরুদ্ধার করার পরে মানদণ্ডের সাথে সম্পর্কিত আর কোনও পোস্ট সন্ধান করতে বাধ্য করবে । এই পরামিতির ইতিমধ্যে মধ্যে গড়ে তুলতে হয় get_posts, তাই সে জন্যই get_postsএকটু চেয়ে দ্রুত WP_Queryযদিও get_postsব্যবহারসমূহWP_Query

উপসংহার

উপসংহারে, আপনি যদি কোনও প্রশ্নের উপর পৃষ্ঠাগুলি ব্যবহার করতে যাচ্ছেন না, আপনার গতিপথটি 'no_found_rows=true'জিনিসগুলিকে গতিময় করা এবং নষ্ট হওয়া সংস্থানগুলিকে বাঁচানো সর্বদা বুদ্ধিমানের কাজ ।


3

প্রশ্নের মন্তব্যে @ পিটার গুজনের সাথে কথোপকথনের পরে, আমি মনে করি আমি প্রশ্নের উত্তর দিতে পারি এবং আমার ভুল ব্যাখ্যা করতে পারি।

মূল found_postsবিষয়টি হ'ল আমাকে বিভ্রান্ত করছে। আমি আপনাকে ধন্যবাদ জানাই যে, এই নম্বরটি পোস্টগুলি পুনরুদ্ধার করা হয়েছে তবে তা নয়। এটি মানদণ্ডের সাথে মেলে এমন পোস্টের সংখ্যা । এটি WP_Queryদুটি অংশের মতো: এটি paginationপরামিতিগুলির জন্য যাচাই করে পোস্টগুলি (সমস্ত) সন্ধানের জন্য এবং অন্যটি সামগ্রী আনার জন্য । সুতরাং আমাদের কাছে এমন $post_countসম্পত্তি রয়েছে যা প্রাপ্ত সংখ্যাগুলির সংখ্যা (কোডেক্স বলেছে The number of posts being displayed), অবশ্যই posts_per_pageপ্যারামিটারের সংখ্যার সমান এবং $postsঅ্যারের সম্পত্তিতে আইটেমের সংখ্যা ।

সুতরাং WP_Queryআমি কোনও ভাবহীন কাজ করছি না ^^

আশা করি এটি অন্যকে সহায়তা করবে!


আমার উত্তর দেখুন। আমি মনে করি আপনি যা বলতে চাইছেন তা আমি বুঝতে পেরেছি :-)
— পিটার গুসেন

হ্যাঁ! আপনি এটি খুব ভালভাবে করেছেন: ডি অবশেষে আমি এটি করার উপায় পেয়েছি, এবং আমি সমস্ত বুঝতে পেরেছি = ডি ধন্যবাদ @ পিটারগুসেন!
— এলিয়াসনস

সম্পন্ন! এটি আমার নিজের উত্তরটি প্রসারিত করেছে
— @

1

ঠিক আছে, আপনাকে 'ব্লগপোস্টগুলি' নামক পোস্ট টাইপ করতে দেয় এবং আপনি সেই পোস্ট ধরণের 5 টি পোস্ট পেতে চান। এখানেই সব পাবেন আপনি যা করতে চান

$args = array(
        'post_type' => 'blog_posts',
        'posts_per_page' => '5',
);


$query = new WP_Query($args);

উপরের ক্যোয়ারী 'ব্লগপোস্টগুলি' টাইপের 5 টি পোস্ট ফিরিয়ে দেবে, এটি যদি কোনও কাস্টম পোস্ট টাইপ না হয় তবে কেবল এই জাতীয় প্রতিস্থাপন করুন 'post_type' => 'posts',যদি আপনি সমস্ত পোস্ট পেতে চান তবে এই জাতীয় প্রতিস্থাপন করুন 'posts_per_page' => '-1',, আরও তথ্যের জন্য ডাব্লুপি কোয়েরি


প্রশ্নে মন্তব্য দেখুন, দয়া করে।
— এলিয়াসএনএস

1

আমি জানি যে @ ব্যবহারকারী1750063 কোডটি উল্লেখ করেছে তবে এটি ব্যবহার করে দেখুন

$args = array (
    'post_type'              => 'custom_post',
    'nopaging'               => false,
    'posts_per_page'         => '5',
    'order'                  => 'DESC',
    'orderby'                => 'ID',
);

$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // display content
    }
} else {
    // display when no posts found
}

wp_reset_postdata();     // Restore original Post Data

idorderbyমান হিসাবে অবৈধ এবং paginationএকটি অবৈধ পরামিতি
— পিটার গুসেন

paginationকোনও বৈধ প্যারামিটার নয়। মানে 'nopaging' => true? যদি হ্যাঁ, তবে আমি সমস্ত পোস্ট পেয়ে যাব। এটাই আমি চাই না। @ পিটারগুজন আমার মনে হয় তার মানে ID।
— এলিয়াসএনএস

অর্ডারবাই অর্ডার প্রদর্শনের জন্য, তাই না? এটি নোপেজিং মান / প্যারামিটারের ক্ষতি করে না। @ পিটারগুজেন কেন আইডি ও অর্ডারবাই অবৈধ? আপনি বিষয়টি পরিষ্কার করতে পারেন?
— শ্রেয়ো গি

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