在WordPress中保存并显示多个复选框的值

问题描述:

我试图在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

基本上,要在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()。我希望我能帮忙。