アイキャッチ画像:AFFINGER4公式HP(https://the-money.net/)のスクリーンショットです。
AFFINGER4では標準でAMP対応機能が備わっています。
そんな中で、自分で作成したショートコード([ adsense ]←こんなのね)は標準で備わっている投稿ページを一括してAMP対応する。をしても自作ショートコードはAMPページには変換されませんでした。
過去記事を全部書き直すのはちょっと重労働かつ時間がかかってしまいます。
なので、なんとかできないものかとコードを眺めること…。で解決できました。
スポンサーリンク
具体的にAFFINGER4で自作ショートコードをAMP対応ページでも変換させる方法です。
AFFINGER4のAMP用のテンプレートでfunctions-amp.phpというのがあります。
その中を覗いてみると一番下にショートコードに関する変換コードが記載されています。
ここの部分です。
if ( ! function_exists( 'amp_shortcode_st_amp_ad' ) ) {
function amp_shortcode_st_amp_ad( $atts, $content = '' ) {
if ( ! amp_is_amp() ) {
return '';
}
ob_start();
get_template_part( 'st-ad', 'amp' );
return ob_get_clean();
}
}
add_shortcode( 'st-amp-ad', 'amp_shortcode_st_amp_ad' );
if ( ! function_exists( 'amp_shortcode_adsense' ) ) {
function amp_shortcode_adsense( $atts, $content = '' ) {
return amp_shortcode_st_amp_ad( $atts, $content );
}
}
この部分で元々機能として備わっていた[ adsense ]というショートコードを、
AMP対応ページにした時でも、
AMP用にアドセンスのショートコードを見事に変換してくれています。
そんなことを解読!?したので…。
自分で作成したアドセンスのショートコード[ adsense1 ]とかを、
AFFINGER4でデフォルトで備わっているAMP対応にさせた場合に、
自動的に変換させてもらおうと考えました。
そして、以下のようにコードを追加することで自分で作成したアドセンス用のショートコードを、AFFINGER4に備わっている機能で変換させてもらうことができます。
if ( ! function_exists( 'amp_shortcode_st_amp_ad' ) ) {
function amp_shortcode_st_amp_ad( $atts, $content = '' ) {
if ( ! amp_is_amp() ) {
return '';
}
ob_start();
get_template_part( 'st-ad', 'amp' );
return ob_get_clean();
}
}
add_shortcode( 'st-amp-ad', 'amp_shortcode_st_amp_ad' );
if ( ! function_exists( 'amp_shortcode_adsense1' ) ) {
function amp_shortcode_adsense1( $atts, $content = '' ) {
return amp_shortcode_st_amp_ad( $atts, $content );
}
}
ちょっと四苦八苦しましたが…。
無理やりまとめです。
とても簡単で要は、
adsenseという部分を自分で作成したショートコードの名前に変えるだけで、AFFINGER4がデフォルトで機能として備えているのを利用してAMP用のアドセンス広告コードに変換することができます。
以上、
AFFINGER4でアドセンス用広告に自分で作成したショートコードを変換させてもらう方法でした。
もしも、
同じようなことで悩んでいたりなんとかならないかなぁ…。
と考えている人のためと自分自身のために備忘録として残しておこうと思いました。
comment