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