0

私はまだ MySQL の初心者段階にあり、これに特定のカテゴリを追加する方法を考えています。

SELECT DISTINCT DATE_FORMAT(post_date, '%b') AS month , 
  MONTH(post_date) as numMonth, YEAR( post_date ) AS year, 
  COUNT( id ) as post_count 
FROM $wpdb->posts 
WHERE post_status = 'publish' and post_date <= now( ) and post_type = 'post' 
GROUP BY month , year ORDER BY post_date DESC

カテゴリを取得するためのこのコードを見つけましたuncategorized...

SELECT * FROM wp_posts p 
LEFT OUTER JOIN wp_term_relationships r ON r.object_id = p.ID     
LEFT OUTER JOIN wp_terms t ON t.term_id = r.term_taxonomy_id 
WHERE p.post_status = 'publish' AND p.post_type = 'post' 
  AND t.slug = 'uncategorized'

試してみUNION ALLましたが、何も表示されなくなりました。クエリの 2 番目のビットを単独で動作させることさえできないように見えるので、このことを学ぼうとしているのであれば、おそらく私は自分よりも少し先に進んでいると思います。

ありがとう

編集:最初の応答に応じて、このコードを追加して、私が何をしているのかをもう少し説明します。これは、年次、次に月次を表示するアーカイブウィジェットです。これを行う簡単な方法をまだ見つけていないため、「より良いアーカイブウィジェット」に頼っています。これは、変更しようとしているファイルに含まれているコードです。query_postsIdを使用するより簡単な方法があれば、それを受け入れます。

global $wpdb;
    $prevYear = "";
    $currentYear = "";
    if ( $months = $wpdb->get_results( "SELECT DISTINCT DATE_FORMAT(post_date, '%b') AS month , MONTH(post_date) as numMonth, YEAR( post_date ) AS year, COUNT( id ) as post_count FROM $wpdb->posts WHERE post_status = 'publish' and post_date <= now( ) and post_type = 'post' GROUP BY month , year ORDER BY post_date DESC" ) ) {
    echo '<ul>';
        $count = 0;
        foreach ( $months as $month ) {

            $currentYear = $month->year;
            if ( ( $currentYear != $prevYear ) && ( $prevYear != "" ) ) { echo "</ul></li>"; }
            if ( $currentYear != $prevYear ) {  
             $count++ ?> 
            <li class="baw-year"><a href="<?php echo get_year_link( $month->year ); ?>"><?php echo $month->year; echo ' ('.$month->post_count . ')' ; ?> </a>
            <ul class="baw-months">
            <?php
            }   ?>
            <li class="baw-month"><a href="<?php echo get_month_link( $month->year, $month->numMonth ); ?>"><?php echo date('F', strtotime ($month->month)); ?><?php /*echo ' ' . $month->year;  */ ?></a></li>
            <?php
            $prevYear = $month->year;
        }//end foreach
    }
    ?>
    </ul></li>
4

2 に答える 2

0

query_posts()を使用していない理由はありますか? (クエリで使用できるパラメータはこちらです。) query_posts を使用する方が少し安全です (WordPress に既に組み込まれています)。このようなカスタム クエリでは、$wpdb->prepare などを使用する必要があります。 . クエリを挿入できないことを確認します。ただし、query_posts を使用すると、タクソノミー、投稿タイプ、投稿ステータス、orderby、日付/時刻などを追加でき、クエリが作成され、必要なものが取得されます。

于 2012-10-30T13:08:25.530 に答える
-1
  1. カテゴリの投稿を表示するには、このコードを試してください -

    get_results( " SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships .term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) WHERE $wpdb->posts.post_status = '公開' AND $wpdb->term_taxonomy.taxonomy = 'カテゴリー' AND $wpdb->term_taxonomy.term_id = 3**(あなたのカテゴリーid)** ORDER BY post_date ASC " ); ?>
  2. 「term_taxonomy.term_id」の「wp_terms」テーブルを確認できます。あなたのカテゴリーID。

  3. また、管理パネルの特定のカテゴリ名の下にある編集ボタンをクリックして、カテゴリ ID を取得できます。URL に ID が表示されます。
于 2013-06-06T09:15:31.207 に答える