Проблема сохранения значения множественного выбора

я делаю метабокс, и в этом я делаю выбор с несколькими

$opt_meta_author = get_post_meta($post->ID, 'opt_meta_author', true);

<select name="opt_meta_author" id="opt_meta_author" multiple="multiple">
    <?php
        $auth_args = array(
            'post_type' => 'author',
            'orderby' => 'title',
            'order' => 'ASC'
        );

        $authors = new WP_Query($auth_args);

        while($authors->have_posts()) :
            $authors->the_post();
    ?>
        <option value="<?php echo the_title() ?>">
            <?php echo the_title() ?>
        </option>
    <?php
        endwhile;
    ?>
</select>

когда я выбираю несколько вариантов, он сохраняет только один вариант, я хочу сохранить выбранные параметры

есть какие-нибудь предложения

Сохранение мета-значений

$opt_meta_author = $_POST['opt_meta_author'];
update_post_meta( $post->ID, 'opt_meta_author', $opt_meta_author);

person Community    schedule 12.12.2013    source источник


Ответы (2)


$opt_meta_author = unserialize(get_post_meta($post->ID, 'opt_meta_author', true));

<select name="opt_meta_author" id="opt_meta_author" multiple="multiple">
                <?php
                    $auth_args = array(
                        'post_type' => 'author',
                        'orderby' => 'title',
                        'order' => 'ASC'
                    );
                $authors = new WP_Query($auth_args);

                while($authors->have_posts()) :
                    $authors->the_post();
            ?>
                    <option value="<?php echo the_title() ?>">
                        <?php echo the_title() ?>
                    </option>
            <?php
                endwhile;
            ?>
            </select>



Чтобы получить несколько выбранных значений при сохранении, сделайте следующее:

$opt_meta_author = serialize($_POST['opt_meta_author']);
person Parixit    schedule 12.12.2013
comment
Ничего не бывает, это дает мне только это - s:6:Надеем; - person ; 12.12.2013
comment
@deemi.exe Если вы выберете несколько, они будут переданы на сервер в виде массива, и вам придется выполнить сериализацию перед сохранением в базе данных. - person Parixit; 12.12.2013
comment
я делаю это $opt_meta_author = serialize($_POST['opt_meta_author']); update_post_meta($post-›ID, 'opt_meta_author', $opt_meta_author); - person ; 12.12.2013
comment
когда я сохраняю с несколькими значениями выбора, это дает мне только одно значение - person ; 12.12.2013

Что такое var dump из $_POST['opt_meta_author'])? если это массив, преобразуйте его в строку с помощью implode и сохраните строку в базе данных

person baig    schedule 12.12.2013
comment
Это строка, не могли бы вы сказать мне, как сохранить в БД - person ; 12.12.2013
comment
Я думаю, update_post_meta( $post->ID, 'opt_meta_author', $opt_meta_author); должен работать над сохранением в базах данных - person baig; 12.12.2013
comment
Большое спасибо, я использую implode и его работу, но одна ошибка, которую я сделал, это ‹select name=opt-meta_author›, и сделайте это ‹select name=opt-meta_author[]› и он отлично работает с implode() - person ; 12.12.2013