Форма находится в окне создания почты. Ajax публикует значения, но значения обновляются. Где может быть проблема?
Ajax
<script> function dynamic_Select(field, aid, value) { console.log(field, aid,value); jQuery.ajax({ type: "POST", url: ajaxurl, data:{ field: field, aid: aid, value: value, }, error: function(){alert('Error!')}, success: function(){alert(value)} }); } </script>
functions.php
add_action('wp_ajax_dynselect', 'update_dynamic_select'); add_filter("attachment_fields_to_save", " update_dynamic_select", null , 2); function update_dynamic_select($field, $aid, $value) { update_post_meta($aid, $field, $value); }
HTML:
<select aid="104" name="_image_matmenys" onchange="dynamic_Select(this.getAttribute('name'), this.getAttribute('aid') ,this.value)"> <option value="10x10">10x10</option> <option value="20x20" selected="selected">20x20</option> <option value="30x30">30x30</option> </select>
Замените функцию в файле functions.php –
function update_dynamic_select() { update_post_meta($_POST['aid'], $_POST['field'], $_POST['value']); echo $_POST['value']; die(); }
Замените параметры в своей части HTML –
<?php $val = get_post_meta( 104, '_image_matmenys', true ); $s1 = ($val == "10x10") ? 'selected="selected"' : ''; $s2 = ($val == "20x20") ? 'selected="selected"' : ''; $s3 = ($val == "30x30") ? 'selected="selected"' : ''; ?> <option value="10x10" <?php echo $s1;?>>10x10</option> <option value="20x20" <?php echo $s2;?>>20x20</option> <option value="30x30" <?php echo $s3;?>>30x30</option>
РЕДАКТИРОВАТЬ:
Кроме того, добавьте еще один крючок –
add_action( 'wp_ajax_nopriv_dynselect', 'update_dynamic_select' );
и убедитесь, что переменная ajaxurl
имеет значение admin_url('admin-ajax.php')
то есть var ajaxurl = '<?php echo admin_url("admin-ajax.php");?>'