見出し画像

WordPressのclass-wp-query.phpをカスタマイズした話。

WordPressで作っている自分のブログを見ていたら、titleタグにブログの記事タイトルが出力されていないことに気が付きました。

2000年11月にa-blogというCGIでできた日記ツールで書き始め、2003年にMovable Type、2007年にWordPressに移行しました。

Movable TypeからWordPressに移行した際、URLの構造を引き継いでませんでした。それにより、WordPressのURLがSEO的に問題ありで、GoogleやYahoo! JAPANから落ちてしまいました。

WordPressのパーマリンク構造のカスタマイズ

パーマリンクの設定で、カスタムを選択して「/archives/%year%-%monthnum%%day%-%hour%%minute%.php」と入力し、パーマリンク構造を更新しましたが、URLは「http://○○○.com/archives/2008-0228-0104.php」と意図したとおりになったのにいくつか不具合が発生しました。

・titleタグが「<title>2008 2 月 28 | ブログタイトル</title>」となってしまい、記事タイトルが表示されない。
・ <!–more–>から後ろが表示されない

いろいろ調べてみたところ、パーマリンクに「%second%」を加えることで、不具合は解消されますが、Movable Typeで設定していたURLのまま引き継ぎたいので「%second%」を入れないようにしたいという難問が出てきました。

WordPressのフォーラムで質問してみたところ、パーマリンク構造に %second% を入れないと、is_single() が TRUE にならないのは WordPress の仕様だということが判明。

wp-includes/class-wp-query.phpの修正

ver4.7以降、修正箇所が、wp-includes/class-wp-query.phpに移ったようでした。

} elseif ( ( '' !== $qv['hour'] ) && ( '' !== $qv['minute'] ) && ( '' != $qv['year'] ) && ( '' != $qv['monthnum'] ) && ( '' != $qv['day'] ) ) {
$this->is_single = true;

この部分を追加して、FTPでアップロードしました。

これで、ブログの記事タイトルが、titleタグに出力されるようになりました。

よろしければサポートをお願いします。