Problemas al guardar Metabox al publicar

  • Autor Autor ss007ab
  • Fecha de inicio Fecha de inicio
S

ss007ab

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
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.

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
 
Atrás
Arriba