it-swarm.asia

اعرض عددًا مختلفًا من المشاركات في كل صفحة وفقًا للسياق (على سبيل المثال ، الصفحة الرئيسية ، والبحث ، والأرشيف)

في "إعدادات القراءة" ، يوجد مكان لضبط عدد المشاركات المعروضة التي تؤثر على عدد المشاركات المعروضة في جميع السياقات. أود بدلاً من ذلك عرض عدد معين من المنشورات على الصفحة الرئيسية وعدد مختلف من المنشورات على صفحات مثل الأرشفة ونتائج البحث ، إلخ.

reading-settings-blog-pages-show-at-most-per-page

أدرك أنه يمكنني القيام بذلك عن طريق تحرير ملفات السمات وتغيير معلمات الاستعلام هناك ، لكنني أفضل أن يكون الوصول أسهل إلى صفحة إعدادات بسيطة. منذ وقت طويل ، صادفت مكونًا إضافيًا قام بهذا ، لكن لا يمكنني تحديد موقعه الآن.

هل يعرف أي شخص مكون إضافي للقيام بذلك ، أو حتى وظيفة يمكنني وضعها في وظائف. php لإنجاز نفس الشيء؟

21
Doug

أعتقد أن أفضل طريقة للقيام بذلك في مكون إضافي هي تشغيل دالة العينة التالية عند مواجهة ربط الإجراء pre_get_posts. يتوفر كائن $wp_query ، بمعنى أن العلامات الشرطية متاحة ، ولكن قبل أن يحصل WordPress على النشرات ، مما يعني أنك تقوم بتغيير vars للاستعلام قبل الاستعلام الأول الجاري تشغيله ، بدلاً من إضافة استعلام ثانٍ مثل عند استخدام query_posts () في ملف الموضوع.

function custom_posts_per_page($query) {
    if (is_home()) {
        $query->set('posts_per_page', 8);
    }
    if (is_search()) {
        $query->set('posts_per_page', -1);
    }
    if (is_archive()) {
        $query->set('posts_per_page', 25);
    } //endif
} //function

//this adds the function above to the 'pre_get_posts' action     
add_action('pre_get_posts', 'custom_posts_per_page');
23
kevtrout

يمكنك تنفيذ حلقة مخصصة باستخدام query_posts ، وتحديد عدد المنشورات حسب is_home ، is_archive ، إلخ.

مجرد بيان بسيط مع query_posts

0
chrismccoy