it-swarm.asia

الحصول على رقم الصفحة الحالية

في الحالة التي يكون فيها واحد 20 وظيفة في كل صفحة. أرغب في الحصول على رقم الصفحة الحالي من أجل إنشاء بعض روابط صفحة Nice في الأسفل. كيف يمكنك الحصول على الصفحة الحالية. لقد جربت هذا

<?php echo '(Page '.$page.' of '.$numpages.')'; ?>

وتقول فقط الصفحة 1 من 1 في كل صفحة.

أيه أفكار،

عجيب

10
Robin I Knight

عندما يستخدم WordPress ترقيم الصفحات مثل هذا ، هناك متغير استعلام $paged يعمل عليه. لذلك الصفحة 1 هي $paged=1 والصفحة 15 $paged=15.

يمكنك الحصول على قيمة هذا المتغير باستخدام الكود التالي:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

الحصول على العدد الإجمالي للصفحات أصعب قليلاً. يجب عليك أولاً حساب جميع المنشورات في قاعدة البيانات. قم بعد ذلك بترشيح المنشورات المنشورة (مقابل المسودات ، المجدول ، المهملات ، إلخ). ثم عليك تقسيم هذا العدد على عدد المشاركات التي تتوقع ظهورها في كل صفحة:

$total_post_count = wp_count_posts();
$published_post_count = $total_post_count->publish;
$total_pages = ceil( $published_post_count / $posts_per_page );

لم أختبر ذلك بعد ، ولكن قد تحتاج إلى جلب $posts_per_page بنفس الطريقة التي جلبت بها $paged (باستخدام get_query_var()).

15
EAMann

يمكنك القيام بذلك باستخدام سطر واحد من التعليمات البرمجية ، ولكن مرة أخرى ، قد ترغب في إضافة التعليمات البرمجية في أماكن أخرى ، لذلك عادة ما تكون الوظيفة أكثر فائدة.

function current_paged( $var = '' ) {
    if( empty( $var ) ) {
        global $wp_query;
        if( !isset( $wp_query->max_num_pages ) )
            return;
        $pages = $wp_query->max_num_pages;
    }
    else {
        global $$var;
            if( !is_a( $$var, 'WP_Query' ) )
                return;
        if( !isset( $$var->max_num_pages ) || !isset( $$var ) )
            return;
        $pages = absint( $$var->max_num_pages );
    }
    if( $pages < 1 )
        return;
    $page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
    echo 'Page ' . $page . ' of ' . $pages;
}

ملاحظة: رمز يمكن أن تذهب إلى ملف الوظائف الخاصة بك.

ما عليك سوى الاتصال بالوظيفة التي تريد أن تظهر فيها رسالة "Page x of y" ، على سبيل المثال.

<?php current_paged(); ?>

إذا كنت بحاجة إلى رمز للعمل مع استعلام مخصص ، أي. واحد قمت بإنشائه باستخدام WP_Query ، ثم قم ببساطة بتمرير اسم المتغير الذي يحمل الاستعلام إلى الوظيفة.

مثال استعلام غير موجود:

$fred = new WP_Query;
$fred->query();
if( $fred->have_posts() ) 
... etc..

الحصول على الصفحة الحالية للاستعلام المخصص باستخدام الوظيفة المنشورة مسبقًا ..

<?php current_paged( 'fred' ); ?>

إذا كنت تريد أن تنسى تمامًا دعم الاستعلام المخصص وكنت تبحث عن سطر واحد ، فيجب أن يفعل ذلك ..

<?php echo 'Page '. ( get_query_var('paged') ? get_query_var('paged') : 1 ) . ' of ' . $wp_query->max_num_pages; ?>

امل ان يساعد.. :)

6
t31os

كما ذكر أعلاه - هناك طريقة أكثر بساطة للحصول على الحد الأقصى لعدد الصفحات باستخدام:

global $wp_query

$wp_query->max_num_pages

0
Alex Standiford