【WordPress】タクソノミーを選択必須にする
ここではタイトルの通り、カスタムタクソノミーを選択必須にする方法をご紹介します。
Adjust Admin Categoryプラグインが動かない
「Adjust Admin Category」というプラグインを用いると、カスタムタクソノミーを選択必須に指定することができるとのことで、早速使ってみました。
しかし、Adjust Admin Category(バージョン: 2.2.3)は、対応するWordPressの最新バージョンが5.4.0であり、WordPress 5.4.2では必須選択に指定しても期待する動作が得られませんでした。
タクソノミーを選択必須にするようなコードを書く
タクソノミーを選択必須にする内容の記事は散見されるのですが、wordpressのバージョンの問題でコピペで動く情報は見つけられませんでした。
仕方がないので次のような機能を自作します。
- WordPress 5.4.2を対象とする。
- カスタムタクソノミーを選択していない状態で更新ボタンが押されたら、警告を表示させる。
- カスタムタクソノミーを選択していない状態で更新ボタンが押されたら、更新ボタンの機能を動作させない。
- 本機能を動作させる対象とする投稿タイプのスラッグを「business」とする。
下のコードをfunctions.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">
(function() {
jQuery.noConflict();
jQuery(jQuery(window).on('load', function() {
if(jQuery('#post_type').val() == 'business'){
jQuery('.editor-post-publish-button').on('click', function (e) {
if(jQuery(".components-checkbox-control__input:checked").length < 1 ) {
alert(jQuery('.editor-post-taxonomies__hierarchical-terms-list').attr('aria-label') + 'を選択してください。');
return false;
}
});
}
}));
})();
</script>
<?php
}
?>
コードに改行が効かないようで、読みにくくてすみません。
https://hacknote.jp/archives/13907/