2017-09-22 77 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.創建JS腳本,它發送一個AJAX請求到管理員- ajax.php文件:

<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.創建新文件e.x. 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()。我希望我能幫忙。