Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/04/2015, 21:29
Avatar de ss007
ss007
 
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 24 años, 7 meses
Puntos: 0
Metabox no guarda al Publicar

Hola a todos!
Tengo un metabox que debe unir dos datos, eso lo hace correctamente. El problema es que debo PUBLICAR y luego ACTUALIZAR el mismo post para que me tome los datos.
Si solo PUBLICO no me aparecen los cambios.

Código PHP:
<?php

// Registro metabox
function add_audio_settings_box() {
    
add_meta_box('audio_settings_box', __('Audio Settings', 'pbpanel'), 'show_audio_settings_box', 'post', 'normal', 'high');
}
add_action('add_meta_boxes', 'add_audio_settings_box');

// Metabox
function show_audio_settings_box($object) {
    
wp_nonce_field(basename( __FILE__ ), 'audio_settings_box_nonce'); ?>
    
    <p>
     <label for="audio_url"><?php echo __('Seleccionar Programa', 'pbpanel'); ?>:<br></label>
     
    <!-- Programas-->
    <p><input type="radio" name="url" id="url" value="http://miweb.com/programa_1/">Programa 1</p>
    <p><input type="radio" name="url" id="url" value="http://miweb.com/programa_2/">Programa 2</p>
   
    
    <!-- Nombre del programa (por ejemplo  musica.mp3 )  -->
       <p>Ingresar el nombre del archivo de audio (inclido .mp3): <input type="text" name="archivo"  id="archivo"> </p>
      
    <!-- Union de url + archivo (Ejemplo: [url]http://miweb.com/programa_1/musica.mp3[/url] -->
    <?php $all_url=esc_attr(get_post_meta($object->ID, 'url', true)).esc_attr(get_post_meta($object->ID, 'archivo', true));    ?>
            
    <!-- Guardo esa variable en audio_url -->   
    <input type="hidden" name="audio_url" id="audio_url" value="<?php echo $all_url ?>">
    </p>
      
    <?php
}

// Guardo los valores del metabox 
function save_audio_settings_box($post_id) {
    
// Verifico nonce 
    
if (!isset($_POST['audio_settings_box_nonce']) || !wp_verify_nonce($_POST['audio_settings_box_nonce'], basename( __FILE__ ))) return;
    
// Verifico permisos
    
if (!current_user_can('edit_post')) return;
    
    
// Data
    
foreach ($_POST as $key => $value) {
        
$exist_value = get_post_meta($post_id, $key, true);
        if (
$value && $exist_value == '') {
            
add_post_meta($post_id, $key, $value, true);
        } 
        elseif (
$value && $value != $exist_value) {
            
update_post_meta($post_id, $key, $value, $exist_value);
        } 
        elseif (
$value == '' && $exist_value) {
            
delete_post_meta($post_id, $key, $exist_value);
        }
    }
}
add_action('save_post', 'save_audio_settings_box');

?>

No puedo detectar que me falta...
GRACIAS

*
__________________
MonaS