2012-03-29 22 views
5

मैं कस्टम पोस्ट के साथ एक वर्डप्रेस वेबसाइट विकसित कर रहा हूं जिसे लूप में वर्णानुक्रमित क्रमबद्ध किया गया है।वर्डप्रेस: ​​पिछला_पोस्ट_लिंक/next_post_link वर्णमाला क्रम द्वारा?

<!-- THE ARGS --> 
<?php global $query_string; 
$args = wp_parse_args($query_string); 
$args = array(
    'post_type' => 'custom_post', 
    'orderby' => 'title', 
    'order' => 'ASC', 
    'posts_per_page' => -1, 
    ); ?> 

<!-- THE LOOP --> 
<?php $wp_query = new WP_Query($args); ?> 
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> 
<?php endwhile; ?> 
<?php wp_reset_query(); ?> 

कुछ सामान्य लूप, वहां कुछ भी नहीं है।

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

उत्तर

6

ऐसा लगता है कि this plug-in की तरह करता है आप के बाद, क्या कर रहे हैं, उदा .:

<ul class="pager"> 
     <?php previous_post_link_plus(array('order_by' => 'post_title')); ?> 
     <?php next_post_link_plus(array('order_by' => 'post_title')); ?> 
</ul> 
+0

कि उत्कृष्ट है। बहुत बहुत धन्यवाद, दोस्त। – Cthulhu

+0

यह प्लगइन कुछ वर्षों में अपडेट नहीं किया गया है, लेकिन यह अभी भी बहुत अच्छा काम करता है !!! किसी को बस इसे फिर से जांचना चाहिए ताकि यह wp व्यवस्थापक में इंस्टॉल-सक्षम विकल्पों पर वापस जा सके। मुझे इसे WP साइट से पुनः अपलोड करना पड़ा। –

0

प्लगइन वर्षों में अद्यतन नहीं किया गया है यही कारण है, यकीन नहीं करता है, तो यह अभी भी काम करता है। यदि ऐसा नहीं होता है, तो I came up with a solution जो आपके functions.php में जोड़ा जा सकता है। आशा करता हूँ की ये काम करेगा!

3

आप get_adjacent_post फ़ंक्शन में फ़िल्टर का उपयोग कर ऐसा कर सकते हैं।

अपने functions.php फ़ाइल में, जोड़ें:

function mytheme_previous_post_orderby_name($orderby){ 
    return "ORDER BY p.post_title DESC LIMIT 1"; 
} 
function mytheme_previous_post_where_name(){ 
    global $post, $wpdb; 
    return $wpdb->prepare("WHERE p.post_title < %s AND p.post_type = %s AND (p.post_status = 'publish' OR p.post_status = 'private')", $post->post_title, $post->post_type); 
} 
function mytheme_next_post_orderby_name($orderby){ 
    return "ORDER BY p.post_title ASC LIMIT 1"; 
} 
function mytheme_next_post_where_name(){ 
    global $post, $wpdb; 
    return $wpdb->prepare("WHERE p.post_title > %s AND p.post_type = %s AND (p.post_status = 'publish' OR p.post_status = 'private')", $post->post_title, $post->post_type); 
} 

फिर अपने single.php पेज में फ़िल्टर जोड़ें इससे पहले कि आप फोन पिछली/अगली पोस्ट कार्यों लिंक:

add_filter('get_previous_post_sort', 'mytheme_previous_post_orderby_name', 10, 1); 
add_filter('get_next_post_sort', 'mytheme_next_post_orderby_name', 10, 1); 

add_filter('get_previous_post_where', 'mytheme_previous_post_where_name', 10); 
add_filter('get_next_post_where', 'mytheme_next_post_where_name', 10); 

the_post_navigation(); 

remove_filter('get_previous_post_sort', 'mytheme_previous_post_orderby_name', 10); 
remove_filter('get_next_post_sort', 'mytheme_next_post_orderby_name', 10); 
remove_filter('get_previous_post_where', 'mytheme_previous_post_where_name', 10); 
remove_filter('get_next_post_where', 'mytheme_next_post_where_name', 10); 

आप तो अपने विशिष्ट post_type की जांच करना चाहते हैं, तो आप फ़िल्टर को जोड़ने के चारों ओर एक जोड़ सकते हैं:

if($post->post_type == 'my_custom_post_type'){ 
    add_filter(...); 
    the_post_navigation(); 
    remove_filter(...); 
} 

या, आप सिर्फ post_type विशिष्ट single.php फ़ाइल का उपयोग कर सकते हैं!

यह मेरे लिए महान काम किया, लेकिन कुछ सीमाएँ हो सकता है अगर आप एक ही समय में पदों के साथ इस संयोजन की योजना बना रहे ...

+1

डैनबेलिस के जवाब में एक लापता एस्ट्रोफ़े है। मैं टिप्पणी नहीं कर सकता क्योंकि यह मेरा पहला खाता है और टिप्पणी करने के लिए पर्याप्त प्रतिनिधि नहीं है। remove_filter ('get_previous_post_sort', mytheme_previous_post_orderby_name ', 10); 'Remove_filter ('get_previous_post_sort', 'mytheme_previous_post_orderby_name', 10) होना चाहिए; '(हालांकि उस फिक्स के साथ भी, मैं यह काम नहीं कर सकता) – plumbinator

+0

प्लंबिनेटर- इसे पकड़ने के लिए धन्यवाद। क्या आप करीब आ रहे हैं? अगर आपको कुछ नमूना कोड मिला है तो मुझे एक नज़र डालने में खुशी होगी। – danbrellis

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^