Lo pase desapercibido a primera vista pero ahora que lo reviso veo esto
Código PHP:
Ver original<!-- 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 ?>">
Resulta bastante obvio y evidente que jamas consegiras guardar esos valores unidos al publicar ya que aun no existen en la base de datos, al actualizar ya existen y por eso funciona la union.
Tienes dos opciones
1.- usa javascript para unir los campos y asignarlo al tercer campo donde los quieres guardar unidos.
2.- deja de usar esto
Código PHP:
Ver originalforeach ($_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);
}
}
En su lugar usa algo como
Código PHP:
Ver originalif(isset($_POST['campo']) && !empty($_POST['campo'])){ // guardas el valor que este en el tercer campo, este caso seria cuando actualizas un post
}else{
// haces la union de los dos primeros campos y lo guardas en el tercer campo ** esto seria para cuando crear un post
}