कस्टम वर्गीकरण सूची का क्रम बदलें


15

डिफ़ॉल्ट वर्डप्रेस द्वारा कस्टम टैक्सोनॉमी (इस मामले में टैग के रूप में) वर्णमाला के अनुसार ऑर्डर करते हैं न कि वे टैग बॉक्स में दर्ज किए गए आदेश द्वारा।

क्या किसी व्यक्ति को कस्टम टैक्सोनॉमी दिखाने के तरीके से पता चलता है कि वे पोस्ट एडिट स्क्रीन में दर्ज किए गए थे?

प्रश्न में यूआरएल है: http://granadatheater.com/

GGW (Goes Good With) कलाकार इस समय वर्णमाला के क्रम में हैं और वे चाहते हैं कि यह बदल जाए ताकि उन्हें उसी तरह से आदेश दिया जाए जैसे वे दर्ज किए गए थे।

तो अगर यह दर्ज करें कलाकार 1, आर्टिस्ट 3, आर्टिस्ट 2 यही है कि इसे साइट के सामने कैसे दिखाना चाहिए।


आप प्रति पोस्ट बेस पर ऑर्डर दर्ज करने का मतलब है?
हकरे

शायद आईडी द्वारा आदेश?
22

सबसे अच्छा मैं बता सकता हूं कि वे वर्णानुक्रम में प्रदर्शित किए जाते हैं, इसलिए मैं शायद सवाल नहीं समझ रहा हूं। आप वास्तव में यह कहां चाहते हैं? क्या आप एक स्क्रीनशॉट और एक उदाहरण URL दे सकते हैं जहाँ आप पाएंगे कि आप क्या बदलना चाहते हैं?
माइकस्किंकेल

जवाबों:


0

यह संभव नहीं है "बॉक्स से बाहर" ...

डिफ़ॉल्ट 'ऑर्डरबी' विकल्प हैं (आरोही या अवरोही)

  • आईडी का नाम
  • चूक
  • काउंटर
  • गिनती
  • term_group

ये सभी कोडेक्स में विस्तृत हैं।

-

कहा कि यहाँ कुछ चतुर देवियाँ और मर्द हैं। अगर कोई इसे हल कर सकता है, तो इन लोगों में से एक मुझे यकीन है!


8

काफी खोज और व्यापक परीक्षणों के बाद, मुझे उत्तर मिला।

इस कोड को अपनी थीम के functions.php में जोड़ें:

function set_the_terms_in_order ( $terms, $id, $taxonomy ) {
    $terms = wp_cache_get( $id, "{$taxonomy}_relationships_sorted" );
    if ( false === $terms ) {
        $terms = wp_get_object_terms( $id, $taxonomy, array( 'orderby' => 'term_order' ) );
        wp_cache_add($id, $terms, $taxonomy . '_relationships_sorted');
    }
    return $terms;
}
add_filter( 'get_the_terms', 'set_the_terms_in_order' , 10, 4 );

function do_the_terms_in_order () {
    global $wp_taxonomies;  //fixed missing semicolon
    // the following relates to tags, but you can add more lines like this for any taxonomy
    $wp_taxonomies['post_tag']->sort = true;
    $wp_taxonomies['post_tag']->args = array( 'orderby' => 'term_order' );    
}
add_action( 'init', 'do_the_terms_in_order');

(क्रेडिट: यह आधारित है - लेकिन बेहतर है - http://wordpress.kdari.net/2011/07/listing-tags-in-custom-order.html )


क्या यह काम तब भी करता है जब एडमिन उनका कैश क्लियर करता है? टर्म ऑर्डर के लिए कैश पर निर्भर होने के लिए अनिश्चित लगता है।
PBwebD

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

1
@BiranitGoren ने मुझे इस विषय को फिर से शुरू करने के लिए माफ कर दिया, लेकिन सभी उत्तरों में केंद्र की चिंता यह है कि term_orderयह मूल रूप से समर्थित नहीं है। तो मैं सोच रहा हूँ, आपके कोड उदाहरण में, कहाँ term_orderपरिभाषित किया गया है ताकि आप उस पर हल कर सकें?
गिगीसैन

2
@GigiSan यह वास्तव में मूल रूप से समर्थित है, लेकिन बस अप्रयुक्त है। Wordpress के मूल में term_order है - लेकिन डिफ़ॉल्ट रूप से इसका उपयोग नहीं करता है। इसलिए, आपको इसे परिभाषित करने की आवश्यकता नहीं है, यह पहले से ही परिभाषित है। (इसे trac पर देखें: core.trac.wordpress.org/ticket/9547 )
बिरनीत गोरेन

2

मैं एक कस्टम टैक्सोनॉमी की वर्णमाला के बच्चे की शर्तों का जवाब खोजने के लिए संघर्ष कर रहा हूं ... मैं कोर WP फाइलों को बदलने की सिफारिश नहीं करूंगा, इसलिए यहां मैंने अपने टैक्सोनॉमी.php फ़ाइल को कस्टम टैक्सोनॉमी विवरणों को सूचीबद्ध करने के लिए लिंक के साथ जोड़ा। वर्णमाला क्रम में बच्चे की शर्तों के लिए। अपनी आवश्यकताओं के अनुरूप संशोधित करें, मुझे आशा है कि यह किसी को वहाँ से बाहर निकालने में मदद करता है।

// Get Main Taxonomy for use in template file
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$termTaxonomy = $term->taxonomy;

<h1><?php echo apply_filters( 'the_title', $term->name ); ?></h1>

<?php // test for description before unleashing a div 
if ( !empty( $term->description ) ): 
  echo '<div class="description">';
  echo $term->description;
  echo '</div>;
endif; ?>

// Now get children terms, using get_term & 'child_of' get's us alphabetical order
$termchildren = get_terms( $termTaxonomy, array(
  'child_of'     => $term->term_id,
  'hierarchical' => 0,
  'fields'       => 'ids',
  'hide_empty'   => 0
) );

// Make an alphabetical linked list
echo '<ul>';
foreach ($termchildren as $child) {
  $term = get_term_by( 'id', $child, $termTaxonomy );

  // Modify this echo to customize the output for each child term
  echo '<li><a href="' . get_term_link( $term->name, $termTaxonomy ) . '" alt="' .$term->description. '">' . $term->name . '</a></li>';
}
echo '</ul>';

2

मुझे पता है कि यह एक तरह का धोखा है, लेकिन आप हमेशा सरल कस्टम पोस्ट ऑर्डर प्लगइन का उपयोग कर सकते हैं । यह मुफ़्त है, और यह आपको पोस्ट प्रकार के अलावा टैक्सोनॉमीज़ को सॉर्ट करने की अनुमति देता है।


0

और वेब पेज में प्रदर्शित होने के बाद यह अच्छा क्रम हो सकता है:

अपने wp_get_post_terms में "ऑर्डरबी" => "टर्म_ग्रुप" डालने के लिए

उदाहरण :

"poste" मेरा कस्टम टैक्सोनॉमी नाम है, जो आपका है

$poste =  wp_get_post_terms($post->ID, 'poste', array("fields" => "names", "orderby" => "term_group"));
        if(!empty($poste[0])){ echo $poste[0];}
        if(!empty($poste[1])){
          echo " - ", $poste[1]; }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.