Добрый вечер!
Как сохранить произвольное поле в вордпресс?
Поле является динамичным. Как на скрине.
Кодом ниже выводим динамичные произвольные поля.
<div class="box">
<br>
<div id="meta_inner">
<?php
//get the saved meta as an array
$songs = get_post_meta($post->ID,'songs',false);
$c = 0;
if ( count( $songs ) > 0 ) {
foreach( $songs as $track ) {
if ( isset( $track['title'] ) || isset( $track['track'] ) ) {
printf( '<p>Название поля: <input type="text" name="songs[%1$s][title]" value="%2$s" /> Значение(я): <input type="text" name="songs[%1$s][track]" value="%3$s" /><span class="remove">%4$s</span></p>', $c, $track['title'], $track['track'], __( 'Удалить' ) );
$c = $c +1;
}
}
}
?>
<span id="here"></span>
<span class="add button"><?php _e('Добавить характеристики'); ?></span>
<script>
var $ =jQuery.noConflict();
$(document).ready(function() {
var count = <?php echo $c; ?>;
$(".add").click(function() {
count = count + 1;
$('#here').append('<p> Название поля: <input type="text" name="songs['+count+'][title]" value="" /> Значение(я): <input type="text" name="songs['+count+'][track]" value="" /><span class="remove">Удалить</span></p>' );
return false;
});
$(".remove").live('click', function() {
$(this).parent().remove();
});
});
</script>
</div>
Этим кодом пытаюсь сохранить записи, но trim не учитывает массивы. К сожалению не спец в php.
/* Сохраняем данные, при сохранении поста */
function kratkoe_opisnie_update( $post_id ){
if ( ! wp_verify_nonce($_POST['extra_fields_nonce'], __FILE__) ) return false; // проверка
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return false; // выходим если это автосохранение
if ( !current_user_can('edit_post', $post_id) ) return false; // выходим если юзер не имеет право редактировать запись
if( !isset($_POST['extra']) ) return false; // выходим если данных нет
// Все ОК! Теперь, нужно сохранить/удалить данные
$_POST['extra'] = array_map('trim', $_POST['extra']); // чистим все данные от пробелов по краям
foreach( $_POST['extra'] as $key=>$value ){
if( empty($value) ){
delete_post_meta($post_id, $key); // удаляем поле если значение пустое
continue;
}
update_post_meta($post_id, $key, $value); // add_post_meta() работает автоматически
}
return $post_id;
}