投稿時にカテゴリが複数のときアラートを出す

WordPressをCMSとして使うとき、カテゴリが複数セットされていたり、未選択の場合などが考えられます。
意外にあれに苦しむことがあるので、functions.phpで対応しようと思います。

[php]

function add_catCheck() {
?>
<script type="text/javascript">
var ret = false;
jQuery(function($){
$("#publish").click(function(){
var countchk = $("#categorydiv .popular-category input:checked").length;
if(countchk == 0){
alert("カテゴリが選択されていません");
return false;
}else{
if(countchk == 2){
if($("#popular-category-1 input").is(":checked")){
alert("未分類です");
}else{
if($("#category-1 input").is(":checked")){
alert("未分類です");
}
ret = true;
}
}else{
alert("複数のカテゴリが選択されています");
}
}
return ret;
});
});
</script>
<?php
}
add_action(‘admin_head’, ‘add_catCheck’);

function fix_publish() {
?>
<script type="text/javascript">
jQuery(function($){
$("#publish").click(function(){
if(!ret){
$(this).removeClass("button-primary-disabled");
$("ajax-loading").css({visiblity:"hidden"});
return false;
}
});
});
</script>
<?php
}
add_action(‘admin_footer’, ‘fix_publish’);
[/php]

相も変わらず、センスのない、泥臭い感じです。

add_catCheckの方でカテゴリのチェックの判定をしています。
下のfix_publishは投稿失敗時に、ボタンをクリックしたときのローディング画像を消したり、ボタンをまたクリックできるようにしています。
読み込み順の関係でadmin_headとadmin_footerに分割しています。