der Gegenwart

どうでもいい雑記その790

謎講座を制作中。暑いのもあって今一作業が捗らない。それに伴って、サイト自体のテーマも若干更新。まぁ、見た目は変わらないんだけど。

講座の各ページは「投稿」を使おうと思っている。ただ、それだと講座を更新するたびにトップページに記事が出てきて鬱陶しい。そこで、

  1. Webサイト制作講座以外のカテゴリーの記事のうち、最新1件を取得
  2. 1で取得した記事の年月日、および制作講座カテゴリの除外の2点を$query_stringに追加
  3. あとはWordPressループで記事を表示

ってな具合にindex.phpを書き換えた。こうすることで特定カテゴリを除外した、最新一日分の記事を取得出来る。

ただ、あまり効率的なやり方とは思えない*1。カテゴリ増やすたびにテーマを更新しないといけないし。PHPにすると下記の通り。

<?php
$posts = get_posts('numberposts=1&category=Web制作講座以外のカテゴリIDをカンマ区切りで羅列');
$recent_date = date('Ymd',strtotime($posts[0]->post_date));
global $wp_query;
query_posts(
    array_merge(
        array('cat' => -Web制作講座のカテゴリID*2, 'year'=> substr($recent_date,0,4) , 'monthnum'=>substr($recent_date,4,2) , 'day'=> substr($recent_date,6,2)),
        $wp_query->query
    )
);
?>

さらに下記サイトの記述に倣ってFeedから制作講座カテゴリの記事を除外。

下記をfunctions.phpに追加すれば終了。

function myFilter($query) {
    if ($query->is_feed) {
        $query->set('cat','-Web制作講座のカテゴリID*3');
    }
    return $query;
}
add_filter('pre_get_posts','myFilter');

サイトのテーマの修正はそんな感じで終了したので、講座の方の作業を続行中。今年中に完成出来ればいいなー、とか。

  1. SQL文投げ込んでSELECTで記事持ってきた方がスマートな気がする。具体的な方法がよく分からんので今回は見送ったけど。
  2. IDの頭にハイフンをつけると除外指定になる
  3. IDの頭にハイフンをつけると除外指定になる