仕様
- タイトルの入力を必須にしたい
空欄があったらアラートを出す
- テーマの functions.php あるいはプラグインにする
- 投稿の入力画面は新規投稿と編集とでフックが違うので注意
参照 : https://codex.wordpress.org/Plugin_API/Admin_Screen_Reference - 基本的に JavaScript(jQuery) なので、他の要素にも対応する場合は DOM を調べればOK。
- 言わずもがな、WordPress に含まれている jQuery は noConflict モード
参照: https://developer.wordpress.org/reference/functions/wp_enqueue_script/
mytheme_post_edit_required.php
<?php
add_action( 'admin_head-post-new.php', 'mytheme_post_edit_required' ); // 新規投稿画面でフック
add_action( 'admin_head-post.php', 'mytheme_post_edit_required' ); // 投稿編集画面でフック
function mytheme_post_edit_required() {
?>
<script type="text/javascript">
jQuery(document).ready(function($){
if( 'post' == $('#post_type').val() || 'page' == $('#post_type').val() ){ // post_type 判定。例は投稿と固定ページ。カスタム投稿タイプは適宜追加
$("#post").submit(function(e){ // 更新あるいは下書き保存を押したとき
if('' == $('#title').val()) { // タイトル欄の場合
alert('タイトルを入力してください!');
$('.spinner').hide(); // spinnerアイコンを隠す
$('#publish').removeClass('button-primary-disabled'); // #publishからクラス削除
$('#title').focus(); // 入力欄にフォーカス
return false;
}
});
}
});
</script>
<?php
}
応用で「アイキャッチ画像を必須化」ってのもできます。
https://github.com/jaws-ug/jawsdays2016/blob/master/wp-content/themes/jawsdays2016/inc/extras.php#L47-L72