1

私は wordpress 3.4.2 を使用しており、名前に数字を含むタグを使用して投稿に関連付けています。

具体的には、「0-5」、「6-10」、「11-15」、「16-20」、「21-25」が私のタグです。

上記のタグが投稿に関連付けられている場合は、natsort 順 ( http://php.net/manual/en/function.natsort.php ) で表示したいのですが、代わりに、次のようにアルファベット順に表示されます。これ:

0-5、11-15、16-20、21-25、6-10 _

「6」は「1」の後に来るため、6-10 は 11-15 の後に表示されることを意味します。

タグを戻すために使用しているワードプレス呼び出しは次のとおりです。

<?php the_tags( '<span class="tag-links"><span class="post-footer-label">' . __('Ranges: ', 'blankslate' ) . '</span>', ", ", "</span>" ) ?>

好きな順序でタグを取得できるように、それをどのように変更するか、またはどの追加機能を作成する必要があるかを誰かが知っていますか?

4

1 に答える 1

0

the_tags ()は現在の投稿のタグを表示しますが、get_the_tags()はそれらを配列として返します。その後、必要に応じてそれらを並べ替えて表示できます。

あなたの場合、strnatcmpを使用する次のようなものを使用できます。

<?php
    function compare_tags_naturally($a, $b) {
        return strnatcmp($a->name, $b->name);
    }

    $unsorted_tags = get_the_tags();
    $tags = usort($unsorted_tags, 'compare_tags_naturally');

    $links = array();
    foreach ($tags as $tag) {
        $links[] = '<a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a>';
    }

    echo '<span class="tag-links"><span class="post-footer-label">' . __('Ranges: ', 'blankslate' ) . '</span>';
    echo implode(', ', $links);
    echo '</span>';

?>

このソート機能をthe_tags()が使用されているすべての場所に自動的に適用したい場合は、上記の関連コードをプラグインでラップし、「the_tags」にWordpress フィルターを追加できます。

残念ながら、 Wordpress のソース コードからさまざまなフックへの参照を自動的に抽出するサイトの「the_tags」フィルターに関するドキュメントはありますが、正確な方法に関する公式ドキュメントは現在ありません。

于 2012-10-03T20:38:58.777 に答える