Simplicityによるカスタムフィールドの要素追加を無効にする方法

Simplicityは、カスタムフィールドに11つの値を追加しますが、不要な場合に無効にする方法を紹介します。

2017年8月27日 Simplicity2.6.0に対応しました。掲載画像は旧バージョンのままです。

広告 (下に続く)

概要

Simplicityは、記事の投稿時に次のカスタムフィールドの値を追加します。

  • comment_form_freeze_message
  • is_ads_removed_in_page
  • is_comment_form_freeze
  • is_nofollow
  • is_noindex
  • is_noamp
  • meta_description
  • meta_keywords
  • page_type
  • seo_title
  • update_level

広告 (下に続く)

なんだか気になる…

設定の有無に関わらず、投稿時にすべての記事・固定ページにおいて追加されます。他にカスタムフィールドを用いた運用をしている際、目障りに感じることがあります。また、もし今後他のテーマに切り替える事になった際にすべて無意味になるので不便になる場合があります。

無効にする方法

次のコードを子テーマのfunctions.phpに追加します。このコードを追加してから、記事を投稿、更新すると値が追加されることなく、既に存在する場合は削除されます。1記事でも機能が必要な場合はその部分のコードは追加しないでください。

function seo_settings_admin_script(){} //←2.6.0にて発生するバグへの対処
function remove_simplicity_meta_boxes() {
 //コメント設定
 remove_meta_box( 'comment_setting_in_page','post', 'side' );
 //広告設定
 remove_meta_box( 'ad_setting_in_page', 'post', 'side' );
 remove_meta_box( 'ad_setting_in_page', 'page', 'side' );
 remove_meta_box( 'ad_setting_in_page', 'topic', 'side' );
 remove_meta_box( 'ad_setting_in_page', 'custom_post_type', 'side' );
 //SEO設定
 remove_meta_box( 'seo_setting_in_page', 'post', 'normal' );
 remove_meta_box( 'seo_setting_in_page', 'page', 'normal' );
 remove_meta_box( 'seo_setting_in_page', 'topic', 'normal' );
 remove_meta_box( 'seo_setting_in_page', 'custom_post_type', 'normal' );
 //ページ設定
 remove_meta_box( 'page_setting_in_page', 'post', 'side' );
 remove_meta_box( 'page_setting_in_page', 'page', 'side' );
 remove_meta_box( 'page_setting_in_page', 'topic', 'side' );
 remove_meta_box( 'page_setting_in_page', 'custom_post_type', 'side' );
 //amp設定
 remove_meta_box( 'amp_setting_in_page', 'post', 'side' );
 remove_meta_box( 'amp_setting_in_page', 'page', 'side' );
 //更新日の変更
 remove_meta_box( 'update_type_setting_in_page', 'post', 'side' );
 remove_meta_box( 'update_type_setting_in_page', 'page', 'side' );
 remove_meta_box( 'update_type_setting_in_page', 'custom_post_type', 'side' );
}
function remove_simplicity_meta_values() {
 //コメント設定
 delete_post_meta(get_the_ID(), 'comment_form_freeze_message');
 delete_post_meta(get_the_ID(), 'is_comment_form_freeze');
 //広告設定
 delete_post_meta(get_the_ID(), 'is_ads_removed_in_page');
 //SEO設定
 delete_post_meta(get_the_ID(), 'is_nofollow');
 delete_post_meta(get_the_ID(), 'is_noindex');
 delete_post_meta(get_the_ID(), 'meta_description');
 delete_post_meta(get_the_ID(), 'meta_keywords');
 delete_post_meta(get_the_ID(), 'seo_title');
 //ページ設定
 delete_post_meta(get_the_ID(), 'page_type');
 delete_post_meta(get_the_ID(), 'is_noamp');
 //amp設定
 delete_post_meta(get_the_ID(), 'is_noamp');
 //更新日の変更
 delete_post_meta(get_the_ID(), 'update_level');
}
add_action( 'admin_menu', 'remove_simplicity_meta_boxes' , 20);
add_action('save_post', 'remove_simplicity_meta_values' , 20);

結果

記載したコードすべて適用した場合の結果です。

表示項目

ビフォー

アフター

表示項目アフター

カスタムフィールド

ビフォー

アフター

消えたカスタムフィールド

ボックス

これらのボックスが消えます。

広告 (下に続く)

すでに追加されたカスタムフィールドを削除する方法

直接データベース(_postmetaテーブル)で削除することも可能ですが、Delete Custom Fieldsプラグインを使用すると簡単です。ただし、かなり昔のプラグインなので、脆弱性がある可能性があります。使い終わったらすぐに削除しておきましょう。

シェアする