All in One SEOでdescriptionタグの出力をオフにする裏技

WordpressのSEO対策プラグイン「All in One SEO (AIOSEO)」でディスクリプションタグの一括指定ができますが
ディスクリプションタグをテーマに直接書いていたり、他のプラグインで出力している場合
このようにしていても...
<head>
<meta charset="utf-8">
<title>記事のタイトル</title>
<meta name="description" content="<?php the_title(); ?>についてご紹介">
(省略)
</head>
このようにdescriptionタグが上書きされてしまいます。
<head>
<meta charset="utf-8">
<meta name="description" content="○○についてご紹介">
<!-- All in One SEO 4.X -->
<title>記事のタイトル - サイトのタイトル</title>
<meta name="description" content="AIOSEOデフォルトだと記事の冒頭の文章が入る">
<!-- All in One SEO -->
(省略)
</head>
そこで、All in One SEOのdescriptionタグの出力をオフにする裏技をご紹介します。
ちなみに、タイトルタグでも同様のことをする場合はこちら
結論
フィルターフックを使います。
これをfunctions.phpに貼り付け。
//ディスクリプションをオフ
add_filter( 'aioseo_description', 'aioseo_filter_description' );
function aioseo_filter_description( $description ) {
return false;
}
すると、全ページでdescriptionタグが出力されなくなります。
「投稿と固定ページのみ」など特定のページのみオフにする場合はこう。
//ディスクリプションをオフ
add_filter( 'aioseo_description', 'aioseo_filter_description' );
function aioseo_filter_description( $description ) {
if ( is_single() || is_page() ) {
return false;
}
return $description;
}
目的のページを判定してfalseを返すと、タグが出なくなります。
公式ドキュメントはこちら
注意点
このフィルターフックは本来、ディスクリプションを書き換えるためのものなので、falseを返すとどうなるのか?については公式ドキュメントにも言及されていません。
しかし、プラグインフォルダのall-in-one-seo-pack/app/Common/Views/main/meta.phpを見ると
<?php if ( $description ) : ?>
<meta name="description" content="<?php echo esc_attr( $description ); ?>" />
<?php endif; ?>
「$description」がtrueとなる場合に出力されるように書かれており、フィルターフックでfalseを返すとここの変数は空文字となりfalseになるので、少なくとも検証環境のAIOSEOバージョン4.1.8ではエラーとはならなそうです。
という訳で、仕様通りの使い方ではない気もするので、メンテナンスできる方のみ自己責任でお願いします。
今後のアプデでなにか変わっていたら コメントで教えてください。
お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。
または以下のボタンからなにか買って応援 (PR)