テクノロジー観測所

Technology Observatory(テクノロジー観測所)は"初心者を卒業した(い)"人を対象とする情報サイトです。

WordPressのAMPページにSNSボタンを設置する方法と好きなボタンの増やし方

この記事は約13分1秒で読めます

wordpress_amp_sns_button

というわけで、テクノロジー観測所も来るべきMFI(モバイルファーストインデックス)に向けてAMPを導入しました。

といってもWordPressなのでプラグインを使ってお手軽に実装できます。これ非常にありがたいですね。

せっかく導入するからにはカスタマイズにも手を出そうと思って、CSSとSNSボタンを追加してみました。今回はその中のSNSボタンの追加方法をお話しします。

AMP記事の末尾にSNSボタンを置く方法

ボタンのレイアウトおよび基本コードはこちらを参考にさせていただきました。

AMPプラグインで記事下にSNSボタンを追加する方法

紹介されているコードをコピーしてfunctions.phpに追記します。

これだけだとただの一行テキストリンクになりますので、続いてCSSも追記します。

上記リンクを参考に、エリア内に以下のCSSコードを追記します。


初めてAMPプラグインにCSSを追記する場合は「PHP込み」を、
既にAMPプラグインにCSSを追記するコードをfunctions.phpに書いている場合は「PHP抜き」をコピペしてください。

wordpress_amp_sns_button_build

非常に見栄えがよく、シンプルなAMPの中で視認性抜群のデザインですね。

ただ、使用させていただいた基本コードだと「Twitter」「Facebook」「LINE」の3種類しかボタンがありません。そこで、自分でいくつかのボタンを増やしてみました。

AMPページに表示するSNSボタンを追加してみた

wordpress_amp_sns_button_build_hatena_bookmark

スタイルをそのまま流用させていただき、はてブボタンを追加しました。

ボタンを追加するには、先程functions.phpに追加した基本コードにいくつかの要素を足す必要があります。

はてブボタンの関数を追記
		$url_encode=urlencode(get_permalink());
        $twitter = '<a href="http://twitter.com/share?text='.urlencode(the_title( "" , "" , 0 )).'&url='.$url_encode.'"><span class="text">Twitter</span></a>';
        $facebook = '<a href="http://www.facebook.com/sharer.php?src=bm&u='.$url_encode.'&t='.$title_encode.'"><span class="text">Facebook</span></a>';
        $line = '<a href="//line.me/R/msg/text/?'.$title_encode.'%0A'.$url_encode.'"><span class="text">LINEで送る</span></a>';
        $hatebu = '<a href="//b.hatena.ne.jp/add?mode=confirm&url='.$url_encode.';title='.$title_encode.'"><span class="text" rel="nofollow" title="はてなブックマーク">ブックマーク</span></a>';
        $social = "<div class='share amp'>";
        $social .= "<h4>この記事をシェアする</h4>";
        $social .= "<span class='twitter snslist'>" . $twitter . "</span>";
        $social .= "<span class='facebook snslist'>" . $facebook . "</span>";
        $social .= "<span class='line snslist'>" . $line . "</span>";
        $social .= "<span class='hatebu snslist'>" . $hatebu . "</span>";
        $social .= "</div>";
	    $content .= $social;
	    return $content;

赤字部分が追記した箇所です。
たぶん見ただけで察しがつくかと思いますが、コード内に日本語で「ブックマーク」って入ってる部分がボタンに表示されるテキストです。ここを「はてブ」にすればそう表示されます。

はてブボタンのCSSを追記
.share.amp .snslist.line a {
  background:#25af00;
  box-shadow:0 3px 0 #219900;
}
.share.amp .snslist.hatebu a {
  background:#008fde;
  box-shadow:0 3px 0 #219900;
}
/* ここまで */

CSS記載エリアの末尾に .hatebu クラスセレクタを追記しています。
ボタンの色はこちらを参考に、はてブのテーマカラー「#008fde」を指定。立体感を持たせるため下部が暗くなっている部分には若干濃い色にして指定します。

SNSボタンを追加する時のコードの書き方

注意

自己流です。もっといい方法があったらゴメンナサイ!また、全ての作業はGoogle Chromeで行っています。

html_sns_button_source_code_new

まず追加したいサービスのSNSボタンを右クリックして「検証」を選びます。

するとGoogleデベロッパーツールが起動するはずです。

html_source_code_a_tag_copy

デベロッパーツールが、選択したSNSボタンの部分に合わさっていると思います。この中からリンクが入っている<a>タグを探して選択します。

選択した状態で右クリック、「Copy」→「Copy outerHTML」と選択します。

するとタグが丸ごとクリップボードにコピーされるので、適当なエディタに貼り付けます。

sublime_text_syntax_html_view
サンプル:はてブのSNSボタンコード
<a href="//b.hatena.ne.jp/add?mode=confirm&amp;url=https://tec-obs.com/?p=1846&amp;title=WordPress%E3%81%AEAMP%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%ABSNS%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E8%A8%AD%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%A8%E5%A5%BD%E3%81%8D%E3%81%AA%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E5%A2%97%E3%82%84%E3%81%97%E6%96%B9" target="blank" class="balloon-btn-link hatena-balloon-btn-link" rel="nofollow" title="はてなブックマーク">
          <span class="icon">はてなブックマーク</span>
        </a>

こんな感じ。続いてこのタグをWordPressのPHPで認識できるようにします。
基本コードの様式をそのまま真似ればいいだけなので、比較的簡単です。

URLを関数に変換
タグの開始直後、 href=" についているのがリンク先のURLです。
少し読み進めていくと url= と書かれている部分があります。ここにこのページ(ブックマーク登録しようとしたページ)のURLが入ります。

このままだとURLが指定されているため、サイト内のどこにはてブボタンを置いても、常に tec-obs.com/p=1846 が登録されてしまいます。
そこで、サイトドメインとなる https://tec-obs.com/ 以降の部分を動的に(=ボタンを押した時に開いていたページのURLに)する必要があります。そこで関数を使います。

&url='.$url_encode.';

こうです。両端をシングルクォート ' とドット . で挟むようです。

ページタイトルを関数に変換

続いてURLのすぐ後ろにくっついている title= も変換します。
ほとんどの場合ページタイトルは日本語となるため、エンコードされちゃってかなり長くなっていると思います。%AとかBSとかわけのわからない文字列となっているところがエンコードされた日本語テキスト部分です。これを関数に変換します。

&title='.$title_encode.'"

こうです。なおもともとのHTMLコードを見た時、titleの後ろにセミコロン ; ではなくダブルクォート " がついています。こうした要素を間違えて消したりすると大変なことになるので、注意して扱ってください。変換する部分以外は全て元のHTML形式のコードをそのまま使います。

以上の作業で次のようなコードができあがっているはずです。

<a href="//b.hatena.ne.jp/add?mode=confirm&url='.$url_encode.';title='.$title_encode.'" target="blank" class="balloon-btn-link hatena-balloon-btn-link" rel="nofollow" title="はてなブックマーク">
          <span class="icon">はてなブックマーク</span>
        </a>

あと一歩です。

AMP CSSに追記したクラスセレクタを使えるようにする

基本コードで使用しているCSSクラスは class="text" です。
一方、WordPressテーマが使用しているCSSクラスは class="icon" でした。(※このサイトのはてブボタンからコードをコピった場合)
このままでは正しいCSSが適用できません。そこで、

<span class="text">はてなブックマーク</span>

これで他のボタンと同じ .text が使えるようになります。

できあがったコード
<a href="//b.hatena.ne.jp/add?mode=confirm&url='.$url_encode.';title='.$title_encode.'" target="blank" class="balloon-btn-link hatena-balloon-btn-link" rel="nofollow" title="はてなブックマーク"><span class="text">はてなブックマーク</span></a>

他のボタンのコードが一行で表記されているので、改行は全て削除して一行にまとめてみました。

最後の最後、余計なものとして赤字部分は削除しちゃいます。基本コードでお借りしてきたCSSの中に入っていないクラスなので、競合したら面倒ですからね。

もう1つ注意点として、もしかしたらこの時点で confirm&url など「&」記号がエスケープ処理され、 confirm&amp;url のようになっているかもしれません。その場合は amp; 部分を削除し、記号として記述してください。
完成版
<a href="//b.hatena.ne.jp/add?mode=confirm&url='.$url_encode.';title='.$title_encode.'" target="blank" rel="nofollow" title="はてなブックマーク"><span class="text">はてなブックマーク</span></a>

ではこれをfunctionns.phpに追記します。
この時も、他のボタンと同じように記載するのがコツです。

functions.phpに追記するコード
$hatebu = '<a href="//b.hatena.ne.jp/add?mode=confirm&url='.$url_encode.';title='.$title_encode.'" target="blank" rel="nofollow" title="はてなブックマーク"><span class="text">はてなブックマーク</span></a>';

新しく $hatebu という関数を作り、その中身として完成版のコードを記載します。
次は関数を呼び出すコードです。

$hatebu関数を呼び出すコード
$social .= "<span class='hatebu snslist'>" . $hatebu . "</span>";

きちんと対応するCSSセレクタも作る必要があります。

tec-obs_amp_sns_button_add_pocket

同じやり方でPocketも追加してみました。

getpocket_sns_button_operation_check

動作確認も忘れずに。

もしも実物をご覧になりたい場合はモバイル環境(AMP表示できる環境)で、この記事のURLの末尾に /amp/ と付け足してください。
ページ最下部の広告の手前に表示されるはずです。表示がおかしい場合はご連絡いただけるとうれしいです。

関連記事

  1. wordpress-seo-plugins-5-selection
  2. next_scripts_social_network_auto_poster_plugin

コメントをお待ちしております

HTMLタグはご利用いただけません。