
WordPressのRSSフィードのタイトルを条件判定して変更した話

こんばんは!
めちゃくちゃ今更なHTTPS対応をしていて、RSSリンクの書き換えもしました。
その際、FeedlyでこのブログのRSSのタイトルを見ると、こんな感じになっていることに気が付きました。


つまりこれが、このブログのRSSフィードタイトルです。blog - 村田千紗 ポートフォリオ
なぜこうなっているかはすぐに察しがつきました。
WordPressでカテゴリー名に設定している blog
と、WordPressの設定でサイトタイトルに指定している 村田千紗 ポートフォリオ
が自動的にがっちゃんこされているようです。
このブログはあくまでも C-Notes. というタイトルのブログとしてポートフォリオサイトからは少し分離させているので(自分の気持ち的に……)、
このRSSフィードのタイトルもちゃんと C-Notes. にしたいなあ〜!という気持ちが湧いてきました。
WordPressでのRSSフィードタイトルに関する処理の場所 & 処理の変え方
ただ、自分はWordPressで自動生成されるカテゴリーごとのRSSフィードを使っております。どうやって編集したらいいんだろう!?
調べてみたところ、以下のことがわかりました。
(一部すでに知っていることもありますが、読む方がわかりやすいように細かく書きます)
- RSSのタイトル設定は、
wp-includes
フォルダに含まれているfeed.php
のget_wp_title_rss()
で行なっている(公式ドキュメント)- RSSのタイトルは、ページタイトルがベースになっている
- ページタイトルは
wp-includes
に含まれているgeneral-template.php
のwp_get_document_title()
で生成されている(公式ドキュメント)
- ページタイトルは
- RSSのタイトルは、ページタイトルがベースになっている
wp-includes
はWordPressのコアファイルなので、基本はいじるべきではない- なぜならWordPress本体のアップデートで上書き修正されてしまうから
- ユーザーがいじっていいのは
wp-content
のtheme
フォルダ配下のみ wp-includes
の関数の処理に手を加えたいときは、フックを使ってtheme
配下のfunctions.php
を編集する- フックってなんのこと?どうやって使うの?という疑問が湧くと思いますが、以下の記事がわかりやすかったです。
- WordPressのコアファイルを直接修正するような記事は良くないよ、add_filter使おうよ。 (なぜかコードが消えてるので、コードサンプルは次のほうが参考になるかと)
- apply_filters と add_filter の使用方法。
- フックってなんのこと?どうやって使うの?という疑問が湧くと思いますが、以下の記事がわかりやすかったです。
で、なにをすれば変えれたのか
というわけで、theme
配下の functions.php
に以下を追加したらいけました!
(テーマごとに変えたいよ!という人は、さらに下位のテーマフォルダの中の functions.php
でも大丈夫です)
add_filter('get_wp_title_rss', 'rss_feed_title_change', 1, 2); // RSS タイトル取得処理時にrss_feed_title_changeを実行 function rss_feed_title_change($title, $separater) { // rss_feed_title_changeを実行 if ( strpos($title,'blog') !== false ) { // もしタイトルに「blog」が含まれていたら $title = 'C-Notes.'; // タイトルを「C-Notes.」に置き換える } return $title; //置き換えた内容を返す }

ただ、自分のケースだとそもそも自動生成されるページタイトルも変えちゃってもいいなーと思ったので、最終的には上記のコードではなく、以下のコードで対応しました。
add_filter('document_title_parts', 'title_change', 1, 1); // ページタイトル取得処理時にtitle_changeを実行 function title_change($title) { // title_changeを実行 if ( $title['title'] == 'blog' ) { // もしカテゴリーが'blog'だったら $title['title'] = 'C-Notes.'; // 'C-Notes.'に置き換えておく $title['site'] = ''; //サイトネームは空にしておく (ハイフンによる接続も行われなくなる) } return $title; //置き換えた内容を返す }
コードに強くなった(気がする)
Morn(個人で作っているアプリ)の開発でSwiftを触っています。
仕事もiOSアプリのデザインをやっているのですが、できそうな超かんたんレベルのときはプルリクを出させていただいています。そのおかげでコードに耐性がついたのか、PHPもだいぶわかるようになっていました。
今までも自力でPHPを書く!という経験は何度かありましたが、
WordPressについて、ここまできちんと自分の中での理解度が深まったことはないです。笑
自分である程度読めるようになったからだな〜と思います。
ちゃんと成長しているようです
以前 前/次の投稿リンクをいじって記事にしていた のですが、今思うとこの記事、直接コアファイルいじってるのでよくないですね。笑
過去の私もきちんと荒業と認識していたみたいですが、他の方法がわからなかったようです。
今の自分だったらフック使って対応できるんじゃないかなあ(この対応すぐに必要ないので、また時間があるときにやろうかなと思います)
そして先述の記事で、「WordPressをアップデートしていきたい人はこの方法やめましょう」とか書いていますが、アップデートはちゃんとするのがおすすめです。
(そして案の定?私自身この対応やったことをすっかり忘れ普通にWordPressアップデートしまい、今は変更なかったことになっているという……)
なぜならWordPressはちょいちょい脆弱性対応をしているから!
それをしないとえらいことになる……かもしれません。
私自身、身を持って経験しております……。
そのへんの話:サイトが改ざんされてしまった話
当時はわからなかったことがわかるようになっていたので、多少なりとも私も成長できているのだな〜と実感したできごとでした。
Comments