Featured image of post 【Wordpress】StaticPressS3でfeedへのlinkタグが消されてしまう原因と対処方法

【Wordpress】StaticPressS3でfeedへのlinkタグが消されてしまう原因と対処方法

1173文字

あれ、FeedがS3に転送されない・・・

Feedをいい感じに出す事は出来てる

StaticPressStaticPressS3を利用してサイトを運営している場合、RSSなどのFeedを利用したいケースがあると思います。

その場合のStaticPress(S3)経由でおかしくなってしまう部分については、以下の記事で対応方法をご紹介しました。

関連記事 【WordpressのRSS】StaticPressでFeedをhtml形式では無くxml形式で出力する方法 2018/05/18 1263文字 約3分で読めます

Feedへのlinkタグ消えてしまう問題

しかし、headタグ内にlinkタグでFeedへのURLを追加してS3にファイル転送しようとすると、StaticPressで吐き出されたファイル内から追加したはずのlinkタグが消えてしまいます。。。

Wordpress側のソース
<title>【WordpressのRSS】StaticPressでFeedをhtml形式では無くxml形式で出力する方法 | Blogenist – ブロゲニスト</title>
<link rel="alternate" type="application/rss+xml" title="Blogenist - ブロゲニスト RSS Feed" href="http://{WordpressURL}/feed">
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

S3側のソース
<title>【WordpressのRSS】StaticPressでFeedをhtml形式では無くxml形式で出力する方法 | Blogenist – ブロゲニスト</title>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

消えてる!!!

なんでやねん・・・orz

そして、StaticPressはクローリングしたHTMLのリンクをどんどん辿ってファイルを生成しているようなので、linkタグを消されるとFeed関連のHTMLも生成されなくなってしまい、S3にも転送がされなくなってしまいます。

原因

原因はStaticPressプラグインのもともとの仕様でした。

class-static_press.php453行目あたりの関数にで、特定のlinkタグをHTMLから除去する処理が書かれていました。

class-static_press.php
//453行目あたり
public function remove_link_tag($content, $http_code = 200) {
		$content = preg_replace(
			'#^[ \t]*<link [^>]*rel=[\'"](pingback|EditURI|shortlink|wlwmanifest)[\'"][^>]+/?>\n#ism',
			'',
			$content);
		$content = preg_replace(
			'#^[ \t]*<link [^>]*rel=[\'"]alternate[\'"] [^>]*type=[\'"]application/rss\+xml[\'"][^>]+/?>\n#ism',
			'',
			$content);//こいつが犯人や!!
		return $content;
	}

なるほど。

原因さえ分かればこっちのモン!!!
対応方法は簡単ですね♪

手順

class-static_press.phpの修正

原因となっている部分の処理を一部行わないようにしましょう。
以下のようにコメントアウトしてください。

class-static_press.php
//453行目あたり
public function remove_link_tag($content, $http_code = 200) {
		$content = preg_replace(
			'#^[ \t]*<link [^>]*rel=[\'"](pingback|EditURI|shortlink|wlwmanifest)[\'"][^>]+/?>\n#ism',
			'',
			$content);
/*
		$content = preg_replace(
			'#^[ \t]*<link [^>]*rel=[\'"]alternate[\'"] [^>]*type=[\'"]application/rss\+xml[\'"][^>]+/?>\n#ism',
			'',
			$content);
*/
		return $content;
	}

修正はこれだけでOKです。

確認

では、実際にStaticPressで再構築を行ってみましょう。

正常にS3にFeed関連のファイルが転送されるようになりましたね♪

終わりに

StaticPressプラグインに限らず、Wordpressプラグインは非常に便利ですが、今回のように余計なことまでしてしまっている部分も良くあります。

そんな時は自分でプラグインのソースコードを読んで修正する必要があります。
ですので、多少なりともプログラミングの勉強をしておくと、より良いサイトが作れるようになるので、暇な時に少しずつPHP等の勉強をしておくと良いでしょう♪