Wordpress 自定义 post 类型到购物车不更新它
Wordpress custom post type to cart not update it
我在一个客户网站上工作,以前的开发人员使用 WP 自定义 post 类型构建一个产品集合页面,有点像 woocommerce,但只能添加到购物车以向公司请求报价,购物车应用程序上没有交易。
我有问题我可以添加到购物车没问题,但是当我查看购物车页面时。除非我刷新页面,否则该项目不会显示。删除购物车中的商品也有同样的问题。
代码中设置了一个cookie,我不熟悉,可能是我想的问题。
我以为将 移到顶部会解决一些问题,但购物车无法使用。我在 WP 调试工具上遇到了一些意外的结束错误,所以我尝试使用 PHP 检查器来查看我错过了多少 } 并将其添加回去,但仍然无法正常工作。
非常感谢您的帮助!
————更多信息————-
WordPress 版本:4.9.7
PHP 服务器:5.6
主题开发日期:未知(二十三个主题修改版本,永不更新)
————代码————-
<?php
if(get_query_var('remove') > 0){
$r = get_query_var('remove');
$d = get_query_var('d');
if (isset($_COOKIE['cart'])) {
$cart = json_decode(base64_decode($_COOKIE['cart']), true);
unset($cart[$r][$d]);
if(empty($cart[$r])){
unset($cart[$r]);
}
if(empty($cart)){
setcookie("cart", base64_encode(json_encode($cart)), time() - 3600, '/');
} else {
setcookie("cart", base64_encode(json_encode($cart)), time() + 2592000, '/');
}
header('Location: '.get_the_permalink());
die();
} else {
header('Location: '.get_the_permalink());
die();
}
}
?>
<?php get_header();?>
<?php if(isset($ok) && $ok == 1){?>
<p class='after_cart_text'>Thank you for the opportunity to quote your project! We will endeavour to respond within 24 hours.</p>
<?php } else { ?>
<?php if(isset($ok) && $ok == -1){?>
<div class="alert alert-danger" role="alert">Please check the the captcha form.</div>
<?php } ?>
<div class="baners_categories">
<?php
$rows = get_field('banery_categories', 'options');
if($rows){
shuffle( $rows );
$image = $rows[0]['picture_categories'];
?>
<img src="<?php echo $image; ?>" />
<?php
}
?>
</div>
</fieldset>
<fieldset>
<!-- Form Name -->
<p class="legend_pe"><legend>Product Information</legend></p>
<?php if(isset($_COOKIE['cart']) && !empty($_COOKIE['cart']) && $post->post_name == 'cart'){
$cart = json_decode(base64_decode($_COOKIE['cart']), true);
//var_dump($cart);
$i = 0;
if (is_array($cart)) {
foreach($cart as $k => $row){
foreach($row as $k2 => $item){
//var_dump($item);
?>
<!-- form section code I comment it out -->
<?php }?>
<?php }?>
<div class="col-sm-4" style="margin-bottom:15px;">
<p><strong>Your cart is currently empty.</strong></p>
</div>
<?php }?>
<?php }?>
<?php }?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
非常感谢您的帮助或提示!
我将此 <?php wp_reset_postdata(); ?>
添加到 while 循环的末尾,现在开始工作。更多信息在这里:https://codex.wordpress.org/Function_Reference/wp_reset_postdata
我在一个客户网站上工作,以前的开发人员使用 WP 自定义 post 类型构建一个产品集合页面,有点像 woocommerce,但只能添加到购物车以向公司请求报价,购物车应用程序上没有交易。
我有问题我可以添加到购物车没问题,但是当我查看购物车页面时。除非我刷新页面,否则该项目不会显示。删除购物车中的商品也有同样的问题。
代码中设置了一个cookie,我不熟悉,可能是我想的问题。
我以为将 移到顶部会解决一些问题,但购物车无法使用。我在 WP 调试工具上遇到了一些意外的结束错误,所以我尝试使用 PHP 检查器来查看我错过了多少 } 并将其添加回去,但仍然无法正常工作。
非常感谢您的帮助!
————更多信息————-
WordPress 版本:4.9.7 PHP 服务器:5.6 主题开发日期:未知(二十三个主题修改版本,永不更新)
————代码————-
<?php
if(get_query_var('remove') > 0){
$r = get_query_var('remove');
$d = get_query_var('d');
if (isset($_COOKIE['cart'])) {
$cart = json_decode(base64_decode($_COOKIE['cart']), true);
unset($cart[$r][$d]);
if(empty($cart[$r])){
unset($cart[$r]);
}
if(empty($cart)){
setcookie("cart", base64_encode(json_encode($cart)), time() - 3600, '/');
} else {
setcookie("cart", base64_encode(json_encode($cart)), time() + 2592000, '/');
}
header('Location: '.get_the_permalink());
die();
} else {
header('Location: '.get_the_permalink());
die();
}
}
?>
<?php get_header();?>
<?php if(isset($ok) && $ok == 1){?>
<p class='after_cart_text'>Thank you for the opportunity to quote your project! We will endeavour to respond within 24 hours.</p>
<?php } else { ?>
<?php if(isset($ok) && $ok == -1){?>
<div class="alert alert-danger" role="alert">Please check the the captcha form.</div>
<?php } ?>
<div class="baners_categories">
<?php
$rows = get_field('banery_categories', 'options');
if($rows){
shuffle( $rows );
$image = $rows[0]['picture_categories'];
?>
<img src="<?php echo $image; ?>" />
<?php
}
?>
</div>
</fieldset>
<fieldset>
<!-- Form Name -->
<p class="legend_pe"><legend>Product Information</legend></p>
<?php if(isset($_COOKIE['cart']) && !empty($_COOKIE['cart']) && $post->post_name == 'cart'){
$cart = json_decode(base64_decode($_COOKIE['cart']), true);
//var_dump($cart);
$i = 0;
if (is_array($cart)) {
foreach($cart as $k => $row){
foreach($row as $k2 => $item){
//var_dump($item);
?>
<!-- form section code I comment it out -->
<?php }?>
<?php }?>
<div class="col-sm-4" style="margin-bottom:15px;">
<p><strong>Your cart is currently empty.</strong></p>
</div>
<?php }?>
<?php }?>
<?php }?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
非常感谢您的帮助或提示!
我将此 <?php wp_reset_postdata(); ?>
添加到 while 循环的末尾,现在开始工作。更多信息在这里:https://codex.wordpress.org/Function_Reference/wp_reset_postdata