2017-09-22 6 views
0

WordPressに複数のチェックボックスの値を保存しようとしていますので、送信ボタンをクリックせずにチェックボックス(フロントエンド)をチェックすると、データベース。複数のチェックボックスの値をWordPressに保存して表示する

次回はこのページを読み込むときに、この特定のチェックボックスを事前にチェックする必要があります。

これまでは、これらのチェックボックスを追加しようとしているページの内容を担当するテンプレートファイルにこのコードがあります。

(これには、通常のWPポスト/ページテンプレートが、WooCommerce・コレクション・プラグインによって生成された「コレクション・ページ」ではありません):

 //submit code 
     if(isset($_POST['cadeau']) ){ 
      $data=serialize($_POST['cadeau']); 

      update_post_meta($post_id, 'cadeau', $data); 
     } 

    //edit code 

     $data=get_post_meta($post_id, 'cadeau'); 
     //$data=unserialize($data[0]); 
     $data=$data[0]; 
     print_r($data);?> 

<input type="checkbox" name="cadeau[]" value="<?php echo $product_id;?>" <?php if(in_array($product_id,$data) ){echo "checked";} ?> > 

これは..私は正しい軌道に乗っアムが動作していませんか?または私はそれを完全に間違っているのですか?

+0

投稿はどのように行っていますか? '$ coll_id'を印刷すると、IDは何ですか?それがデータベースに保存されていることを確認できますか? – Dedering

答えて

0

基本的に、WordPressで(そしてそれだけでなく)このようなことを行うには、サーバーにPOSTリクエストを行う必要があります。フォームを送信したり、AJAXリクエストを行ったりしてください。これを動作させる方法の例を次に示します。 AJAXリクエストを作成したくない場合は、ステップ1をスキップしてステップ3に直接ジャンプし、その機能を見てください。あなたが正しい道を進むのに役立つと確信しています。

1.管理-ajax.phpファイルにAJAX要求を送信JSスクリプトを作成します。新しいファイルを作成しますe.x.

<script> 
    jQuery("#submit-button").on("click", function(){ 
     var checkboxValue = jQuery("#your-checkbox").is(":checked") ? 1 : 0; 
     jQuery.ajax({ 
      url: "http://www.yourdomain.com/admin-ajax.php", 
      method: 'POST', 
      data: {action: "save_checkbox", checked: checkboxValue} 
     }).done(function(response){ 
      console.log("Response: " + response); 
      //NOTE that 'action' MUST be the same as PHP function name you want to fire 
      //you can do whatever you want here with your response 
     }).fail(function(error){ 
      console.log(error); 
     }); 
    }) 
    </script> 

2.をすべてだmyajax.phpと今、あなたはクリックで起動するようにしたい関数を記述のfunctions.php
にそれを含め、e.x:

function save_checkbox(){ 
    $checkboxValue = $_REQUEST['checked']; 

    update_post_meta($coll_id, 'cadeau', $checkboxValue); 

    $response = array(
     "status" => "ok", 
     "message" => "Post meta saved", 
    ); 
    $response = json_encode($response); 

    echo $response; 

    die(); 
} 
add_action('wp_ajax_save_checkbox', 'save_checkbox'); 

。私が言ったように、actionはPHPの機能と同じでなければならない。あなたのPHP関数から何らかの応答を得たい場合は、echoと答えてください。応答として0が表示された場合は、実行したい機能が存在しないか、関数の最後にdie()を呼び出していないことを意味します。私が助けてくれることを願う。

関連する問題