0

2 つの値に一致するタクソノミーを返すコードを使用しています。

すべてが正常に機能しますが、結果を並べ替える方法がわかりません。現在は一定の順序で表示されているため、日付が不明な場合があります。それらをアルファベット順に(名前で)表示しようとしています。

私のphpテンプレートからの私のコードはここに貼り付けられていますhttp://pastie.org/5083124

私が話している配列はこれです

<?php
    foreach ( $all_terms as $all_term) {
    //print_r($all_terms);

        $tax_test = get_option('woo_categories_panel_taxonomies_'.$all_term->taxonomy);

            $post_images = array();
            $posts_aray = array();
            $parent_id = $all_term->term_taxonomy_id;
            $term_name = $all_term->name;
            $term_parent = $all_term->parent;
            $term_slug = $all_term->slug;
            $term_id = $all_term->term_id;
            $term_link = get_term_link( $all_term, $all_term->taxonomy );
            $counter_value = $all_term->count;

            ?>
            <div class="childListings">
                <div class="block">
                    <a href="<?php echo $term_link; ?>">
                        <?php
                            $block_counter++;
                         ?>
                    </a>

                    <h2><a href="<?php echo $term_link; ?>"><?php echo $term_name ?> <br/><span>(<?php echo $counter_value; ?> Solicitors)</span></a></h2>

                </div><!-- /.block -->
            </div><!-- /.child Listings-->
            <?php

            if ( $block_counter % 6 == 0 ) {
            ?>
                <div class="fix"></div>
            <?php
            } // End IF Statement   

        // End IF Statement

        ?>
        <?php


    } // End For Loop

?>

$args と ksort を使用していくつかの異なるオプションを調べましたが、少し迷子になり、サイトのフロントエンドで結果をアルファベット順に並べ替えることができないようです。

私のコードで、結果にソート順を持たせる方法を誰かが特定できますか?

ありがとう

4

3 に答える 3

4

データベースにクエリを実行するときに、少し前にソートすることで、PHP でソートする手間を省くことができます。これはより速くなるはずです。

変化する:

$all_terms = $wpdb->get_results("SELECT *  FROM ipt1y7_term_taxonomy,ipt1y7_terms WHERE ipt1y7_term_taxonomy.parent='{$ex[2]}' AND ipt1y7_term_taxonomy.term_id=ipt1y7_terms.term_id");

...に:

$all_terms = $wpdb->get_results("SELECT *  FROM ipt1y7_term_taxonomy,ipt1y7_terms WHERE ipt1y7_term_taxonomy.parent='{$ex[2]}' AND ipt1y7_term_taxonomy.term_id=ipt1y7_terms.term_id ORDER BY ipt1y7_terms.name");

ORDER BY nameつまり、元のクエリに追加するだけです。結果は名前でソートされて返され、PHP でさらに何もする必要はありません。ソートはデータベース サーバーで行われます。WordPress データベース テーブルtermsには列にインデックスがあるnameため、これは非常に高速です。事実上、データは事前​​にソートされています。( WP データベース スキーマのテーブルの説明をterms参照してください。)

于 2012-10-19T09:18:22.107 に答える
0

http://php.net/manual/en/function.sort.phpの例を見てください。

$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
    echo "fruits[" . $key . "] = " . $val . "\n";
}

上記の例では、次のように出力されます。

fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
于 2012-10-19T09:08:13.087 に答える
0

これは、usortと独自の比較関数を使用して可能です。

<?php

/**
 * For a bit of testing.
 */
$all_terms = array( );
$names = array( 'foo', 'baz', 'bar', 'qux', 'aaa' );
foreach( $names as $name ) {
    $tmp = new stdClass();
    $tmp->name = $name;
    $all_terms[] = $tmp;
}

/**
 * Here, we do the sorting:
 */
usort( $all_terms, function( $a, $b ) {
    if( $a->name === $b->name ) {
        return 0;
    }
    return ( $a->name < $b->name ) ? -1 : 1;
});

/**
 * And the results:
 */
var_dump( $all_terms );
于 2012-10-19T09:12:56.847 に答える