0

簡単な質問です。次のカスタムクエリがあります。「エコー」を介して配列のhtmlリストを生成するにはどうすればよいですか?

$q_result = $wpdb->get_col("SELECT DISTINCT {$wpdb->terms}.name FROM {$wpdb->terms}
        INNER JOIN {$wpdb->term_taxonomy} ON {$wpdb->term_taxonomy}.term_id = {$wpdb->terms}.term_id
        INNER JOIN {$wpdb->term_relationships} ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id
        WHERE {$wpdb->term_taxonomy}.taxonomy = 'series' AND {$wpdb->term_relationships}.object_id IN (
        SELECT object_id FROM {$wpdb->term_relationships}
        INNER JOIN {$wpdb->term_taxonomy} ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id
        WHERE {$wpdb->term_taxonomy}.taxonomy = 'media_type' AND {$wpdb->term_taxonomy}.term_id = '16'
        ORDER BY {$wpdb->terms}.term_order DESC
        ) ORDER BY {$wpdb->terms}.term_order ASC"); 
4

1 に答える 1

0

foreach-を使用して配列を反復処理できます

foreach( $q_result as $result ){
   echo "<a href='/series/".$result."/>".$result."</a>";
}

HTML も表示する場合は、適切な HTML タグをエコーする必要があります。上記は、用語へのリンクに対してある程度機能します。形式は TAXONOMY/TERM_SLUG ですが、名前を返すだけですget_results()。適切に実行するには、名前とスラッグを取得する必要があります。

テーブル エイリアスを使用して再フォーマットされた例で、用語とスラッグを返します。

$sql = <<<SQL
    SELECT DISTINCT t.name, t.slug 
    FROM {$wpdb->terms} t
    INNER JOIN {$wpdb->term_taxonomy} tt 
        ON tt.term_id = t.term_id and tt.taxonomy = 'series'
    INNER JOIN {$wpdb->term_relationships} tr 
        ON tt.term_taxonomy_id = tr.term_taxonomy_id
    WHERE tr.object_id IN (
        SELECT object_id 
        FROM {$wpdb->term_relationships} tr2
        INNER JOIN {$wpdb->term_taxonomy} tt2 
            ON tt2.term_taxonomy_id = tr2.term_taxonomy_id AND tt2.taxonomy = 'media_type' AND tt2.term_id = '16'
        ORDER BY {$wpdb->terms}.term_order DESC
    ) 
    ORDER BY {$wpdb->terms}.term_order ASC
SQL;

$terms = $wpdb->get_results( $sql );
for ( $terms as $term ){
    echo "<a href='/series/{$term->slug}/'>{$term->name}</a><br/>";
}
于 2013-04-29T05:15:13.680 に答える