私はまだ 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_posts
Idを使用するより簡単な方法があれば、それを受け入れます。
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>