カスタム分類リストの順序を変更する


15

デフォルトでは、WordPressはカスタム分類(この場合はタグとして)を、タグボックスに入力された順序ではなく、アルファベット順に並べます。

カスタム分類を投稿編集画面に入力された順序で表示する方法を知っている人はいますか?

問題のURL:http : //granadatheater.com/

GGW(Goes Good With)アーティストは現在アルファベット順になっており、入力したのと同じ順序で注文されるように変更します。

したがって、Artist1、Artist3、Artist2を入力すると、サイトのフロントエンドに表示されるはずです。


ポストベースごとに注文を入力するということですか?
-hakre

たぶんIDで注文しますか?
-Bainternet

アルファベット順に表示されるので、質問を理解していない可能性があります。正確にどこにこれが欲しいですか?変更したいものが見つかるスクリーンショットとURLの例を教えてください。
MikeSchinkel

回答:


0

これは「箱から出してすぐに」は不可能です...

デフォルトの「orderby」オプションは(昇順または降順)です

  • ID名
  • デフォルト
  • ナメクジ
  • カウント
  • 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 16

1
管理者がキャッシュをクリアすると、新しい条件はまだ保存されていないため、とにかく削除されます。これを投稿して以来、多くのWordpressサイトで上記のコードを使用してきましたが、問題に遭遇したことはありません。
Biranit Goren

1
@BiranitGorenはこのトピックを再開することを許してくれますが、すべての答えの中心的な関心事term_orderはネイティブにサポートされていないことです。あなたのコード例では、term_orderソートできるようにどこが定義されているのでしょうか?
ジジサン

2
@GigiSanそれは実際にネイティブにサポートされていますが、単に使用されていません。Wordpressのコアにはterm_orderがありますが、デフォルトでは使用されません。したがって、定義する必要はありません。すでに定義されています。(tracでこれを参照してください:core.trac.wordpress.org/ticket/9547
Biranit Goren

2

カスタム分類のアルファベット順の子用語の答えを見つけるのに苦労してきました...コアWPファイルを変更することはお勧めしません。そこで、カスタム分類の説明をリンク付きでリストするために、taxonomy.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

これは一種の不正行為であることは知っていますが、Simple Custom Post Orderプラグインをいつでも使用できます。無料で、投稿タイプに加えて分類法を並べ替えることができます。


0

そして、ウェブページに良い順序を表示した後:

wp_get_post_termsに「orderby」=>「term_group」を配置する

例:

「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]; }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.