【问题标题】:Save and display values of multiple checkboxes in WordPress在 WordPress 中保存和显示多个复选框的值
【发布时间】:2018-03-04 13:08:57
【问题描述】:

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

但是这不起作用..我在正确的轨道上吗?还是我做错了?

【问题讨论】:

  • 你的帖子表现如何?如果您打印$coll_id,ID 是什么?您能否验证它是否已保存到数据库中?

标签: php database wordpress checkbox input


【解决方案1】:

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

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

<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. 现在编写一个您想要在点击时触发的函数,例如:

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()。希望能帮上忙。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多