私はWordPressのthe_tags()
を使って各記事のタグを片面に表示しています。私がやろうとしているのは、タグをアルファベット順ではなくバックエンドにタイプされた順番で表示することです。 WordPressコーデックスはthe_tags()
をソートするための引数を持っていないようで、出力は常にアルファベット順です。
あなたの誰かがチップを持っていますか?
白ウサギに従ってください:
あなたがその最後の機能を通して見るならば、あなたはこれを見るべきです:
$defaults = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
デフォルトではアルファベット順になっているはずです。いいえ、できません。クエリを直接変更できるフィルタはありませんが、うさぎの穴に沿っていくつかのフィルタがあります。 wp_get_object_terms
フィルタは私にとって良いもののように見えます。
// you will probably need to run this once to reset the cache
// wp_cache_flush();
function id_ordered_tags_wpse_144703($terms, $object_ids, $taxonomies, $args) {
$taxonomies = explode(',',$taxonomies); // quoted and comma seperated string
if (1 < count($taxonomies) && !in_array("'post_tag'",$taxonomies)) return $terms;
$sorted = array();
foreach ($terms as $term) {
$sorted[$term->term_id] = $term;
}
ksort($sorted);
return $sorted;
}
add_filter('wp_get_object_terms','id_ordered_tags_wpse_144703',10,4);
// test it
the_tags();
そのコードをどこに追加するかは、状況によって異なります。 function.php
は動作しますが動作しますが、あなたがコードを追加したテーマだけに制限されるでしょう、私はこの場合正しいと思います。 the_tags()
行を含めないでください。それはテスト用です。
プラグインファイルまたはmu-pluginファイルを使用すると、フィルタをどのテーマにも適用できます。私はそれがその意図であるとは思わない、そしてそれはとにかく私には少し不親切に私を襲った。繰り返しますが、the_tags()
行を含めないでください。
実際にthe_tags()
を使いたい場所に書かれているとおりに正確にコードを追加することができますが、それは面倒な方法です。
コードはWordPress Core関数にフックします。 wp_get_object_terms
フィルタが実行されるたびに実行されます。 add_filter
で行うように、フィルタコールバックをキューに追加する以外に、特別なことをする必要はありません。
必要に応じてフィルタを追加し、後で削除することで、フィルタの実行時期をより細かく制御できます。
add_filter('wp_get_object_terms','id_ordered_tags_wpse_144703',10,4);
// test it
the_tags();
remove_filter('wp_get_object_terms','id_ordered_tags_wpse_144703',10);