【问题标题】:How do I remove Woocommerce sidebar from cart, checkout and single product pages?如何从购物车、结帐和单个产品页面中删除 Woocommerce 侧边栏?
【发布时间】:2014-10-31 06:42:03
【问题描述】:

像许多第一次开始使用 woocommerce 的人一样,我需要知道如何自定义它。在我的特殊情况下,我想从购物车、结帐和单个产品页面中删除侧边栏。我的侧边栏是使用下面的代码从 sidebar.php 定义和调用的:

<?php dynamic_sidebar('global-sidebar'); ?>

我已经尝试了很长时间才能找到有效的答案,但我似乎找不到正确的代码或解决方案。也许自己问这个问题会奏效。顺便说一句,我非常感谢其他文章和操作方法中的答案,但它们对我不起作用。

在我继续之前,我正在使用 Bootstrap(截至 2014 年的最新版本)来设置我的 Wordpress 网站的样式。不确定这是否重要,但也许它以某种方式起作用。

谁能告诉我如何找到然后告诉 Woocommerce 不要在购物车、结帐和单一产品页面上显示任何类型的侧边栏?

附言 该网站可以在这里找到>wp.wunderful.co.uk(客户网站项目的临时站点)

【问题讨论】:

  • 您是否检查了这些页面上的小部件菜单?
  • 我不熟悉小部件在这些页面上的工作方式。 woocommerce 页面让我感到困惑,因此请求帮助。不过感谢您的评论。
  • 如果您没问题,我可以在管理面板中为您检查。
  • 我避免这样做,所以不抱歉。

标签: wordpress twitter-bootstrap woocommerce sidebar


【解决方案1】:

理论上,类似下面的东西应该可以工作,但我还没有测试过。 (被添加到你的主题的functions.php)

function so_25700650_remove_sidebar(){
    if( is_checkout() || is_cart() || is_product() ){
        remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
    }
}
add_action('woocommerce_before_main_content', 'so_25700650_remove_sidebar' );

如果您查看 Woo 模板,您会看到

<?php
    /**
     * woocommerce_sidebar hook
     *
     * @hooked woocommerce_get_sidebar - 10
     */
    do_action( 'woocommerce_sidebar' );
?>

这是 Woo 说的:“在此处显示侧边栏”。但它将woocommerce_get_sidebar 函数添加到woocommerce_sidebar 钩子... 这很方便,因为它允许您unhook 该函数,就像我在上面显示的那样。最后,我使用Woo's conditional logic 仅将函数从您请求的页面上的操作中解开。

我在 woocommerce_before_main_content 钩子上运行我的函数,我认为假设您的主题没有删除该钩子,它应该可以工作。如果是这样,那么您可能会使用wp_head 或保证存在的东西,但您可能想检查is_checkout() 等功能是否存在,或者如果您停用WooCommerce,则可能会破坏您的主题。正如我所拥有的,我应该只在 WooCommerce 特定的页面上运行,因此检查是否定义了 WooCommerce 功能可能是矫枉过正。

重要提示:

这假定默认主题或未运行其自己的自定义侧边栏功能的主题。如果您的主题正在做其他事情,您将需要研究其特定的功能和模板。

【讨论】:

  • 我喜欢您提供的简单易懂的答案,谢谢。但是,您能否澄清一下,我是否需要删除“woocommerce_sidebar hook”代码并将其替换为 remove_sidebar 代码,或者它是否只是位于 woocommerce_sidenar 代码下方?另外,我应该复制和粘贴您提供的代码哪些特定页面?
  • 为了澄清,我将您的代码复制并粘贴到了原始钩子代码下方的 single-product.php 页面上,它并没有删除侧边栏。
  • 可以将所有 Woo 模板复制到您的主题中,并在需要的地方删除侧边栏挂钩,但我认为将我的代码粘贴到您的主题函数中是最简单的。 php.
  • Woocommerce 仅提供woocommerce_before_main_content 钩子on achieve/shop/product_cat pages。您可以使用woocommerce_before_cart 钩子on the cart pagewoocommerce_before_checkout_form 钩子on the checkout page。你还需要制作.content-area wider
【解决方案2】:

你应该做的是在你的主题中创建一个名为woocomemrce.php 的文件,如果它不存在的话。然后,您应该查看页面模板文件的全宽和带有侧边栏的页面,以了解它们的结构并查看它们的不同之处。 然后将其中一个文件的内容复制到 woocommerce.php 并将循环替换为woocommerce_content()see this page for details。 最后看看不同页面模板的不同之处,然后在它们不同的地方使用 if 语句。

if( is_post_type_archive( 'product' ) ) :
    //Content to display in the list view (i.e. with sidebar)
else :
    //Content to display all other views (i.e. without sidebar)
endif;

【讨论】:

    【解决方案3】:
    .woocommerce-cart .sidebar {
        display: none;
    }
    
    .woocommerce-cart .content-area {
        width: 100%;
    }
    

    将此添加到custom/style.css

    【讨论】:

    • 这是一种解决方法,但不是一个很好的解决方案。显示:无;即使内容不可见,仍会加载内容,因此最好先删除加载侧边栏的代码以优化性能。
    【解决方案4】:

    要从购物车、结帐和单个产品页面中删除侧边栏,您要在 function.php 文件中使用操作挂钩 -

        add_action('woocommerce_before_main_content', 'remove_sidebar' );
        function remove_sidebar()
        {
            if( is_checkout() || is_cart() || is_product()) { 
             remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10);
           }
        }
    

    在这里你可以得到 WooCommerce Action 和 Filter Hook -https://docs.woothemes.com/wc-apidocs/hook-docs.html

    【讨论】:

      【解决方案5】:

      从仪表板页面转到“购物车”页面,从“页面属性部分”->“模板”选择“全宽”,这将为您提供一个没有侧边栏的页面。

      【讨论】:

      • 在所有提供的解决方案中,这是最简单的,不需要编辑代码。
      【解决方案6】:

      来自

      https://wordpress.org/support/topic/remove-sidebar-for-woocommerce-cart-and-checkout-pages/

      关于你的主题,可能是子主题,function.php

      add_action('wp_head', 'hide_sidebar' ); function hide_sidebar(){ if(is_cart() || is_checkout()){ ?>
      <style type="text/css">
          #secondary {
              display: none;
          }
      </style>
      <?php
      }
      

      【讨论】:

      • 这是一种变通方法,但不是一个很好的解决方案。显示:无;即使内容不可见,仍会加载内容,因此最好先删除加载侧边栏的代码以优化性能。
      • 那么我们如何删除加载侧边栏的代码..?
      猜你喜欢
      • 2017-06-05
      • 1970-01-01
      • 2018-06-17
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      相关资源
      最近更新 更多