こんにちは、段田です!
前回、「WordPress SEO by Yoastプラグインの基本機能」を紹介しました。
今回はカスタマイズする際に便利なAPIの紹介をしたいと思います。ます!
WordPress SEO by YoastプラグインのAPIは、WordPressのフィルターフックを利用しています。
そもそもフィルターフックとは?と思った方は、エンジニアひろゆきが以前「WordPressカスタマイズの幅が劇的に広がる、フィルターフックとアクションフックの使い方」を書いているので、こちらを確認しましょう。
主要なフィルターフックとアクションフックは、公式サイトに記載があります。
公式サイト:WordPress SEO API Docs WordPress plugin • Yoast
https://yoast.com/wordpress/plugins/seo/api/
実は公式サイト以外にも用意されているフィルターフック、アクションフックがありまして、実際に数えてみたら100を超えていました。(ちょっと泣きました)
で、それらを全部書くとなったら、恐らく私の口からIt’s my soulが飛び出てきますし、読む皆さんも大変だと思うので、メタタグに出力する際にカスタマイズするものに限定して紹介できればと思います。
まずはメタタグ系から。
titleタグの文言を書き換えることができます。
function lig_custom_title($title) { //条件分岐タグ等で条件毎に表示内容変えたりできますよ if ( is_page('member') ) { return '社員紹介'; } return $title; } add_filter( 'wpseo_title', 'lig_custom_title' );
メタディスクリプションを書き換えることができます。
function lig_custom_metadesc($metadesc) { //条件分岐タグ等で条件毎に表示内容変えたりできますよ if ( is_page('member') ) { return 'これから素敵なメンバーを紹介するぜ!ボーカル!タカヒロ!以上だ!'; } return $metadesc; } add_filter( 'wpseo_metadesc', 'lig_custom_metadesc' );
メタキーワードを書き換えることができます。※管理画面上でキーワードを有効時のみ利用可能。
function lig_custom_metakeywords($keywords) { //条件分岐タグ等で条件毎に表示内容変えたりできますよ if ( is_page('member') ) { return 'LIG,SEO,DEBU,DEBUEO'; } return $keywords; } add_filter( 'wpseo_metakeywords', 'lig_custom_metakeywords' );
canonicalのURLを書き換えることができます。
function lig_custom_canonical($canonical) { //条件分岐タグ等で条件毎に表示内容変えたりできますよ if ( is_page('member') ) { return site_url( '/lig_member/' ); } return $canonical; } add_filter( 'wpseo_canonical', 'lig_custom_canonical' );
複数ページにまたがる記事やコンテンツを関連付ける「rel=“next”」「rel=“prev”」タグを書き換えることができます。
タグ自体を出力しない、URLの表記を変えるなどが可能です。
function lig_remove_prev_next_links($link) { return ''; } add_filter('wpseo_next_rel_link', 'lig_remove_prev_next_links'); add_filter('wpseo_prev_rel_link', 'lig_remove_prev_next_links');
robotsタグの設定を変更することができます。無記入時はタグ自体を出力させません。
function lig_custom_robots($link) { return ''; } add_filter( 'wpseo_robots', 'lig_custom_robots' );
つづいて、FacebookのOGP系について。
OGPの「og:type」属性の内容を書き換えることができます。
function lig_custom_opengraph_type( $type ) { if ( is_page( 'movie' ) ){ return 'video'; } return $type; } add_filter( 'wpseo_opengraph_type', 'lig_custom_opengraph_type', 10, 1 );
OGPの「og:title」属性の内容(ページタイトル)を書き換えることができます。
function lig_custom_opengraph_title( $title ) { if ( is_404() ){ return 'ジェイから優しい御言葉'; } return $title; } add_filter( 'wpseo_opengraph_title', 'lig_custom_opengraph_title');
OGPの「og:description」属性の内容(ページ説明文)を書き換えることができます。
function lig_custom_opengraph_desc( $desc ) { if ( is_404() ){ return 'ハロー、俺の名前はジェイ。株式会社LIGの初代広報担当だ。アクセスしてくれた君に良い知らせと悪い知らせがあるんだが、どちらから先に聞きたい?'; } return $desc; } add_filter( 'wpseo_opengraph_desc', 'lig_custom_opengraph_desc');
OGPの「og:image」属性の内容(OGP画像URL)を書き換えることができます。
注意点として、あらかじめ管理画面上でOGP画像を設定していないと(記事ページはアイキャッチ画像のまま)動かない仕様になっています。
function lig_custom_opengraph_image( $img ) { if ( is_404() ){ return 'http://cdn.liginc.co.jp/wp-content/themes/ligtheme/images/notfound1.jpg'; } return $img; } add_filter( 'wpseo_opengraph_image', 'lig_custom_opengraph_image');
記事ページ限定の機能です。OGPの「og:image」属性・OGP画像のサムネイルサイズを書き換えることができます。
内部ではwp_get_attachment_image_src関数を実行しているので、サイズ名は、wp_get_attachment_image_srcで利用するもの(thumbnail、medium、largeなど)か、add_image_sizeで設定したものになります。
function lig_custom_opengraph_image_size( $img_size ) { return 'thumbnail'; } add_filter( 'wpseo_opengraph_image_size', 'lig_custom_opengraph_image_size');
OGPの「og:site_name」属性の内容(サイト名)を書き換えることができます。
function lig_custom_opengraph_site_name( $site_name ) { if ( is_404() ){ return '株式会社幻影旅団'; } return $site_name; } add_filter( 'wpseo_opengraph_site_name', 'lig_custom_opengraph_site_name');
OGPの「article:published_time」「article:modified_time」属性を、カスタム投稿タイプ記事ページで出力するか設定できます。
この属性は通常では投稿記事のみ出力される仕様になっているため、カスタム投稿タイプ記事ページで出力したい場合はこちらを使うことになります。
function lig_custom_opengraph_show_publish_date( $flag ) { return true; } add_filter( 'wpseo_opengraph_show_publish_date','lig_custom_opengraph_show_publish_date');
OGPの「og:url」属性の内容(ページURL)を書き換えることができます。
function lig_custom_opengraph_url( $url ) { if ( is_404() ){ return 'http://liginc.co.jp/404_jay'; } return $url; } add_filter( 'wpseo_opengraph_url', 'lig_custom_opengraph_url');
OGPの「fb:admins」属性の内容(管理者ID)を書き換えることができます。
しかし、ソース見る限り、管理画面で1アカウント以上の登録がないと実行されないようになっているので、ご注意ください。
function lig_custom_opengraph_admin( $adminstr ) { return 'xxxxxxxxxx,yyyyyyyyyy,zzzzzzzzzz'; } add_filter( 'wpseo_opengraph_admin','lig_custom_opengraph_admin');
OGPの「article:author」属性の内容(著者)を書き換えることができます。
記事ページのみで利用可能です。
function lig_custom_opengraph_author_facebook( $adminstr ) { return 'jay'; } add_filter( 'wpseo_opengraph_author_facebook','lig_custom_opengraph_author_facebook');
OGP localeタグの内容を書き換えることができます。
function lig_custom_locale($canonical) { return 'en_US'; } add_filter( 'wpseo_locale', 'lig_custom_locale' );
XXXXXXの部分はOGPタグのproperty名を「:」から「_」に変換した名称が入ります。
つまりOGPタグ内容を直接指定して書き換えるフィルターになります。
こちらのフィルターはOGPタグを出力する直前になりますので、先ほどまで紹介したOGPタグフィルターと同じ効果のある物を指定した場合は、こちらのフィルターが優先される形になります。ご注意ください。
function lig_custom_og_og_description( $desc ) { if ( is_404() ){ return 'ジェイから優しい御言葉'; } return $desc; } add_filter( 'wpseo_og_og_description', 'lig_custom_og_og_description');
つぎは、TwitterCard系について。
「twitter:title」属性の内容(タイトル)を書き換えることができます。
function lig_custom_twitter_title( $title ) { if ( is_404() ){ return 'ジェイから優しい御言葉'; } return $title; } add_filter( 'wpseo_twitter_title', 'lig_custom_twitter_title');
「twitter:description」属性の内容(ページ説明文)を書き換えることができます。
function lig_custom_twitter_description( $desc ) { if ( is_404() ){ return 'ハロー、俺の名前はジェイ。株式会社LIGの初代広報担当だ。アクセスしてくれた君に良い知らせと悪い知らせがあるんだが、どちらから先に聞きたい?'; } return $desc; } add_filter( 'wpseo_twitter_description', 'lig_custom_twitter_description');
「twitter:site」属性のサイトTwitterアカウント名を書き換えることができます。
function lig_custom_twitter_site( $title ) { return 'LIG_J'; } add_filter( 'wpseo_twitter_site', 'lig_custom_twitter_site');
「twitter:site」属性のコンテンツ作成者Twitterアカウント名を書き換えることができます。
function lig_custom_twitter_creator_account( $title ) { return 'danda_debu'; } add_filter( 'wpseo_twitter_creator_account', 'lig_custom_twitter_creator_account');
「twitter:image:src」属性の内容(画像URL)を書き換えることができます。
タイプが「Summary with large image」でないといけません。
function lig_custom_twitter_image( $img ) { if ( is_page('member')){ return 'http://cdn.liginc.co.jp/wp-content/themes/ligtheme/images/notfound1.jpg'; } return $img; } add_filter( 'wpseo_twitter_image', 'lig_custom_twitter_image');
記事ページ限定の機能です。
「twitter:image:src」属性のサムネイルサイズを書き換えることができます。
内部でwp_get_attachment_image_src関数を実行しているので、サイズ名は、wp_get_attachment_image_srcで利用するもの(thumbnail、medium、largeなど)か、add_image_sizeで設定したものになります。
function lig_custom_twitter_image_size( $img_size ) { return 'thumbnail'; } add_filter( 'wpseo_twitter_image_size', 'lig_custom_twitter_image_size');
TwitterCardメタタグのname属性(上記でのname部分)を書き換えることができます。
これを使うタイミングって、いまあるんですかね・・・?
function lig_custom_twitter_metatag_key( $keyname ) { return 'title'; } add_filter( 'wpseo_twitter_metatag_key', 'lig_custom_twitter_metatag_key');
「twitter:card」属性の内容を書き換えることができます。
function lig_custom_twitter_card_type( $type ) { if ( is_page('gallery') ){ return 'gallery'; } return $type; } add_filter( 'wpseo_twitter_card_type', 'lig_custom_twitter_card_type');
「twitter:url」属性の内容(ページURL)を書き換えることができます。
function lig_custom_twitter_url( $url ) { if ( is_page('member') ){ return 'http://liginc.co.jp/404_jay'; } return $url; } add_filter( 'wpseo_twitter_url', 'lig_custom_twitter_url');
「twitter:domain」属性の内容(サイトドメイン)を書き換えることができます。
function lig_custom_twitter_domain( $domain ) { if ( is_page('member') ){ return 'http://liginc.co.jp/404_jay'; } return $domain; } add_filter( 'wpseo_twitter_domain', 'lig_custom_twitter_domain');
name属性の内容(タイトル)を書き換えることができます。
function lig_custom_googleplus_title( $title ) { if ( is_page('member') ){ return '竹内親衛隊'; } return $title; } add_filter( 'wpseo_googleplus_title', 'lig_custom_googleplus_title');
description属性の内容(ページ説明文)を書き換えることができます。
function lig_custom_googleplus_desc( $desc ) { if ( is_page('member')){ return '私のお墓の前で泣かないでください'; } return $desc; } add_filter( 'wpseo_googleplus_desc', 'lig_custom_googleplus_desc');
image属性の内容(画像URL)を書き換えることができます。
function lig_custom_googleplus_image( $img ) { if ( is_page('member')){ return 'http://cdn.liginc.co.jp/wp-content/themes/ligtheme/images/notfound1.jpg'; } return $img; } add_filter( 'wpseo_googleplus_image', 'lig_custom_googleplus_image');
いかがだったでしょうか?
今回紹介したAPIの他に、サイトマップやパンくずなどの機能、管理画面の設定部分をカスタマイズAPIも用意されています。こちらは実際にソースコードを眺めて確認してみるといいでしょう。
(こ、心が折れて書けなかったわけじゃ・・・ないんだから!)
プラグインで豊富にAPI(フィルター)が用意されているので、制作案件でも凄く助かります。更新頻度も多いので、今後もAPIの増減はあると思いますが、更新履歴もチェックするといいでしょう。
ではではーーー
【いろんなAPI】
※ YouTube動画コンテンツの埋め込みをしよう【実践編・YouTubeAPIを使ってプラグインを作ってみた】
※ TwitterAPIを使ってMovable Type詳細ページに付加価値を与える方法
※ CakePHPでBitbucketのAPIを利用する方法