Per ora ho risolto così:
Nella funzione "select_categoria" ho tolto la condizione
codice:
if(get_post_meta( get_the_ID(), '_wp_page_template', TRUE ) == 'categoria.php')
in questo modo il box è sempre presente in ogni pagina ma nascosto di default (vedere css e jquery sotto)
codice:
function select_categoria_data() {
?>
<style>#id_categoria{display:none}</style>
<?php
//COSTRUISCO LA SELECT
?>
<script type="text/javascript">
jQuery(document).ready(function() {
var template = jQuery('#page_template :selected').val();
if(template == 'categoria.php')
jQuery('#id_categoria').show();
jQuery('#page_template').bind('change', function (){
var template = jQuery('#page_template :selected').val();
if(template == 'categoria.php')
jQuery('#id_categoria').show();
else
jQuery('#id_categoria').hide();
});
});
</script>
<?php
}
Ovviamente se qualcuno conosce il modo "giusto" per ottenere questo risultato mi faccia sapere!