web-dev-qa-db-ja.com

Wordpressの発注問題注文1-10-100の問題を修正するには?

名前が1から25のカテゴリがあります。ただし、WordPressの注文システムは正しく機能しません。 1,10,11,12,13 ... 2,21,22,23,24,25として注文します。 0〜1〜9の数字を追加したくありません。どうすればこの問題を解決できますか?

これは私のコードです:

<li class="categoriesx <?php echo print_category_slug( get_the_category( $post->ID) ); ?>" 
    data-category="<?php echo print_category_slug( get_the_category( $post->ID) ); ?>">
2
Yearmaz

私がこれについて行った調査に基づいて、用語メタデータを使用することは、用語を順序付けるためのあらゆる点で優れたアプローチです。

しかし、私はこのスニペットを思いつくことができました。

add_filter( 'terms_clauses', 'wpse247680_terms_clauses', 10, 3 );
function wpse247680_terms_clauses( $pieces, $taxonomies, $args ) {
    // Bail if we are not looking at the right taxonomy, 'category' in this case.
    if ( ! in_array( 'category', $taxonomies ) ) {
        return $pieces;
    }

    // Casts the term name to an integer
    // Idea derrived from similar idea using posts here: https://www.fldtrace.com/custom-post-types-numeric-title-order
    $pieces['orderby'] = 'ORDER BY (t.name+0) ';

    return $pieces;
} 

これが管理領域で実際に動作していることを示すスクリーンショットです。テストのために、「numeric」という名前の新しい分類法を作成し、用語を任意の順序で作成しました。上記のコードを使用すると、用語は番号順に並べられます。 sort terms numerically by name

2
Dave Romsey

WordPressはあなたのカテゴリをアルファベット順に並べるでしょう、そしてそれはあなたが得る結果につながります。あなたはそれらを番号順に並べたい。 PHPはこれを行うことができます。次のように、ランダムに並べられたカテゴリの配列があるとしましょう。

$cats = array ('3', '22', '17', ... '7');

数値のソート順を強制しながら、 PHPソート を使用できます。

sort ($cats, SORT_NUMERIC);

それはあなたに与えるはずです

$cats = array ('1', '2', '3', ... '25');
0
cjbj