如何从购物车,结帐和单个产品页面中删除Woocommerce侧边栏?

Oli*_*tin 5 wordpress sidebar twitter-bootstrap woocommerce

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

<?php dynamic_sidebar('global-sidebar'); ?>
Run Code Online (Sandbox Code Playgroud)

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

在我进一步讨论之前,我使用Bootstrap(截至2014年的最新版本)来设计我的Wordpress网站.不确定这是否重要,但也许它确实以某种方式.

有人可以告诉我我是如何找到的,然后告诉Woocommerce不要在购物车,结账和单品页面上显示任何类型的侧边栏吗?

ps网站可以在这里找到> wp.​​wunderful.co.uk(客户网站项目的登台网站)

hel*_*ing 5

理论上,像下面这样的东西应该可以工作,但我还没有测试过。(要添加到您的主题的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' );
Run Code Online (Sandbox Code Playgroud)

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

<?php
    /**
     * woocommerce_sidebar hook
     *
     * @hooked woocommerce_get_sidebar - 10
     */
    do_action( 'woocommerce_sidebar' );
?>
Run Code Online (Sandbox Code Playgroud)

这是 Woo 说的:“在此处显示侧边栏”。但是它正在将woocommerce_get_sidebar函数添加到woocommerce_sidebar钩子中……这很方便,因为它允许您像我上面展示的那样取消钩子函数。最后,我使用Woo 的条件逻辑仅从您请求的页面上的操作中解除该函数的钩子。

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

重要的提示:

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


小智 5

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