वर्तमान पृष्ठ संख्या प्राप्त करें


15

ऐसी स्थिति में जहां प्रति पृष्ठ 20 पोस्ट हैं। मैं नीचे कुछ अच्छे पेज लिंक बनाने के लिए वर्तमान पृष्ठ संख्या प्राप्त करना चाहूंगा। आपको वर्तमान पृष्ठ कैसे मिलता है मैंने यह कोशिश की

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

और यह हर पेज पर 1 का पेज 1 कहता है।

कोई विचार,

अनोखा

जवाबों:


23

जब वर्डप्रेस इस तरह पेजिंग का उपयोग कर रहा है, तो एक क्वेरी वैरिएबल है $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()) प्राप्त की है।


8
उपयोग क्यों नहीं $wp_query->max_num_pages?
t31os

1
यह एक ध्वनि विकल्प है। $wp_queryमैं पूरी तरह से भूल गया था का हिस्सा था: - /
Eamann

@Eamann BTW: found_postsसंपत्ति भी है "वर्तमान क्वेरी मापदंडों से मेल खाते हुए कुल पदों की संख्या", wp_count_posts () एक ओवरहेड की तरह है।
jave.web

8

आप इसे कोड की एक पंक्ति के साथ कर सकते हैं, लेकिन फिर, आप अन्य स्थानों में कोड जोड़ना चाह सकते हैं, इसलिए एक फ़ंक्शन आमतौर पर बहुत उपयोगी होता है।

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;
}

नोट: कोड आपके फ़ंक्शंस फ़ाइल में जा सकता है।

बस उस फ़ंक्शन को कॉल करें जहां आप "पेज एक्स ऑफ वाई" संदेश दिखाना चाहते हैं, उदाहरण के लिए।

<?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; ?>

उम्मीद है की वो मदद करदे.. :)


1
अगर मैं होता तो मैं जाँच करता कि $varक्या एक क्वेरी है: if( is_a( $var, 'WP_Query' ) )अगर यह एक क्वेरी ऑब्जेक्ट है तो वापस लौट आएगा।
जॉन पी बलोच

हाँ, यह वास्तव में एक बहुत ही समझदार विचार है,
t31os


0

एक विकल्प जो मेरे सभी संग्रह पृष्ठों पर काम करता है, वह है:

$paged_maxnum = $GLOBALS['wp_query']->max_num_pages;

if ( $paged_maxnum > 1 ) {

    $paged_current_page = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
    $title_page_nrs = 'page nr ' . $paged_current_page . ' of ' . $paged_maxnum;

    echo '<title>' . get_the_archive_title( '', false ) . ' - ' . $title_page_nrs . ' | Your Website Name</title>';

} else {

    echo '<title>' . get_the_archive_title( '', false ) . ' | Your Website Name</title>'; 

}

पहली क्वेरी यदि इसमें एक से अधिक पृष्ठ हैं wp_query, तो वर्तमान पृष्ठ के माध्यम से शीर्षक शीर्षक $paged_current_pageऔर साथ कुल पृष्ठ $title_page_nrs। अन्त में echo। यदि पहले 1 पृष्ठ से ऊपर है, तो elseयदि पृष्ठांकित नहीं है। यह इस प्रकार के लिए मेरे आर्काइव.फैप या टेम्प्लेट में जाता है। यह उत्तपन करता है:

<title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>

या

<title>Taxonomy title | Your Website Name</title>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.