WordPress Flickr 画像に自動的に著作者クレジットを付ける

WordPress の埋め込み oEmbed を使って記事に挿入した Flickr 等の画像に自動的に著作者情報のクレジットを付けるプログラムを紹介します

画像埋め込み方法

WordPressでは、oEmbed という方法を使って Flickr や Instagram 等の画像を簡単に記事に挿入できるようになっています

Flickr 等の画像URLをコピーして、記事作成時にビジュアルモード編集画面にそのまま貼り付けて挿入すれば、画像が表示されるっていう分かりやすい機能です

著者クレジットリンク表示

プログラムを有効にしておくとこんな感じに作品タイトルと著作者のリンクが付加されます

photo-caption1

photo-caption-2

埋め込みがうまくいかない場合

動画URL が独立した行に書かれているか、あるいはリンクとして記述していないことを確認して下さい

とても良く使われているプラグインの TinyMCE Advanced の Stop removing the <p> and <br /> tags when saving and show them in the Text editor をチェックしていると行頭と行末に <p>,</P> がついてしまい埋め込みコードとして認識されない場合があります

このような時は、embed ショートコードを使えばOKです。また embed を使えば任意のサイズというわけではないですが、一応サイズの指定もできます

[embed width="123" height="456"]...[/embed]

 プログラムコード

// oEmbed 埋め込み画像(Flickr/Instagram 等)の html キャッシュ対象データに作品名/作者のキャプションデータを追加
// 
// ※対象は oEmbed photo タイプの場合のみ
//   画像の aタグを取り除きリンク解除(代わりにキャプションをリンクにする)
//   取得した html はWordPressコアでキャッシュされるので既にキャッシュがある場合は1日たたないとフィルターフックされない
//   通常のキャプションなしの場合と表示位置を合わせるために alignleft クラスを付加 
//
function celtispack_photo_caption( $html, $data, $url ) {
    $newhtml = $html;
	if ( is_object( $data ) && !empty( $data->type ) ){
        if($data->type == 'photo' && !empty( $data->title ) && !empty( $data->author_name )){
            if( preg_match('/<img.+?src=[\'\"]([^\'"]+)[\'\"].*?>/i', $html, $match)){
                $newhtml = $match[0];
            }
            if(!empty( $data->author_url ) ){
                $caption = '<a href="' .esc_url($url) . '">' . esc_attr($data->title).  '</a><a href="' .esc_url($data->author_url) . '"> / ' .esc_attr($data->author_name) . '</a>';
            }
            else {
                $caption = '<a href="' .esc_url($url) . '">' . esc_attr($data->title). ' / ' . esc_attr($data->author_name) . '</a>';
            }
            if ( current_theme_supports( 'html5', 'caption' ) ) {
                $newhtml = "<figure class='wp-caption alignleft'>" . $newhtml . "<figcaption class='wp-caption-text'>" . $caption . "</figcaption></figure>";
            }
            else {
                $newhtml = "<div class='wp-caption alignleft'>" . $newhtml . "<p class='wp-caption-text'>" . $caption . "</p></div>";
            }
        }
    }
    return $newhtml;
}
add_filter( 'oembed_dataparse', 'celtispack_photo_caption', 12, 3 );

このコードを使用しているテーマの function.php に貼り付ければ動作するはずです

通常の埋め込み処理のキャッシュデータ保存前にフックして、photo タイプの埋め込みコードなら画像に設定されているリンクを取り除き、代わりにキャプションに作品タイトルと著作者の2つのリンクを付加しています

Flickr だけでなく oEmbed 対応で Photo タイプの画像埋め込みなら同じように動作するはずです

プログラムコードも短いのでカスタマイズも簡単だと思います (^^)

ちなみにこの機能は、celtispack Ver1.10 プラグインで対応しています

以上

自動的に埋め込み画像のキャプションへ著作クレジットを付加するプログラムを紹介しました

 


まとめ記事紹介

search star user home refresh tag chevron-left chevron-right exclamation-triangle calendar comment folder thumb-tack navicon angle-double-up angle-double-down angle-up angle-down quote-left googleplus facebook instagram twitter rss