Özel Sınıflandırma Listesinin sırasını değiştirme


15

Varsayılan olarak WordPress, özel taksonomileri (bu durumda etiketler olarak) etiket kutusuna girildikleri sıraya göre değil alfabetik olarak sıralar.

Özel taksonomileri yayın düzenleme ekranına girildikleri sırayla göstermenin bir yolu var mı?

Söz konusu URL: http://granadatheater.com/

GGW sanatçıları alfabetik sıraya göre dizilmiş ve değiştirildiklerini istiyorlar, böylece girildikleri gibi sıralanıyorlar.

Yani Sanatçı1, Sanatçı3, Sanatçı2 girin, sitenin ön tarafında bu şekilde görünmelidir.


Gönderi başına baz girmek mi demek istiyorsun?
hakre

Belki id ile sipariş?
Bainternet

En iyi alfabetik sırayla görüntülendiğini söyleyebilirim, bu yüzden muhtemelen soruyu anlamıyorum. Bunu tam olarak nerede istiyorsun? Değiştirilmesini istediğiniz şeyi bulacağınız bir ekran görüntüsü ve örnek bir URL verebilir misiniz?
MikeSchinkel

Yanıtlar:


0

Bu "kutunun dışında" mümkün değil ...

Varsayılan 'sipariş' seçenekleri (artan veya azalan)

  • Kimlik adı
  • Varsayılan
  • sümüklüböcek
  • Miktar
  • term_group

Bunların hepsi kodeksde detaylandırılmıştır.

-

Burada bazı akıllı bayanlar ve baylar olduğunu söyledi. Herkes çözebilirse, bu adamlardan biri emin olabilirim!


8

Biraz arama ve kapsamlı testlerden sonra cevabı buldum.

Bu kodu temanızın işlevlerine ekleyin. 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');

(Kredi: bu - ancak geliştirildi - http://wordpress.kdari.net/2011/07/listing-tags-in-custom-order.html )


Yönetici önbelleklerini temizlese bile bu işe yarar mı? Vadeli sipariş için önbelleğe güvenmek tehlikeli görünüyor.
PBwebD

1
Yönetici önbelleğini temizlerse, henüz kaydedilmediğinden yeni terimler yine de kaldırılır. Bunu yayınladığımdan beri yukarıdaki kodu birçok Wordpress sitesinde kullanıyoruz ve asla bir sorunla karşılaşmadım.
Biranit Goren

1
@BiranitGoren bu konuyu sürdürdüğüm için beni affetti, ancak tüm cevaplardaki asıl endişe term_orderyerel olarak desteklenmiyor. Merak ediyorum, kod örneğinizde, term_orderüzerinde sıralama yapabilmeniz için nerede tanımlanmış?
GigiSan

2
@GigiSan aslında yerel olarak desteklenir, ancak sadece kullanılmaz. Wordpress'in merkezinde term_order vardır - ancak varsayılan olarak kullanılmaz. Bu nedenle, onu tanımlamanız gerekmez, zaten tanımlanmıştır. (Bunu trac'ta görün: core.trac.wordpress.org/ticket/9547 )
Biranit Goren

2

Özel bir sınıflandırma alfabetik alt terimlerinin yanıtını bulmak için uğraşıyorum ... Çekirdek WP dosyalarının değiştirilmesini önermem, bu yüzden taksonomi açıklamalarını listelemek için taksonomi.php dosyama eklediklerim alfabetik sırayla çocuk terimlerine. İhtiyaçlarınıza uyacak şekilde değiştirin, umarım bu birisine yardımcı olur.

// 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

Bunun bir tür hile olduğunu biliyorum, ancak her zaman Basit Özel Post Order eklentisini kullanabilirsiniz. Ücretsizdir ve Gönderi Türlerine ek olarak Taksonomileri sıralamanızı sağlar.


0

Ve sonra web sayfasında iyi sipariş görüntülemek için olabilir:

wp_get_post_terms içine "orderby" => "term_group" koymak

Misal :

"poste" benim özel sınıflandırma adı, seninkini koy

$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]; }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.