WordPress:タイトルやコンテンツを入力必須にする方法

WordPress:タイトルやコンテンツを入力必須にする方法

フォーラムで見かけて、いつか使いそうで覚えておきたかったので備忘録。
WordPressはタイトルやコンテンツなど何も入力されていなくても「公開」ボタンを押したら先に進んでしまうのですが、それを指定した部分が入力されていないときはアラートで注意を出すようにする方法です。
上手く活用すれば必ず記述してほしい箇所の漏れはなくなりますし、記事の公開・確認を何度もするという手間も省けます。

March 21, 2013 追記

当初気付かなかったのですが、「コンテンツ未入力時にアラートを出す」に関して、エディタが「ビジュアル」になっている時には動かないということをコメントを通じて教えていただきました。
タイトルへのアラートはこのままで問題ありませんが、コンテンツで使用する場合は「テキスト」を用いるか、もしくは「ビジュアル」用にコードを記述する必要があります。

September 13, 2015 追記

タイトルとコンテンツ以外にも、抜粋、カテゴリー、タグ、アイキャッチといった項目が未入力・未選択だった時にアラート表示する方法を書きました。
WordPress:投稿画面でタイトル、コンテンツ、カテゴリー選択、アイキャッチなどを入力必須にする方法

カスタマイズ前の投稿画面

画像は通常のカスタマイズ前の投稿画面です。
タイトルやコンテンツを何も未入力の状態で「公開」ボタンを押してみます…。

カスタマイズ前の投稿画面

すると画像のように何も入力していない場合でも「投稿を公開しました。」という表示が出て、記事が投稿されたことになってしまいます。

今回はタイトルやコンテンツなどといった必ず記入してほしいところを必須項目にする方法になります。
以下はfunctions.phpを使用しますので、テーマ内にfunctions.phpがない場合は作成してください。

タイトル未入力時にアラートを出す

タイトル未入力時にアラートを出す

functions.php

add_action( 'admin_head-post-new.php', 'my_title_required' );
add_action( 'admin_head-post.php', 'my_title_required' );

function my_title_required() {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
  if ( 'post' == $('#post_type').val() ) {
    $("#post").submit(function(e) {
      if ( '' == $('#title').val() ) {
        alert('タイトルを入力してください');
        $('#ajax-loading').css('visibility', 'hidden');
        $('#publish').removeClass('button-primary-disabled');
        $('#title').focus();
        return false;
      }
    });
  }
});
</script>
<?php
}
?>

上記はタイトルを必須項目にしたものになり、functions.phpに記述後に確認するとタイトルが未入力の際に「タイトルを入力してください」というアラートが出るようになります。
アラートの文言を変更したい時は上記赤文字の部分を変更してください。

コンテンツ未入力時にアラートを出す

コンテンツ未入力時にアラートを出す

functions.php

add_action( 'admin_head-post-new.php', 'my_content_required' );
add_action( 'admin_head-post.php', 'my_content_required' );

function my_content_required() {
?>
<script type="text/javascript">
  jQuery(document).ready(function($) {
    if( 'post' == $('#post_type').val() ) {
      $( "#post").submit(function(e) {
        if ( '' == $('#content').val() ) {
          alert('コンテンツが未入力です');
          $('#ajax-loading').css('visibility', 'hidden');
          $('#publish').removeClass('button-primary-disabled');
          $('#content').focus();
          return false;
        }
      });
    }
  });
</script>
<?php
}
?>

見ての通り#title#contentになっただけです。
上記はコンテンツ部分を必須項目にしたものになり、functions.phpに記述後に確認するとコンテンツが未入力の際に「コンテンツが未入力です」というアラートが出るようになります。
タイトルのときと同じく、アラートの文言を変更したいときは赤文字の部分を変更してください。

この実装方法は以下を参考にさせてもらいました。

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