Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/04/2015, 21:29
Avatar de ss007
ss007
 
Fecha de Ingreso: marzo-2002
Mensajes: 205
Antigüedad: 22 años, 8 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$keytrue);
        if (
$value && $exist_value == '') {
            
add_post_meta($post_id$key$valuetrue);
        } 
        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