Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm trying to create a multi select field for Taxonomy pages, and the problem is in saving all the selected values, for example if I choose couple of elements in the select field and save it, it will save only value of the last selected element and ignore the others, how can I save all selected values?

function books_tax_fields($tag) {
$t_id = $tag->term_id;
$term_meta = get_option( "taxonomy_$t_id");
print_r($term_meta);
?>

<tr class="form-field">
  <th scope="row" valign="top">
  <label for="Book_Store_Location">
      <?php _e('Book Store Location'); ?>
    </label></th>
  <td>
  <input type="text" name="term_meta[book_store_location]" id="term_meta[book_store_location]"  size="25" style="width:100%;" value="<?php echo $term_meta['book_store_location'] ? $term_meta['book_store_location'] : ''; ?>">
    <br />
    <span class="description descRed">
    <?php _e('Book Store Location URL'); ?>
    </span></td>
</tr>

<tr class="form-field">
  <th scope="row" valign="top">
  <label for="Books_Select_box">
      <?php _e('Select your favorite book'); ?>
    </label></th>
  <td>
    <select name='term_meta[books] ' data-placeholder="Select your favorite books..." class="books-slkt" multiple style="width:100%; height:100px;" tabindex="4">
        <option value=""></option>
        <option value="1">Book one</option>
        <option value="2">Book two</option>
        <option value="3">Book three</option>
        <option value="4">Book four</option>
        <option value="5">Book five</option>
    </select>
  </td>
</tr>

<?php
}

function save_extra_books_fields( $term_id ) {
    if ( isset( $_POST['term_meta'] ) ) {
        $t_id = $term_id;
    $term_meta = get_option( "taxonomy_$t_id");
        $cat_keys = array_keys($_POST['term_meta']);
            foreach ($cat_keys as $key){
            if (isset($_POST['term_meta'][$key])){
                $term_meta[$key] = $_POST['term_meta'][$key];
            }
        }
        update_option( "taxonomy_$t_id", $term_meta );
    }
}

add_action( 'books_edit_form_fields', 'books_tax_fields', 10, 2);
add_action( 'edited_books', 'save_extra_books_fields', 10, 2);

And Here is results I get

 Array ( [book_store_location] => [books[] => 5) 
share|improve this question
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.