2017-12-10 2 views
0

ACFギャラリーフィールドを使用して、フロントエンドでギャラリーを作成してから、ページを更新せずにギャラリーを保存するajax呼び出しがあります。ajaxを使用すると、ACFギャラリーの画像がワードプレスで保存されます

デフォルトのアップデートポストを使用すると、ギャラリーのすべてのイメージは正しく保存されますが、自分のajaxセーブメソッドを使用するとギャラリーの最後のイメージだけが保存されます。ここで

は私のコードです:

シングルポスト/フォーム

<?php acf_form_head(); ?> 
<?php get_header(); ?> 

<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 


    <?php $args = array( 

          'form_attributes' => array(
          'id'=>'modalAjaxTrying' 

         ), 
          'submit_value' => __("update this badboy", 'acf'), 
         ); 
      acf_form($args); 


      ?> 



<?php endwhile; endif; ?> 
<?php acf_enqueue_uploader();?> 
<?php get_footer(); ?> 

アヤックス

JSファイルに

jQuery('form#modalAjaxTrying :submit').click(function(event){ 
event.preventDefault(); 
var form_data = {'action' : 'acf/validate_save_post'}; 
jQuery('form#modalAjaxTrying :input').each(function(){ 
form_data[jQuery(this).attr('name')] = jQuery(this).val() 
}) 


form_data.action = 'save_my_data'; 
jQuery.post(ajaxurl, form_data) 
.done(function(save_data){ 
alert('Added successFully :'); 

}) 
}) 
を救うのfunctions.php

add_action('wp_ajax_save_my_data', 'acf_form_head'); 
add_action('wp_ajax_nopriv_save_my_data', 'acf_form_head'); 

答えて

0

AJAXを取得するために探している人nを再生するために保存ACFギャラリーの氷はここに行くよ。あなたのJSファイルで、あなたのfunctions.php

add_action('acf/submit_form', 'my_acf_submit_form', 10, 2); 
function my_acf_submit_form($form, $post_id) { 

if(is_admin()) 
    return; 

//Test if it's a AJAX request. 
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    echo $form['updated_message']; 
    die(); 
} 

} 

add_action('wp_ajax_save_my_data', 'acf_form_head'); 
add_action('wp_ajax_nopriv_save_my_data', 'acf_form_head'); 

function my_acf_save_post($post_id) { 

// get new values 
$value = get_field('add_images', $post_id); 

acf.do_action('ready', $('body')); 

$('form#modalAjaxTrying').on('submit', function(e){ 
    e.preventDefault(); 
}); 

acf.add_action('submit', function($form){ 
$.ajax({ 
    url: window.location.href, 
    method: 'post', 
    data: $form.serialize(), 
    success: function(data) { 
    acf.validation.toggle($form, 'unlock'); 
      alert(data); 
    } 
}); 
}); 
関連する問題