@latipov_no_1

Как сохранить произвольное поле?

Добрый вечер!
Как сохранить произвольное поле в вордпресс?
Поле является динамичным. Как на скрине.59ecebbf431dc825557837.jpeg
Кодом ниже выводим динамичные произвольные поля.
<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;
}
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 1
kumaxim
@kumaxim
Web-программист
Это называется "Дополнительные пользовательские поля". В plugin cookbook о них все прекрасно написано.
Если нет времени со всем этим сильно заморачиваться, тогда смотри в сторону Advanced Custom Fields. Читай документацию по нему на сайте у автора.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы