Cargar código javascript dentro de una página de wp-admin

Hoy me he encontrado con la necesidad de desactivar el input de post_title dentro del administrador de wordpress. El problema a parte de tener que tener que incluir el código js, era que no quería desactivarlo en todas las entradas y páginas, sino solamente para un determinado post type.

La solución al primer problema, incluir código js para wp-admin, es bastante sencilla. Tenemos que programar un hook usando ‘admin_enqueue_script’ en functions.php que llame al .js que nos interese:

[code]

wp_register_script(‘admin_title_disable’, get_bloginfo(‘template_url’).’/js/disable_admin_post_titles.js’);
function disableAdminTitle () {
wp_enqueue_script(‘admin_title_disable’);
}
add_action(‘admin_enqueue_scripts’, ‘disableAdminTitle’);

[/code]

El segundo problema, me ha costado más solucionarlo, ya que dependiendo donde queramos discriminar la llamada a nuestro .js tenemos que tomar una solución distinta.

Si sólo queremos llamar un .js dentro de una edición de post type concreto, podemos hacer lo siguiente, en nuestro script, añadir una línea que buscará un input hidden que indica el post type que está mostrandose en el administrador en ese momento:

[code]
jQuery(document).ready(function ($) {
//find the hidden post type input, and grab the value
if($(‘#post_type’).val() === ‘model’){
$(‘#title’).attr(‘disabled’,’disabled’);
}else if($(‘#post_type’).val() === ‘presupuesto’){
$(‘input,textarea’).attr(‘disabled’,’disabled’);
}
});
[/code]
En este caso realizo una acción diferente según el post type que esté viendo en edición.

Otra manera de hacer distinción a la hora de llamar a nuestro script, es discriminar por la página .php que está ejecutándose. En nuestro functions.php añadimos:
[code]
function my_enqueue($hook) {
if( ‘edit.php’ != $hook )
return;
wp_enqueue_script( ‘my_custom_script’, plugin_dir_url( __FILE__ ) . ‘/myscript.js’ );
}
add_action( ‘admin_enqueue_scripts’, ‘my_enqueue’ );
[/code]
Este trozo de código nos permite llamar a nuestro javascript cuando la página actual sea la de edición rápida de post (edit.php)

Para más información:
http://codex.wordpress.org/Plugin_API/Action_Reference/admin_enqueue_scripts

http://stackoverflow.com/questions/13534906/make-wordpress-pagess-titles-readonly

Dejar un comentario

Tu dirección de correo electrónico no será publicada.