WordPress:投稿画面でタイトル、コンテンツ、カテゴリー選択、アイキャッチなどを入力必須にする方法

WordPress:投稿画面でタイトル、コンテンツ、カテゴリー選択、アイキャッチなどを入力必須にする方法

備忘録。
WordPressは新規投稿する際にタイトルやコンテンツが空欄で何も入力されていなかった場合でも公開することができてしまうのですが、それを指定した部分が入力されていない時はアラート表示して公開させないようにする方法です。
以前にもタイトルとコンテンツが未入力の場合にアラート表示させることで入力必須にする方法は書いたのですが、コンテンツ部分の記述方法を少し変更しており、そこでは書いていないカテゴリー選択やアイキャッチといった他の部分にも設定する方法も併せて書いておきます。

コードは「投稿」の新規・編集画面に対して実装する場合のもので、下記をfunctions.phpに記述します。
一応コメントをつけていますが、上から以下のような順で各箇所が未入力 または 未選択だった場合にアラート表示するという記述になっています。

  • タイトル
  • コンテンツ(エディタ)
  • 抜粋
  • カテゴリー
  • タグ
  • アイキャッチ

functions.php

add_action( 'admin_head-post-new.php', 'post_edit_required' );
add_action( 'admin_head-post.php', 'post_edit_required' );
function post_edit_required() {
?>
<script type="text/javascript">
jQuery(function($) {
  if( 'post' == $('#post_type').val() ) {
    $('#post').submit(function(e) {
      // タイトル
      if ( '' == $('#title').val() ) {
        alert('タイトルを入力してください');
        $('.spinner').css('visibility', 'hidden');
        $('#publish').removeClass('button-primary-disabled');
        $('#title').focus();
        return false;
      }
      // コンテンツ(エディタ)
      if ( $('.wp-editor-area').val().length < 1 ) {
        alert('コンテンツを入力してください');
        $('.spinner').css('visibility', 'hidden');
        $('#publish').removeClass('button-primary-disabled');
        return false;
      }
      // 抜粋
      if ( '' == $('#excerpt').val() ) {
        alert('抜粋を入力してください');
        $('.spinner').css('visibility', 'hidden');
        $('#publish').removeClass('button-primary-disabled');
        $('#excerpt').focus();
        return false;
      }
      // カテゴリー
      if ( $('#taxonomy-category input:checked').length < 1 ) {
        alert('カテゴリーを選択してください');
        $('.spinner').css('visibility', 'hidden');
        $('#publish').removeClass('button-primary-disabled');
        $('#taxonomy-category a[href="#category-all"]').focus();
        return false;
      }
      // タグ
      if ( $('#tagsdiv-post_tag .tagchecklist span').length < 1 ) {
        alert('タグを選択してください');
        $('.spinner').css('visibility', 'hidden');
        $('#publish').removeClass('button-primary-disabled');
        $('#new-tag-post_tag').focus();
        return false;
      }
      // アイキャッチ
      if ( $('#set-post-thumbnail img').length < 1 ) {
        alert('アイキャッチ画像を設定してください');
        $('.spinner').css('visibility', 'hidden');
        $('#publish').removeClass('button-primary-disabled');
        $('#set-post-thumbnail').focus();
        return false;
      }
    });
  }
});
</script>
<?php
}

上記は「投稿」の場合になりますが、もちろん固定ページやカスタム投稿などでも利用可能です。

例えば「固定ページ」で利用したい場合は、7行目で記述しているif( 'post' == $('#post_type').val() )を下記のようにすれば固定ページで実装できます。

if ( 'page' == $('#post_type').val() )

また、「投稿」と「固定ページ」の両方で実装したい場合は、同じく7行目で記述している部分を以下のようにすれば両方でアラート表示を実装できます。

if ( 'post' == $('#post_type').val() || 'page' == $('#post_type').val() )

カスタム投稿の場合は、例えば「news」という投稿タイプに対して実装したい時に7行目を以下のように記述します。

if ( 'news' == $('#post_type').val() )

上記のように指定していけば他の投稿タイプでもアラート表示を実装できますが、例えばカテゴリー選択など投稿タイプによって記述されているIDが変更される箇所があるので、他の投稿タイプで使用する場合は各箇所で指定されているIDやクラスを確認するなどして、それぞれ適切なものに変更してください。


以上、WordPressの投稿画面でアラート表示を利用して各項目を入力必須にする方法でした。
ここではfunctions.phpを使って実装しましたが、functions.phpをあまり触りたくないという方は以下で投稿画面で必須項目を設定できるプラグインを紹介しており、設定なども簡単にできるので使ってみてください。

Close the search window,
please press close button or esc key.