في الحالة التي يكون فيها واحد 20 وظيفة في كل صفحة. أرغب في الحصول على رقم الصفحة الحالي من أجل إنشاء بعض روابط صفحة Nice في الأسفل. كيف يمكنك الحصول على الصفحة الحالية. لقد جربت هذا
<?php echo '(Page '.$page.' of '.$numpages.')'; ?>
وتقول فقط الصفحة 1 من 1 في كل صفحة.
أيه أفكار،
عجيب
عندما يستخدم 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()
).
يمكنك القيام بذلك باستخدام سطر واحد من التعليمات البرمجية ، ولكن مرة أخرى ، قد ترغب في إضافة التعليمات البرمجية في أماكن أخرى ، لذلك عادة ما تكون الوظيفة أكثر فائدة.
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; ?>
امل ان يساعد.. :)
كما ذكر أعلاه - هناك طريقة أكثر بساطة للحصول على الحد الأقصى لعدد الصفحات باستخدام:
global $wp_query
$wp_query->max_num_pages