名前が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) ); ?>">
私がこれについて行った調査に基づいて、用語メタデータを使用することは、用語を順序付けるためのあらゆる点で優れたアプローチです。
しかし、私はこのスニペットを思いつくことができました。
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」という名前の新しい分類法を作成し、用語を任意の順序で作成しました。上記のコードを使用すると、用語は番号順に並べられます。
WordPressはあなたのカテゴリをアルファベット順に並べるでしょう、そしてそれはあなたが得る結果につながります。あなたはそれらを番号順に並べたい。 PHPはこれを行うことができます。次のように、ランダムに並べられたカテゴリの配列があるとしましょう。
$cats = array ('3', '22', '17', ... '7');
数値のソート順を強制しながら、 PHPソート を使用できます。
sort ($cats, SORT_NUMERIC);
それはあなたに与えるはずです
$cats = array ('1', '2', '3', ... '25');