サポート » 使い方全般 » update_post_metaでシリアライズされたデータを更新したい

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • @junichik さん、こんにちは。

    すでに解決済みかもしれませんが…あと検証時間がなかったので具体的な解決策でもありません…

    それを踏まえて、update_post_meta()を実行しようとしているという事は WordPress のデータベース内を直接書き換えようとしていると思われますが、 WordPress のデータベース内でチェックボックスがどのように保管されているか確認はされましたでしょうか。

    まずはデータベース内のチェックボックスの保存状態を確認し、update_post_meta()を実行する際に同様のデータを作成して保存しなければならないと思います。値だけ取得して値を保存すれば文字列だけになってしまうのは当然かと…

    ご参考になれば。

    トピック投稿者 JunichiK

    (@junichik)

    @shokun0803 さま

    ご返信いただき、本当にありがとうございます。
    ちょうど昨日、全体的に完成しまして、ご報告が遅れ、申し訳ありません。
    結果的には、以下のコードでうまくいきました。
    とりあえずこれで解決済みとさせていただきます。

    //***テンプレートファイル***
    <script type="text/javascript">
      $(document).ready(function () {
        // 上書きボタンクリック時の処理
        $("#overWriteBt").on("click", function () {
          // チェックボックスのチェック状態を取得
          var checkboxStatus = $('input[name="order[]"]').is(':checked');
          // フォームの値が空でない場合のみ実行
          if (checkboxStatus !== "") {
            // 投稿のID
            var postId = post_id;
            // 苛性注文データベースの更新処理
            $.ajax({
              url: '<?php echo admin_url('admin-ajax.php'); ?>',
              type: 'POST',
              data: {
                action: 'update_array_data',
                update_array_status: checkboxStatus ? '発注済み' : '',
                meta_key: '_field_order',
                post_id: postId
              },
              success: function(response) {
                // 成功時の処理
                console.log('データベースが更新されました');
              },
              error: function(xhr, status, error) {
                // エラー時の処理
                console.log('データベースの更新でエラーが発生しました');
              }
            });
          }
        });
      });
    </script>
    
    //***functions.php***
    // チェックボックスのデータベース更新処理
    add_action('wp_ajax_update_array_data', 'update_array_data');
    add_action('wp_ajax_nopriv_update_array_data', 'update_array_data');
    function update_array_data() {
      if (isset($_POST['update_array_status']) && isset($_POST['post_id'])) {
        $post_id = $_POST['post_id'];
        $updateArrayStatus = $_POST['update_array_status'];
        $metaKey = $_POST['meta_key'];
        // post_metaテーブルの更新
        $metaValue = array($updateArrayStatus);
        update_post_meta($post_id, $metaKey, $metaValue);
        wp_send_json_success(); // 成功レスポンスを送信
      }
    }
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「update_post_metaでシリアライズされたデータを更新したい」には新たに返信することはできません。