我正在尝试在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 :(得分: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()
。我希望我能提供帮助。