मेरी साइट पर सभी श्रेणियों की पृष्ठवार सूची कैसे बनाएं?


9

मैं पृष्ठांकन के साथ एक संग्रह पृष्ठ प्रदर्शित करना चाहता हूं जो मेरी साइट पर सभी श्रेणियों को सूचीबद्ध करता है, और प्रत्येक लिंक उस विशेष श्रेणी के संग्रह पृष्ठ पर जाता है। तो यह श्रेणी अभिलेखागार के एक संग्रह पृष्ठ की तरह होगा।

मेरी साइट पर प्रत्येक श्रेणी में एक कस्टम थंबनेल है जिसे श्रेणी के पर्मलिंक से मिलान करने के लिए मैन्युअल रूप से बनाया गया है। मेरे पास सभी श्रेणियों को प्रदर्शित करने के लिए पहले से ही एक लेआउट सेटअप है, लेकिन मैं यह कस्टम पेज टेम्पलेट के साथ कर रहा हूं, इसलिए कोई पृष्ठांकन नहीं है। इसका मतलब है कि सभी श्रेणियां एक ही पृष्ठ पर प्रदर्शित होती हैं जो एक परेशान करने वाली घटना है (मेरे पास 100+ श्रेणियां हैं)।

मेरा वर्तमान संग्रह एक विशिष्ट कस्टम पेज टेम्पलेट नाम के साथ सेटअप है page-catlist.phpलेकिन मैं इसे किसी अन्य प्रकार की टेम्पलेट फ़ाइल में बदलने के लिए तैयार हूं।

यहां वर्तमान कोड मैं सभी श्रेणियों को एक पृष्ठ पर आउटपुट करने के लिए उपयोग कर रहा हूं:

$args = array(
  'orderby' => 'name',
  'order' => 'ASC'
);
$cats      = get_categories( $args );
$thm_pre   = 'http://example.com/images/thumbs/';
$thm_end   = '.png';

foreach($cats as $cat) {
    $thumbnail = $thm_pre.$cat->slug.$thm_end;
    // output the loop HTML here
    // basically a list of category names & thumbs 
    // all linked to the cat URL by get_category_link()
}

मैं उम्मीद कर रहा हूं कि ऐसा करने का एक बेहतर तरीका है ताकि मैं प्राकृतिक पेजिनेशन जोड़ सकूं, आदर्श रूप से WP-PageNavi के साथ। किसी भी तरह की सहायता का स्वागत किया जाएगा!


यह बहुत प्रयास करने वाला है;)
सुमित

@ यह वास्तव में बिना किसी प्रयास के बारे में काफी आसान है ;-)
पीटर गोयन ने

जवाबों:


2

शब्दों / श्रेणियों / टैग की सूची बनाना काफी आसान है, और इसे प्राप्त करने के लिए, आपको न्यूनतम जानकारी की आवश्यकता है।

हम पर नजर डालते हैं

  • शर्तों की राशि

  • प्रति पृष्ठ शब्दों की मात्रा

  • get_terms()( बस ध्यान दें, get_terms()संस्करण 4.5 में इसका उपयोग बदल गया है )। आप get_categories()चाहें तो उपयोग भी कर सकते हैं , get_categories()केवल एक आवरण समारोह हैget_terms()

इसलिए पहले हमें शब्दों की मात्रा गिनने की जरूरत है। इसके लिए, हम countपैरामीटर का उपयोग करेंगेget_terms()

ध्यान दें:

  • सभी कोड अप्रयुक्त हैं और कम से कम आवश्यकता होती है

    • PHP 5.4

    • वर्डप्रेस 4.5

आप PHP और वर्डप्रेस के पुराने संस्करणों के साथ काम करने के लिए इसे आसानी से बदल सकते हैं

$taxonomy   = 'category';
$term_count = get_terms( 
    [
        'taxonomy'  => $taxonomy,
        'fields'    => 'count'
    ]
);

अब जब हम शर्तों की मात्रा जानते हैं, तो हम उन शर्तों की मात्रा निर्धारित कर सकते हैं, जिनकी हमें प्रति पृष्ठ आवश्यकता है, 10 बताते हैं

$terms_per_page = 10;

उपरोक्त से, अब हम यह पता लगा सकते हैं कि हमारे पास कितने पृष्ठ होंगे। यहाँ मूल्य को आपके मामले में, पृष्ठ पर अंक लगाने की आवश्यकता होगीwp_pagenavi()

$max_num_pages = ceil( $term_count/$terms_per_page );

इस मामले में, आप $max_num_pagesअपने पृष्ठ पर अंक लगाना कार्य करेंगे

अगला भाग हमारी ऑफसेट गणना करना होगा। हम केवल चीजों को अनुकूलित रखने के लिए प्रति पृष्ठ प्रासंगिक शर्तों को प्राप्त करना चाहते हैं। हमें प्रति पृष्ठ सभी 100+ शब्दों की आवश्यकता नहीं है। केवल आवश्यक 10 को छोड़ना बहुत तेज है। इसलिए, हमें यह जानना होगा कि हम किस पृष्ठ पर हैं, उसी से हैं, हम एक ऑफसेट गणना करेंगे। इसे पास कर दिया जाएगा get_terms(), और बताएगा get_terms()कि प्रारंभिक प्रारंभिक बिंदु से कितने शब्द छोड़ना है।

एक बार ऐसा करने के बाद, हमें get_terms()केवल 10 शर्तों को वापस करना होगा । इस टुकड़े के लिए कोड को देखें

$current_page = get_query_var( 'paged', 1 ); // Change to 'page' for static front page
$offset       = ( $terms_per_page * $current_page ) - $terms_per_page;
$terms        = get_terms(
    [
        'taxonomy' => $taxonomy,
        'order'    => 'ASC',
        'orderby'  => 'name',
        'number'   => $terms_per_page,
        'offset'   => $offset
    ]
);

पेजिंग के अनुसार आपके पास प्रति पेज केवल 10 शब्द होंगे। अब आप अपनी शर्तों के माध्यम से सामान्य रूप से लूप कर सकते हैं

बस एक नोट, आप यह सुनिश्चित करना चाहेंगे कि आपके पास वास्तव में आपके get_terms()फ़ंक्शन से लौटे शब्द हैं ।


कूल;) लेकिन मैंने पेजेशन मार्कअप का निर्माण नहीं किया? wp_pagnavi()वास्तव में इस मामले में काम करेंगे?
सुमित

1
@Sumit इसके साथ काम करेगा next_posts_link(), previous_posts_link()और paginate_links()। यह भी किसी भी पेजिंग समारोह के साथ काम जहां एक पूर्णांक मूल्य कार्य करने के लिए, मेरे पेजिंग समारोह की तरह पारित कर सकते हैं हैं यहाँ । जहाँ तक wp_pagenavi(), मैं नहीं कह सकता हाँ या नहीं, क्योंकि मुझे वास्तव में पता नहीं है कि यह कैसे काम करता है, आपको इसका परीक्षण करना होगा। उपरोक्त मेरे कोड में, $max_num_pagesपृष्ठों की मात्रा रखती है, यह पूर्णांक मान है, यह चर है जिसे आपको
पेजिनेशन की

1
आप और @cjbj दोनों के लिए विशेष धन्यवाद क्योंकि मुझे लगता है कि ये दोनों समाधान निश्चित रूप से काम कर सकते हैं। चारों ओर देखने के बाद मैंने कुछ WP-PageNavi सामान समझाते हुए बताया कि यह कैसे काम कर सकता है ... दी गई यह एक कस्टम पेजिनेशन रोल करना हमेशा संभव है, इसलिए या तो मुझे लगता है कि ये समाधान सबसे अच्छा हैं।
गेलप्रोडक्शन

1

मैं WP-PageNavi से परिचित नहीं हूं, लेकिन मुझे संदेह है कि यह पदों के साथ काम करता है, इसलिए यह आसानी से खराब हो सकता है यदि आप इसे अपने जैसे लूप पर उपयोग करते हैं। शायद सीएसएस अभी भी आपके html को स्टाइल करने में मददगार हो सकता है। वैसे भी, अपने खुद के पेजिनेशन को सेट करना उतना मुश्किल नहीं है।

सबसे पहले, आपको यह जानना होगा कि कितनी श्रेणियां हैं:

$cat_amounts=count($cats);

अगला आपको यह निर्धारित करने की आवश्यकता है कि आपको प्रति पृष्ठ कितने आइटम चाहिए:

$cats_per_page=20;

यह आपको पृष्ठों की राशि देगा:

$max_pages=ceil($cat_amounts/$cats_per_page);

आपके लिए आवश्यक जानकारी का तीसरा टुकड़ा वह पृष्ठ है जिस पर आप हैं। आप query_varअपना url शुरू करके इस पर नज़र रख सकते हैं, फिर कुछ इस तरह दिखेगा:www.example.com/yourcatpage?catpage=2

लूप शुरू करने से पहले, आपको यह जानना होगा कि कौन सा पेज कहा जाता है:

$page_called=get_query_var ( $catpage, 1 )

इससे आप पहले तत्व को प्रदर्शित कर सकते हैं जिसे आप प्रदर्शित करना चाहते हैं:

$first_element=($page_called-1)*$cats_per_page)

और आखिर का:

$last_element=$page_called*$cats_per_page-1;

अंतिम पृष्ठ में $cats_per_pageश्रेणियों से कम हो सकता है , इसलिए अतिरिक्त रूप से आपकी आवश्यकता है:

if ($last_element > $cat_amounts) $last_element = $cat_amounts;

अब, वांछित तत्वों के माध्यम से लूप $cats:

for ($i=$first_element;$i=<$last_element;$i++) {
    //do your thing with $cats[$i];
}

लूप के बाद आप पिछले / अगले टैग या अन्य प्रकार के नेविगेशन उत्पन्न करने के लिए चर का उपयोग कर सकते हैं।

खबरदार है कि मैं वास्तव में इस कोड का परीक्षण नहीं किया था। खाते में लेते समय मैंने कुछ गलतियाँ की हो सकती हैं कि किसी सरणी में पहले तत्व में कुंजी 0 है।


एक बहुत आसान तरीका है जो क्लीनर और तेज है ;-)
पीटर गोयन

दरअसल, मुझे नहीं लगता कि हमारे दृष्टिकोण अलग हैं। आपने MySQL को ऑफ़सेट को हैंडल करने दिया, मैं इसे PHP पर छोड़ता हूँ।
cjbj
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.