以前、同様の記事を書いたが、今回テーマ変更して、テーマもろとも削除してしまったので(白目)、新たに設定しようとしたら、fancybox自体が新しくなっていたため、備忘録的に残す。前回同様、wordpressのプラグインは使用していない。
実装自体はとても簡単。キャプションをどう採用するかを現時点でのwordpressの仕様に併せて更新している感じ。
以下の内容は、wordpressは5以上、テーマはtwentytwentyで想定している。
まずはfancyappからスクリプトをダウンロードする
fancyappのサイトからダウンロードするか、CDNをコピーするなりする。
テーマ内のfunctions.phpへ必要なリンクを追加する
header.phpにリンクタグを貼りがちだが、wordpressでは、functions.phpにwp_enqueue_style()や、wp_enqueue_script()を使用して依存関係を指定して追加していくのが良い。
fancyboxはjQuery依存なので、以下のようなコードをfunctions.phpへ追加する。もちろんパスは自分の環境に併せて変えていく。
//fancybox css
wp_enqueue_style('fancybox-css', get_stylesheet_directory_uri() . '/lib/fancybox/jquery.fancybox.min.css');
//fancybox js
wp_enqueue_script('fancybox-js', get_stylesheet_directory_uri() . '/lib/fancybox/jquery.fancybox.min.js', array('jquery'));
wp_enqueue_scriptについては、公式ドキュメントで確認。
ごちゃごちゃ書いたが、ブラウザのソースへ以下のようにリンクタグが作成されていればOK。
- jquery.fancybox.min.css
- jquery本体
- jquery.fancybox.min.js
- 自分のjavascript(後述)
fancyboxを実装する
ここまできたらあとは実装のみ。fancyboxのキャプションをどうするかだが、隣接するfigcaptionタグのテキストを取る、figcaptionがなければ、imgのaltを取ることにする。そのコードが以下。
jQuery(function ($) {
//画像直リンクのセレクタ
//対応拡張子を増やす時は、ここに同じように追加すればOK
var fb_selecter = 'a[href $=".jpg"],a[href $=".png"],a[href $=".gif"]';
//fancybox実装
$(fb_selecter).fancybox({
//キャプション設定
caption : function( instance, item ) {
//隣接するfigcaptionを取得
var _caption = $(this).next('figcaption').text();
if(!_caption) {
//figcaptionがなければ、画像のaltから取得
_caption = $(this).children('img').attr('alt');
}
return _caption;
}
});
});
前述した「自分のjavascript」に上記コードを書く。
以上。
ライセンスについて
fancyboxの最新版は商用利用は有料となっているようですので、商用利用する場合は、公式サイトでライセンスの確認を行ってください。