biz-vektorというテーマのRSSカスタマイズ

投稿日 : 2017年09月27日   更新日 : 2020年05月24日
カテゴリー : 技術情報 / PHP/javascript/CSS/nodejs / Wordpress
biz-vektorというテーマのRSSカスタマイズの画像

こんにちわ、PHPエンジニアのエンジニア婦人(@naho_osada)です。
私はPHPエンジニアとして7年~の経験があります。WordPressは2年半~の経験があります。その他、jQuery、HTML、CSSも使用します。
ここでは主に過去に納品した案件や自サイト運営(エンジニア婦人ノート)で遭遇したことについて書いています。

通常、WordPressサイトの制作で既存テーマをベースに作成することが殆どです。

しかし今回は「biz-vektor」というテーマのものを流用することになりました。

巷では簡単にできるテーマとして有名なんですね。

BizVektorについてはこちらです→BizVektor

※2019年10月現在、BizVektorはアップデートを停止しています。

BizVektorでは、原則子テーマを作ってカスタマイズします。

「特定カテゴリを除外してお知らせを表示したい」のですが、困ったのが「特定のカテゴリを除外したお知らせRSSのURL」でした。

通常のWordpressのRSS取得URL

通常はこんな感じでできます。

  • http://どせいさん/feed/?post_type=post&category_name=eventinfo

カテゴリを絞り込むとこんな感じです。

  • http://どせいさん/feed/?post_type=post&category_name=絞り込みたいカテゴリ名

カスタム投稿はこんな感じです。

  • http://どせいさん/feed/?post_type=カスタム投稿post_type名(eventとか)

カスタム投稿でカテゴリを絞り込むとこんな感じになります。

  • http://どせいさん/feed/?post_type=カスタム投稿post_type名(eventとか)&category_name=絞り込みたいカテゴリ名

ちなみにカテゴリを除外したいときはこうします。

  • http://どせいさん/feed/?post_type=カスタム投稿post_type名(eventとか)&cat=-除外したいカテゴリID

除外したいカテゴリIDの前に「-」をつけるのがポイントです。本来はそれで行けます。

でも…このテーマを使っているから故なのか、細かい原因は追究しませんが、このやり方だとダメだったんです。

ちなみにこれはできます。

  • http://どせいさん/feed/?post_type=info-cat

カテゴリ絞り込みはできません。

  • http://どせいさん/feed/?post_type=info-cat&category=カテゴリ名

通常のやり方でできなかった原因

ずばり、タクソノミー名が「category」ではないから
お知らせのカスタムタクソノミーは名前が「info-cat」なんですね。
だからこうすれば絞り込みができます。

  • http://どせいさん/feed/?post_type=info-cat&info-cat=カテゴリ名

しかし今回のやりたかったことは「特定のカテゴリを除外して表示させたい」。

でもこれだと「指定したカテゴリを取ってくる」ことになる。

カテゴリ数が少なければそれでもいいけど、これをべた書きにするとなると…メンテナンス性が悪い。

カテゴリが多いと都度対応で面倒です。

目的のRSS取得プログラム

<!--?php 
// 特定のカテゴリを除いたものをRSSとして配信する
// お知らせのカテゴリを取得
$infoCate = get_terms('info-cat');
$rssCatAry = array();
foreach($infoCate as $info) {
	// 要らないカテゴリだった場合は除外
	if($info--->slug == '外したいカテゴリ名') continue;
        // 欲しいカテゴリ名のみ配列に追加
	$rssCatAry[] = $info->slug;
}
// URL出力のときにカンマで繋げる
// こんな感じになる<br />
// http://どせいさん/feed/?post_type=info&info-cat=<!--?php echo implode(',', $rssCatAry); ?-->
?>

ちなみにトップの表示からも特定カテゴリの情報を表示したくなかったからこんな感じにしてみました。

通常はget_post使いますが、ここでは元のソースがWP_Query使ってたからそのままになるようにしました。元と合わせておくことも時と場合によっては必要です。

<!--?php
$args = array(
		'posts_per_page' =--> $infoTopCount, // 表示件数
		'orderby'          => 'post_modified', // 更新日
		'order'            => 'DESC', // 降順
		'post_type'        => 'info', // お知らせのポストタイプを指定
		'post_status'      => 'publish', // 公開中のもの
		'tax_query' => array( // カテゴリ絞り込み指定
				array(
						'taxonomy' => 'info-cat', // bizvektorのお知らせカテゴリーを対象
						'field' => 'slug',
						'terms' => '除外するカテゴリのスラッグ名',
						'operator' => 'NOT IN', // 特定カテゴリを含まない
				),
		),
);
// データ取得
$loop = new WP_Query($args);
?>

とりあえず希望通りに表示ができるようになりました。

まとめ

  • BizVektorというテーマを使っているとき、RSSを希望通りに表示させるためにはテクニックがいる

開発者側の考え方によって、実現したいことが簡単にはできないこともあります。

そういったときに、専門的立場から解析して実現するのも、私の仕事です。

ソースレビュー企画-私にソースレビューをさせてください!-

皆様のプログラムのソースを、私に読ませてください!

ソースレビュー企画-私にソースレビューをさせてください!-

プログラムを勉強し始めたばかりの方から、業界云十年のベテランの方でも大歓迎です!どんなソースでもありがたく拝見します!

※無料です

ソースレビュー企画-私にソースレビューをさせてください!-の詳細、お申し込みはこちらからお願いします。

運営サイト紹介

みんなのきょうのごはん-みんごは-

みんなのきょうのごはん-みんごは-

「みんなのきょうのごはん-みんごは-」きょうのみんなのごはんは?Twitterに投稿された美味しそうな「食べ物」画像を、リアルタイムで表示します。

みんごははここからアクセスしてね !

その他広告