Hola,
El siguiente código (labur.php) funciona a la perfección y hace lo siguiente:
- Cuando el usuario entra a editar/crear un post mediante el admin de Wordpress se ejecuta la acción
labur_init
. Labur_init
registar un fichero js (labur.js
), recoge laurl del post
y crea un objeto con los datos para enviar a el fichero js.- El fichero labur.js recoge los datos y los muestra en un imput del admin.
Parte del Código de labur.php
<?php
//load external files
add_action( 'add_meta_boxes', 'labur_init' );
// add admin settings
add_action('wp_ajax_labur_get_url', 'labur_get_url_process'); // El prefijo wp_ajax es por convención de wordpress
// Función para procesar el AJAX
function labur_get_url_process() {
// Esta función ahora no hace nada.
// Lo ideal sería que esta función fuese la encargada de
// recoger la url del post y crear el objeto para enviarlo a labur.js
exit();
}
/**
* load external files
*/
function labur_init() {
//register plugin js file. Jquery is a requirement for this script so we specify it
wp_register_script( 'labur-js', plugins_url( '/labur.js', __FILE__ ), array('jquery') );
//load scripts
wp_enqueue_script('jquery');
wp_enqueue_script('labur-js');
// Recogemos toda la información del post
global $post;
// currently edited post id
$post_uri = $GET['post'];
wp_localize_script('labur-js', 'MyAjax', array(
'aldakur_url' => get_permalink($post_uri),
'action'=> 'labur_get_url' // labur_get_url es la acción pero sin el prefijo wp_ajax. Esta acción ejecutará la función labur_get_url_process
));
}
?>
Código de JS labur.js
jQuery(document).ready(function($) {
$('#button_labur_get_url').click(function(e) {
$.post(document.location.protocol+'//'+document.location.host+'/aldakurnet/wp-admin/admin-ajax.php', MyAjax, function(response) {
$('#labur_shortened_url').val(MyAjax.aldakur_url);
});
});
});
El problema es que tal y como funciona ahora, la url del post se agarra cuando se agregan los metabox add_action( 'add_meta_boxes', 'labur_init' );
y yo quiero que la dirección se agarre y se llame al fichero js cuando el usuario clique en un botón definido en el fichero labur.php
. (para facilitar la lectura del post no he colocado el código del botón.)