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

时间:2017-09-22 21:27:41

标签: php database wordpress checkbox input

我正在尝试在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";} ?> >

但这不起作用..我是否走在正确的轨道上?或者我完全错了吗?

1 个答案:

答案 0 :(得分:0)

基本上,要在WordPress中进行此类操作(而不仅仅是),您必须向服务器发出POST请求。通过提交表单或执行AJAX请求。以下是如何使其工作的示例。如果您不想发出AJAX请求,请跳过第1步并直接跳到第3步并查看该功能。我相信它会帮助你走上正确的轨道。

1。创建一个JS脚本,向 admin-ajax.php 文件发送AJAX请求:

<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 中   3。现在编写一个你要点击的功能,点击,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()。我希望我能提供帮助。