コードは「投稿」の新規・編集画面に対して実装する場合のもので、下記を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
をあまり触りたくないという方は以下で投稿画面で必須項目を設定できるプラグインを紹介しており、設定なども簡単にできるので使ってみてください。