こんにちは、段田です!
前回、「WordPress SEO by Yoastプラグインの基本機能」を紹介しました。
今回はカスタマイズする際に便利なAPIの紹介をしたいと思います。ます!
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が飛び出てきますし、読む皆さんも大変だと思うので、メタタグに出力する際にカスタマイズするものに限定して紹介できればと思います。
API一覧
メタタグ系
まずはメタタグ系から。
wpseo_title
titleタグの文言を書き換えることができます。
function lig_custom_title($title) {
//条件分岐タグ等で条件毎に表示内容変えたりできますよ
if ( is_page('member') ) {
return '社員紹介';
}
return $title;
}
add_filter( 'wpseo_title', 'lig_custom_title' );
wpseo_metadesc
メタディスクリプションを書き換えることができます。
function lig_custom_metadesc($metadesc) {
//条件分岐タグ等で条件毎に表示内容変えたりできますよ
if ( is_page('member') ) {
return 'これから素敵なメンバーを紹介するぜ!ボーカル!タカヒロ!以上だ!';
}
return $metadesc;
}
add_filter( 'wpseo_metadesc', 'lig_custom_metadesc' );
wpseo_metakeywords
メタキーワードを書き換えることができます。※管理画面上でキーワードを有効時のみ利用可能。
function lig_custom_metakeywords($keywords) {
//条件分岐タグ等で条件毎に表示内容変えたりできますよ
if ( is_page('member') ) {
return 'LIG,SEO,DEBU,DEBUEO';
}
return $keywords;
}
add_filter( 'wpseo_metakeywords', 'lig_custom_metakeywords' );
wpseo_canonical
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' );
wpseo_next_rel_link/wpseo_prev_rel_link
複数ページにまたがる記事やコンテンツを関連付ける「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');
wpseo_robots
robotsタグの設定を変更することができます。無記入時はタグ自体を出力させません。
function lig_custom_robots($link) {
return '';
}
add_filter( 'wpseo_robots', 'lig_custom_robots' );
Facebook OGP系
つづいて、FacebookのOGP系について。
wpseo_opengraph_type
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 );
wpseo_opengraph_title
OGPの「og:title」属性の内容(ページタイトル)を書き換えることができます。
function lig_custom_opengraph_title( $title ) {
if ( is_404() ){
return 'ジェイから優しい御言葉';
}
return $title;
}
add_filter( 'wpseo_opengraph_title', 'lig_custom_opengraph_title');
wpseo_opengraph_desc
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');
wpseo_opengraph_image
OGPの「og:image」属性の内容(OGP画像URL)を書き換えることができます。
注意点として、あらかじめ管理画面上でOGP画像を設定していないと(記事ページはアイキャッチ画像のまま)動かない仕様になっています。
function lig_custom_opengraph_image( $img ) {
if ( is_404() ){
return 'https://liginc.co.jp/wp-content/themes/ligtheme/images/notfound1.jpg';
}
return $img;
}
add_filter( 'wpseo_opengraph_image', 'lig_custom_opengraph_image');
wpseo_opengraph_image_size
記事ページ限定の機能です。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');
wpseo_opengraph_site_name
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');
wpseo_opengraph_show_publish_date
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');
wpseo_opengraph_url
OGPの「og:url」属性の内容(ページURL)を書き換えることができます。
function lig_custom_opengraph_url( $url ) {
if ( is_404() ){
return 'https://liginc.co.jp/404_jay';
}
return $url;
}
add_filter( 'wpseo_opengraph_url', 'lig_custom_opengraph_url');
wpseo_opengraph_admin
OGPの「fb:admins」属性の内容(管理者ID)を書き換えることができます。
しかし、ソース見る限り、管理画面で1アカウント以上の登録がないと実行されないようになっているので、ご注意ください。
function lig_custom_opengraph_admin( $adminstr ) {
return 'xxxxxxxxxx,yyyyyyyyyy,zzzzzzzzzz';
}
add_filter( 'wpseo_opengraph_admin','lig_custom_opengraph_admin');
wpseo_opengraph_author_facebook
OGPの「article:author」属性の内容(著者)を書き換えることができます。
記事ページのみで利用可能です。
function lig_custom_opengraph_author_facebook( $adminstr ) {
return 'jay';
}
add_filter( 'wpseo_opengraph_author_facebook','lig_custom_opengraph_author_facebook');
wpseo_locale
OGP localeタグの内容を書き換えることができます。
function lig_custom_locale($canonical) {
return 'en_US';
}
add_filter( 'wpseo_locale', 'lig_custom_locale' );
wpseo_og_XXXXXX
XXXXXXの部分はOGPタグのproperty名を「:」から「_」に変換した名称が入ります。
- 例
- og:description → wpseo_og_og_description
article:author → wpseo_og_article_author
つまり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系
つぎは、TwitterCard系について。
wpseo_twitter_title
「twitter:title」属性の内容(タイトル)を書き換えることができます。
function lig_custom_twitter_title( $title ) {
if ( is_404() ){
return 'ジェイから優しい御言葉';
}
return $title;
}
add_filter( 'wpseo_twitter_title', 'lig_custom_twitter_title');
wpseo_twitter_description
「twitter:description」属性の内容(ページ説明文)を書き換えることができます。
function lig_custom_twitter_description( $desc ) {
if ( is_404() ){
return 'ハロー、俺の名前はジェイ。株式会社LIGの初代広報担当だ。アクセスしてくれた君に良い知らせと悪い知らせがあるんだが、どちらから先に聞きたい?';
}
return $desc;
}
add_filter( 'wpseo_twitter_description', 'lig_custom_twitter_description');
wpseo_twitter_site
「twitter:site」属性のサイトTwitterアカウント名を書き換えることができます。
function lig_custom_twitter_site( $title ) {
return 'LIG_J';
}
add_filter( 'wpseo_twitter_site', 'lig_custom_twitter_site');
wpseo_twitter_creator_account
「twitter:site」属性のコンテンツ作成者Twitterアカウント名を書き換えることができます。
function lig_custom_twitter_creator_account( $title ) {
return 'danda_debu';
}
add_filter( 'wpseo_twitter_creator_account', 'lig_custom_twitter_creator_account');
wpseo_twitter_image
「twitter:image:src」属性の内容(画像URL)を書き換えることができます。
タイプが「Summary with large image」でないといけません。
function lig_custom_twitter_image( $img ) {
if ( is_page('member')){
return 'https://liginc.co.jp/wp-content/themes/ligtheme/images/notfound1.jpg';
}
return $img;
}
add_filter( 'wpseo_twitter_image', 'lig_custom_twitter_image');
wpseo_twitter_image_size
記事ページ限定の機能です。
「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');
wpseo_twitter_metatag_key
TwitterCardメタタグのname属性(上記でのname部分)を書き換えることができます。
これを使うタイミングって、いまあるんですかね・・・?
function lig_custom_twitter_metatag_key( $keyname ) {
return 'title';
}
add_filter( 'wpseo_twitter_metatag_key', 'lig_custom_twitter_metatag_key');
wpseo_twitter_card_type
「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');
wpseo_twitter_url
「twitter:url」属性の内容(ページURL)を書き換えることができます。
function lig_custom_twitter_url( $url ) {
if ( is_page('member') ){
return 'https://liginc.co.jp/404_jay';
}
return $url;
}
add_filter( 'wpseo_twitter_url', 'lig_custom_twitter_url');
wpseo_twitter_domain
「twitter:domain」属性の内容(サイトドメイン)を書き換えることができます。
function lig_custom_twitter_domain( $domain ) {
if ( is_page('member') ){
return 'https://liginc.co.jp/404_jay';
}
return $domain;
}
add_filter( 'wpseo_twitter_domain', 'lig_custom_twitter_domain');
Google+系
wpseo_googleplus_title
name属性の内容(タイトル)を書き換えることができます。
function lig_custom_googleplus_title( $title ) {
if ( is_page('member') ){
return '竹内親衛隊';
}
return $title;
}
add_filter( 'wpseo_googleplus_title', 'lig_custom_googleplus_title');
wpseo_googleplus_desc
description属性の内容(ページ説明文)を書き換えることができます。
function lig_custom_googleplus_desc( $desc ) {
if ( is_page('member')){
return '私のお墓の前で泣かないでください';
}
return $desc;
}
add_filter( 'wpseo_googleplus_desc', 'lig_custom_googleplus_desc');
wpseo_googleplus_image
image属性の内容(画像URL)を書き換えることができます。
function lig_custom_googleplus_image( $img ) {
if ( is_page('member')){
return 'https://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を利用する方法
※ ChatWorkの定期連絡を自動化!Chatwork APIを使って業務効率化してみた。
※ Node.jsからGoogle Analytics APIにアクセスし、GA情報を表示させよう
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。