flamingoのカスタムフィールドのCheckboxの値を更新したい
-
いつもお世話になっております。
「Contact Form 7」で作成したフォームの送信データを「flamingo」でデータベースに保存しています。
別途上書きボタンを用意して、送信後に update_post_meta で上書き出来るようにしており、テキストのinput要素はうまくいっているのですが、chackboxが上書き出来ずに困っております。
テキストinput要素の上書きは以下のコードでうまくいっています。//テンプレートファイル <?php if(is_page('no-2-wtcm-submit')) { $today_data = ''; if(isset($_POST['pre-today'])) { $today_data = $_POST['pre-today']; } $args_today = array( 'post_type' => 'flamingo_inbound', 'posts_per_page' => 1, 'orderby' => 'date', 'order' => 'DESC', 'meta_query' => array( 'relation' => 'AND', array( 'key' => '_field_measuring-date', 'value' => $today_data, 'compare' => '=' ), array( 'key' => '_field_your-title', 'value' => 'wtcm', 'compare' => '=' ) ) ); $flamingo_query_today = new WP_Query( $args_today ); if ( $flamingo_query_today->have_posts() ) { $flamingo_query_today->the_post(); $post_id = get_the_ID(); // 現在の投稿のIDを取得 $pac_use = get_post_meta($post_id, '_field_pac-use', true); } wp_reset_postdata(); ?> <script type="text/javascript"> $(document).ready(function () { let pac_use = '<?php echo $pac_use; ?>'; let post_id = '<?php echo $post_id; ?>'; $('input[name="pac-use"]').val(pac_use); // 上書きボタンクリック時の処理 $("#overWriteBt").on("click", function () { // 入力値の取得 var update_pac_use = $('input[name="pac-use"]').val(); if (update_pac_use !== "" ) { var postId = post_id; // 上書きする値 var newValue_pac_use = update_pac_use; // メタ値を更新する updatePostMeta(postId, '_field_pac-use', newValue_pac_use); $('#overWriteMsg').html('<span>データを上書きしました。</span>'); $('#successMsg').html('<span>'+ today_data + 'のデータを上書きしました。</span>'); $('#chemicalsForm').addClass('hide'); } else { $('#overWriteMsg').html('<span class="red">入力値が空です。空欄に入力して下さい。</span>'); } }); // update_post_meta() 関数の代替 function updatePostMeta(postId, metaKey, newValue) { $.ajax({ type: 'POST', url: '<?php echo admin_url('admin-ajax.php'); ?>', data: { action: 'update_post_meta_action', post_id: postId, meta_key: metaKey, new_value: newValue, }, success: function (response) { console.log(response); // デバッグ用にレスポンスを表示 }, error: function (error) { console.log(error); // エラーメッセージを表示 } }); } }); </script> <?php } ?>
//functions.php // update_post_meta_action の処理 add_action('wp_ajax_update_post_meta_action', 'update_post_meta_action_callback'); add_action('wp_ajax_nopriv_update_post_meta_action', 'update_post_meta_action_callback'); function update_post_meta_action_callback() { $post_id = $_POST['post_id']; $meta_key = $_POST['meta_key']; $new_value = $_POST['new_value']; // メタ値を更新する update_post_meta($post_id, $meta_key, $new_value); // 必要に応じてレスポンスを返す(成功メッセージなど) echo 'メタ値が更新されました。'; // WordPressの処理を終了する wp_die(); }
このテンプレートファイルに、checkboxの値を取得するために、
var update_pac_order = $('#pacOrderCheck input[type="checkbox"]:checked').val();
やpropを使用して、テキストinput同様の処理をしても上書きされず、
$('#pacOrderCheck input[type="checkbox"]:checked').each(function() { var update_pac_order = $(this).val(); });
やforEachを使用すると、上書きボタン自体が効かなくなります。
いろいろ試行錯誤しましたが、解決に至りませんので、ご教示願えれば助かります。
よろしくお願いいたします。
2件の返信を表示中 - 1 - 2件目 (全2件中)
2件の返信を表示中 - 1 - 2件目 (全2件中)
- トピック「flamingoのカスタムフィールドのCheckboxの値を更新したい」には新たに返信することはできません。