पेजिंग में आपको एक पूर्णांक की आवश्यकता क्यों है?


17

paginate_linksकोडेक्स समारोह संदर्भ कुछ नमूना कोड है कि नेट पर सब फिर से पोस्ट किया जा रहा है है।

इसमें एक खंड है जिसे चर कहा जाता है $big = 999999999; // need an unlikely integer:

echo paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages
) );

और फ़ंक्शन str_replaceमें उपयोग किया जाता है echo paginate_links

क्या यह एनकैप्सुलेशन का कोई रूप है?

जवाबों:


16

ध्यान दें get_pagenum_link( $big ): यह पहले पैरामीटर में प्रदान की गई संख्या के आधार पर एक URL ( लिंक नहीं ) बनाएगा ।

उस फ़ंक्शन का उपयोग URL के लिए मूल पैटर्न प्राप्त करने के लिए किया जाता है, और उच्च पूर्णांक का उपयोग यहां किया जाता है, क्योंकि:

  1. आपको पूर्णांक को तर्क के रूप में प्रदान करना होगा।
  2. परिणामी URL को फ़िल्टर apply_filters('get_pagenum_link', $result)किया गया है और उसे प्लगइन्स द्वारा बदला जा सकता है। मौजूदा पृष्ठों से मेल खाते संख्याओं के लिए यह जोखिम थोड़ा अधिक है , उदाहरण के लिए जब कोई उप-पृष्ठों के लिए अलग-अलग शीर्षक लागू करता है।

तो यह सिर्फ एक ... गंदे सम्मेलन, अन्य प्लगइन्स के लिए एक संकेत है: कृपया इसे न बदलें! मुझे लगता है कि PHP_INT_MAXबेहतर होता, लेकिन फिर भी बदसूरत। और मुझे आश्चर्य है कि कितने प्लगइन डेवलपर्स जानते हैं कि।

इसके बाद नंबर को जरूरत पड़ने वाले प्लेसहोल्डर से बदल दिया जाता है paginate_links()

आप यहां जो देख रहे हैं वह अधूरा एपीआई है । इस उदाहरण से कुछ सीखने की कोशिश करें - अधूरा एपीआई जारी न करें, या आपके डॉक्स शर्मनाक दिखेंगे। :)


मैं मानता हूं कि PHP_INT_MAX बेहतर IMO होता, लेकिन मुझे उस समय अधिक भ्रमित करता। मुझे वास्तव में आपका स्पष्टीकरण पसंद है, यह पुष्टि करता है कि मैं सही लाइनों के साथ सोच रहा था। मैं अभी कोई धारणा नहीं बनाना चाहता था।
जेसन ग्रीन

तो क्या इसका उपयोग केवल मौजूदा पृष्ठ संख्या get_pagenum_linkको प्रभावित करने वाले फ़िल्टर के मामले में किया जाता है ? (चूंकि वैसे भी डिफ़ॉल्ट रूप से paginate_links()उपयोग get_pagenum_link()होता है)। मेरे लिए एक चरम बढ़त मामले की तरह लगता है, जब तक कि मैं कुछ याद नहीं कर रहा हूं?
काई

@ कै से लगता है कि यह एक बार वास्तविक समस्या रही है। लंबे समय से बनाए रखा कोड आधार किनारे के मामलों के लिए वर्कअराउंड से भरा होता है।
FUXIA

ऐसा लगता है paginate_links() कि हमेशा get_pagenum_link()डिफ़ॉल्ट रूप से उपयोग नहीं किया गया था, इसलिए मैं सोच रहा हूं कि क्या यह पहले से एक सम्मेलन है और अगर 'संभावना पूर्णांक' की वास्तव में आवश्यकता है (या यदि वास्तविक वर्कअराउंड बस था get_pagenum_link())?
काई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.