it-swarm.asia

عدد مختلف من المشاركات في كل فئة

لدي فئات مدفوعة الموقع. لدي قالب مختلف لكل فئة. أرغب في تعيين عدد مختلف من المشاركات - مختلفة لكل فئة . بالإضافة إلى أنني أود أن أضيف الروابط السابقة والسابقة المناسبة في كل فئة.

على سبيل المثال في هذا category-1.php أريد 4 مشاركات لكل صفحة:

<?php query_posts('showposts=4'); ?>
<a href="<?=next_posts()?>"> PREVIOUS </a>
<a href="<?=previous_posts()?>"> NEXT </a>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
...
<?php endwhile; endif; ?>

ولكن في هذا المثال ، لا يعمل next_posts() و previous_posts().

5
sydbeat

كما أشار StephenHarris يوجد أيضًا عامل تصفية pre_get_posts .

function hwl_home_pagesize( $query ) 
{
    if ( is_category( 9 ) ) 
    {
        // If you want "posts per page"
        $query->query_vars['posts_per_page'] = 1;
        return;
    }
    if ( is_category( 'movie' ) )
    {
        // If you want "showposts"
        $query->query_vars['showposts'] = 50;
        return;
    }
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );

تم تغيير المثال من مثال الدستور الغذائي.

5
kaiser

يمكنك استخدام pre_get_posts الخطاف (الشرطية متوفرة):

function wpse47875_change_posts_per_page( $query ) {
    //Only alter main query. This only works for 3.3+
    if( ! $query->is_main_query() )
        return;

    if ( is_category('9') ){
        //Display 4 posts for category 1
        $query->set( 'posts_per_page', 4);
    }
}
add_action('pre_get_posts', 'wpse47875_change_posts_per_page', 1);

قد ترغب فقط في تغيير "الاستعلام الرئيسي" ، لذلك فإن الفحص الأول مهم. إذا كنت تستخدم WP <3.3 ، فيمكنك التحقق من ذلك بدلاً من ذلك:

 if( $wp_the_query === $query ){
    //$query is the main query
 }else{
    //$query is *not* the main query
 }
4
Stephen Harris

تحليل طلب العمل

ليس من المؤكد ما إذا كان هذا سيعمل - فقد يكون الشرطية لا يعمل في هذه المرحلة ...

// inside functions.php
function wpse47861_intercept_main_query( $wp )
{
    // default
    $nr_posts = 10; 

    if ( is_category( 'CAT NAME' ) )
        $nr_posts = 4;

    if ( is_category( array( 9 /*Ex. Cat-ID*/, 'CAT NAME A', 'CAT NAME B' ) ) )
        $nr_posts = 6;

    // Modify the main query object
    $wp->query_vars['showposts'] = $nr_posts;

    return $wp;
}
add_filter( 'parse_request', 'wpse47861_intercept_main_query' );

المشاركات مرشح الحد

ستكون هذه هي الفرصة الأخرى ، حيث ربما تكون الشروط الشرطية متوفرة بالفعل هناك.

function wpse47861_intercept_query_limit( $limit )
{
    // default
    $nr_posts = 10; 

    if ( is_category( 'CAT NAME' ) )
        $nr_posts = 4;

    if ( is_category( array( 9 /*Ex. Cat-ID*/, 'CAT NAME A', 'CAT NAME B' ) ) )
        $nr_posts = 6;

    return "LIMIT 0, {$nr_posts}";
}
add_filter( 'posts_limit', 'wpse47861_intercept_query_limit', 9999 );

ملاحظة: لا يتم اختبار كلتا الدالتين. زائد: استخدام واحد أو الآخر. يجب أن يوضع كلاهما في ملف function.php الخاص بك.

1
kaiser

لديّ طريقة مرنة حيث يكون من الممكن تعيين أي قيمة لكل صفحة لكل/أي صفحة موقع woprdpress:

  • وظائف مفتوحة. php لموضوع wp الحالي

  • استخدم smth مثل التالي:

*

add_filter('pre_option_posts_per_page', function($num)
{
    if ($_SERVER['SCRIPT_URL'] == '/category/faq/')
    {
    return 999;
    }

    return $num;
});
0
realmag777

باستخدام query_posts ، لن يعمل ترقيم الصفحات بشكل صحيح ، إلا إذا استخدمت query_posts () في قالب صفحة وقمت بتعيين استعلام "مقسم إلى صفحات" بشكل مناسب: http://codex.wordpress.org/Template_Tags/query_posts

لكن قد يكون من الأسهل استخدام مكون إضافي يسمى Custom Post Limits وترك صفحات الفئة الخاصة بك متماثلة. يمكنك تعيين حدود مختلفة للصفحة الأولى وصفحة لكل فئة. راجع WordPress ›حدود النشر المخصصة" إضافات WordPress

0
markratledge