पृष्ठांकित पोस्ट - संख्याओं और अगले / पिछले लिंक का उपयोग कैसे करें?


17

मैं चाहता हूँ कि wp_link_pages (mutli- पेज पोस्ट) उन संख्याओं से पहले पृष्ठ संख्या, "पिछले" शब्द और उन संख्याओं के बाद "अगला" प्रदर्शित करें। यह इस तरह दिखेगा:

पीछे 1, 2, 3, 4 अगला

मैं एक प्लगइन के बिना यह करने का प्रयास कर रहा हूँ । यहाँ मैंने जो अभी तक कोशिश की है, लेकिन यह काम नहीं कर रहा है, यह केवल संख्या प्रदर्शित कर रहा है।

<?php wp_link_pages(array(
    'before' => '<span style="clear:both; display:block">Pages', 
    'after'  => '</span>',
    'next_or_number'=>'number',
    'previouspagelink' => 'previous',
    'nextpagelink'=> 'Next'
)); ?>

जवाबों:


12

आप जिस फ़ंक्शन का उपयोग कर रहे हैं, wp_link_pagesकोडेक्स में वह सुविधा नहीं है जिसे आप डिफ़ॉल्ट रूप से देख रहे हैं।

हालाँकि, आप इसे कॉलबैक फ़ंक्शन का उपयोग करके आसानी से बढ़ा सकते हैं, जो फ़ंक्शन के तर्कों पर फ़िल्टर के रूप में पंजीकृत है:

add_filter('wp_link_pages_args', 'wp_link_pages_args_prevnext_add');

फ़िल्टर तब उस फ़ंक्शन में उपयोग किए जाने वाले मापदंडों को संशोधित करेगा, जो ऑन-द-फ्लाई में उपयोग किया जाएगा prevऔर गिने लिंक सूची ( ) nextके बाईं और दाईं ओर आउटपुट के लिए अनुपलब्ध लिंक और तर्कों को इंजेक्ट करेगा :next_or_number' => 'number'

/**
 * Add prev and next links to a numbered page link list
 */
function wp_link_pages_args_prevnext_add($args)
{
    global $page, $numpages, $more, $pagenow;

    if (!$args['next_or_number'] == 'next_and_number') 
        return $args; # exit early

    $args['next_or_number'] = 'number'; # keep numbering for the main part
    if (!$more)
        return $args; # exit early

    if($page-1) # there is a previous page
        $args['before'] .= _wp_link_page($page-1)
            . $args['link_before']. $args['previouspagelink'] . $args['link_after'] . '</a>'
        ;

    if ($page<$numpages) # there is a next page
        $args['after'] = _wp_link_page($page+1)
            . $args['link_before'] . ' ' . $args['nextpagelink'] . $args['link_after'] . '</a>'
            . $args['after']
        ;

    return $args;
}

उपयोग:

wp_link_pages(array(
    'before' => '<p>' . __('Pages:'),
    'after' => '</p>',
    'next_or_number' => 'next_and_number', # activate parameter overloading
    'nextpagelink' => __('Next'),
    'previouspagelink' => __('Previous'),
    'pagelink' => '%',
    'echo' => 1 )
);

यदि आपका विषय हमेशा प्रचलित और अगले लिंक का उपयोग करता है, तो आप फ़ंक्शन को थोड़ा बदल सकते हैं ताकि जब भी number(डिफ़ॉल्ट) उपयोग किया जाए तो यह डिफ़ॉल्ट व्यवहार बना सके, इसलिए आपको अपने विषयों में कम लिखने की आवश्यकता है।

यह मखमल ब्लूज़ द्वारा सुझाए गए अनुसार थोड़ा अलग कार्यान्वयन है ।


कुछ टिप्पणियों और शुरुआती रिटर्न को छोड़कर, कार्यान्वयन, विकल्प का नाम और स्पष्टीकरण बिल्कुल मेरे जैसा ही है। क्या मैं कुछ देख रहा हूँ? आपके समाधान से क्या लाभ मिलता है? धन्यवाद।
वेल्वेट ब्लूज़

शायद जब मैं कोड की तुलना करता हूं।
हकरे

जब तक प्रश्न यहाँ है हकरे का समाधान उपलब्ध है। पूर्ण उत्तर (बाहरी स्रोतों पर निर्भर किए बिना समझने योग्य) हमेशा StackExchange पर पसंद किए जाते हैं।
fuxia

6

wp_link_pages()समारोह केवल पता चलता या तो पाठ या संख्या, कभी नहीं दोनों। यदि आप फ़ंक्शन के कोड पर एक नज़र डालते हैं, तो आप देखेंगे कि इसे पास करने के मापदंडों को अलग तरीके से व्यवहार करने का कोई विकल्प नहीं है।

कहा जा रहा है कि, प्लगइन के बिना ऐसा करने के तीन तरीके हैं:

  1. अपने विषय के functions.php फ़ाइल में अपना खुद का फ़ंक्शन बनाएँ। काम करता है, लेकिन तब आपके पास एक नया कार्य होगा।
  2. के 2-3 उदाहरणों का उपयोग करें wp_link_pages()बहुत अक्षम हैक।
  3. एक फिल्टर का उपयोग करें। पसंदीदा विधि । निचे देखो।

मैंने अपने ब्लॉग पर यह करने के लिए एक लेख लिखा है। असल में, मैं wp_link_pages_args फ़िल्टर का उपयोग करता हूं और फ़ंक्शन में एक फ़ंक्शन जोड़ता हूं। Pp फ़ाइल जो एक नया विकल्प 'next_and_number' जोड़ता है।

वर्डप्रेस हैक: wp_link_pages () के साथ प्रदर्शन संख्या और अगला / पिछला लिंक


कूल आदमी ... मैं 4 वैश्विक मूल्यों का उपयोग करके कुछ सोच रहा था, लेकिन कभी भी समाधान के लिए नीचे नहीं गया ... +1!
रुटविक गंगूरडे

3

इसे आज़माएं, आप इसे और कस्टमाइज़ कर सकते हैं। लेकिन यह करना चाहिए जैसा कि आप चाहते थे :-)

function tp_link_pages() {
    global $page, $numpages;

    echo paginate_links( array(
        'format' => get_permalink() . '%#%/',
        'current' => $page,
        'total' => $numpages
    ) );
}

हम कैसे प्रबंधित कर सकते हैं? wordpress.org/support/topic/… या पेज नंबर से पहले डायनामिक-कस्टम-शीर्षक कैसे जोड़ें।
रवि पटेल

1

मुझे नहीं पता कि क्या समस्या है ... क्या आपके पास कोई त्रुटि है?

यह काम करना चाहिए:

<?php $args = array(
    'before'           => '<span style="clear:both; display:block">Pages',
    'after'            => '</span>',
    'nextpagelink'     => __('Next'),
    'previouspagelink' => __('Previous')
); 

wp_link_pages($args);
?> 

जैसे ही नंबर पहले से ही डिफ़ॉल्ट है, आपको next_or_number जोड़ने की आवश्यकता नहीं है।


किसी कारण से यह काम नहीं कर रहा है, लेकिन यह मुझे सही लगता है। मुझे आश्चर्य है कि अगर 3.3 में कोई बदलाव हुआ या मुझे फ़ंक्शन में कुछ पेस्ट करने की आवश्यकता है।
आंद्रेतिमिल्लास

2
हां मैंने यह भी कोशिश की, यह तब काम करता है जब आप सेट next_or_numberकरते हैं next। लेकिन यह केवल 'अगला' और 'पिछला' लिंक दिखाता है, संख्या नहीं!
रुटविक गंगूरडे

1
मुझे दोनों की आवश्यकता है, जैसा कि उदाहरण में दिखाया गया है।
एंड्रेटीमिलास

1

यह कोड पोस्ट के लूप पर है? कोडिंग मेरे लिए ठीक है। यहाँ कैसे उपयोग करने के लिए कोडेक्स उदाहरण है:

<?php

wp_link_pages(array(
    'before' => '<p>' . __('Pages:'),
    'after' => '</p>',
    'next_or_number' => 'number',
    'nextpagelink' => __('Next page'),
    'previouspagelink' => __('Previous page'),
    'pagelink' => '%',
    'echo' => 1 )
);

?>

यह कोड काम नहीं करता है।
अंद्रेतीमिल्स

कोड तय किया गया। माफ़ करना। कुछ विशेषताएँ बिना किसी मूल्य के होती हैं।
कैओ अल्वेस

1
यह उन परिणामों को प्राप्त नहीं करता है जिन्हें मैं अपने प्रश्न में ढूंढ रहा था, यह सिर्फ संख्या दिखाता है।
आंद्रेतिमिलास

0

उत्तर अलग है, लेकिन यह @ 无 but inspired से प्रेरित था जिसने अपने उत्तर को हटाने का फैसला किया। Imho यह सबसे आसान और लचीला समाधान के रूप में सबसे अच्छा है:

समाधान पर निर्भर करता है paginate_links()। केवल यह जानना है कि baseप्रारंभ से यूआरएल %_%होगा, जिसके द्वारा जोड़ा जाएगा, जिसे बाद में बदल दिया जाएगा format। इसलिए जब तक हम उपयोग करते हैं get_permalink().'%_%';, हम जानते हैं कि हम किसी भी स्थिति में वर्तमान पद पर बने रहेंगे। अंदर format, #पेज नंबर से बदल जाता है:

function wpse37256_paginate_paged()
{
    if ( ! $paginate_links = paginate_links( array(
         'type'      => 'array'

        ,'total'     => $GLOBALS['numpages']
        ,'mid_size'  => 1
        ,'end_size'  => 1

        #,'prev_next' => false
        ,'prev_text' => '&laquo; '.__( 'Prev', 'your_textdomain' )
        ,'next_text' => __( 'Next', 'your_textdomain' ).' &raquo;'

        ,'base'      => get_permalink().'%_%'
        ,'format'    => user_trailingslashit( '%#%' )

        ,'current'   => $GLOBALS['page']
    ) ) )
        return;

    echo "<div class='pagination-container'>{$paginate_links}</div>";
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.