先日、アプリーチのアプリ紹介タグをWordpressでAMP化する処理を書いてみました。
基本的に、Wordpress投稿本文の出力をフックして、本文中テキスト内に出てくる、アプリーチのタグを置換して対応をしているだけなのですが、うまくいったのでやり方をメモがてら紹介です。
目次
WordPressでアプリーチタグをAMP化する
基本的に、置換によるテキスト処理がメインです。
やっていることといえば、以下のような感じです。
- style属性を取り除く
- target属性を取り除く
- imgタグをamp-imgに変換
- アプリーチ用のスタイルを書く
AMPタグ変換処理
functions.phpに、以下のような投稿本文出力のフック関数を書きます。
//AMP用にコンテンツを変換する function convert_appreach_for_amp($the_content){ if ( [AMPページかそうでないかを判別する関数もしくは変数] ) { return $the_content; } //style属性を取り除く $the_content = preg_replace('/ *?style=["][^"]*?["]/i', '', $the_content); $the_content = preg_replace('/ *?style=[\'][^\']*?[\']/i', '', $the_content); //target属性を取り除く $the_content = preg_replace('/ *?target=["][^"]*?["]/i', '', $the_content); $the_content = preg_replace('/ *?target=[\'][^\']*?[\']/i', '', $the_content); //アプリーチの画像対応 $the_content = preg_replace('/<img([^>]+?src="[^"]+?(mzstatic\.com|phobos\.apple\.com|googleusercontent\.com|ggpht\.com)[^"]+?[^>\/]+)\/?>/is', '<amp-img$1 width="75" height="75" sizes="(max-width: 75px) 100vw, 75px"></amp-img>', $the_content); $the_content = preg_replace('/<img([^>]+?src="[^"]+?nabettu\.github\.io[^"]+?[^>\/]+)\/?>/is', '<amp-img$1 width="120" height="36" sizes="(max-width: 120px) 100vw, 120px"></amp-img>', $the_content); return $the_content; } add_filter('the_content','convert_appreach_for_amp', 999999999);
[AMPページかそうでないかを判別する関数もしくは変数]の部分には、表示する投稿ページが「AMPページなのか?」を判別する関数もしくは、変数を書いて、「通常の投稿ページではAMP下処理をしない」ようなものを書く必要があります。
判別方法のヒントとしては、以下に書いてある方法などを参考にしていただければと思います。
AMP用スタイル
前項のPHP処理で、アプリーチタグからstyle属性がすべて取り除かれています。
なので、アプリーチ内のタグにインラインで設定されているスタイルは適用されなくなりますので、そのままブラウザで見ると、表示が崩れます。
ですので、アプリーチタグ内のHTML要素やIDやclassに対して、改めてスタイルを指定してやる必要があります。
スタイル指定は、style.cssなどに以下のように記述します。
/************************************ ** アプリーチのスタイル ************************************/ #appreach-box{ text-align: left; margin: 1em 0; border: medium double #ccc; } #appreach-box br{ display: none; } #appreach-box p{ padding: 0; margin: 0; } #appreach-image{ float: left; margin: 10px; width: 25%; max-width: 75px; border-radius: 10%; } .appreach-info{ margin: 10px; } #appreach-developer{ font-size: 80%; display: inline-block; _display: inline; } #appreach-price{ font-size: 80%; display: inline-block; _display: inline; } .appreach-powered{ font-size: 80%; display: inline-block; _display: inline; } .appreach-links{ margin-top: 5px; } #appreach-itunes-link, #appreach-gplay-link{ display: inline-block; _display: inline; } .appreach-footer{ margin-bottom: 10px; clear: left; }
上記は、アプリーチタグのインラインスタイルを、CSSスタイルに書き直したものです。
このままのスタイルでも十分なような気はしますが、それぞれのサイトに合わせて「スタイルをよりモバイルで見やすくする」といったような変更を加えると尚良いかもしれません。
まとめ
僕の場合は、こんな感じでアプリーチタグをAMP表示に対応させました。
AndroidとiPhoneのアプリを紹介するのに、アプリーチは結構使われているのを見かけます。
もしAMPバリデーターなどでアプリーチタグ部分にエラーなどが出たら、上で紹介したようなタグの書き換えで対応できるかもしれません。
サイト アプリーチ
こんにちは!
寝ログさんのAMP対応の記事について、とてもありがたく拝見しております。
そのまま実施しようと思い、AMPタグ変換を打ち込んだのですが、以下のように出てしまい、記事が表示されなくなってしまいました…。
Fatal error: Cannot redeclare convert_appreach_for_amp() (previously declared in /home/c3545048/public_html/familynavi.jp/wp-content/themes/the-thor/inc/amp/convert.php:84) in /home/c3545048/public_html/familynavi.jp/wp-content/themes/the-thor/inc/amp/convert.php on line 84–
大変素人的な質問で恐縮ですが、解決方法について、もしわかりましたら、ご教授いただけないでしょうか?