WordPressは新規投稿する際にタイトルやコンテンツが空欄で何も入力されていなかった場合でも公開することができてしまうのですが、それを指定した部分が入力されていないときはアラート表示して公開させないようにする方法です。
以前にもタイトルとコンテンツが未入力の場合にアラート表示させることで入力必須にする方法は書いたのですが、コンテンツ部分の記述方法を少し変更しており、そこでは書いていないカテゴリー選択やアイキャッチといった他の部分にも設定する方法も併せて書いておきます。
コードは「投稿」の新規・編集画面に対して実装する場合のもので、下記をfunctions.php
に記述します。
一応コメントをつけていますが、以下のような順で各箇所が未入力または未選択だった場合にアラート表示するという記述になっています。
- タイトル
- コンテンツ(エディタ)
- 抜粋
- カテゴリー
- タグ
- アイキャッチ
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
}
add_action( 'admin_head-post-new.php', 'post_edit_required' );
add_action( 'admin_head-post.php', 'post_edit_required' );
上のサンプルコードは「投稿」の場合になりますが、もちろん固定ページやカスタム投稿などでも利用可能です。
例えば「固定ページ」で利用したい場合は、ハイライト表示しているif( 'post' == $('#post_type').val() )
を下記のようにすれば固定ページで実装できます。
if ( 'page' == $('#post_type').val() )
また、「投稿」と「固定ページ」の両方で実装したい場合は、ハイライト表示している部分を下記のようにすれば両方でアラート表示を実装できます。
if ( 'post' == $('#post_type').val() || 'page' == $('#post_type').val() )
カスタム投稿の場合は、例えば「news」という投稿タイプに対して実装したいときにハイライト表示している部分を下記のように記述します。
if ( 'news' == $('#post_type').val() )
上記のように指定していけば他の投稿タイプでもアラート表示を実装できますが、例えばカテゴリー選択など投稿タイプによって記述されているIDが変更される箇所があるので、他の投稿タイプで使用する場合は各箇所で指定されているIDやクラスを確認するなどして、それぞれ適切なものに変更してください。
ここではfunctions.php
を使って実装しましたが、functions.php
をあまり触りたくないという方は以下で投稿画面で必須項目を設定できるプラグインを紹介しており、設定なども簡単にできるのでこちらを試してみてください。