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

时间:2014-09-06 13:14:21

标签: wordpress twitter-bootstrap woocommerce sidebar

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

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

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

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

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

P.S。 该网站可以在这里找到&gt; wp.wunderful.co.uk(客户网站项目的暂存站点)

6 个答案:

答案 0 :(得分:4)

理论上,类似下面的东西应该有用,但我没有测试过。 (要添加到主题的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钩子......这很方便,因为它允许你取消挂钩这个函数就像我上面所示。最后,我使用Woo's conditional logic仅从您请求的页面上取消该函数的操作。

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

重要提示:

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

答案 1 :(得分:3)

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

关于你的主题,可能是subtheme,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
}

答案 2 :(得分:2)

.woocommerce-cart .sidebar {
    display: none;
}

.woocommerce-cart .content-area {
    width: 100%;
}

custom/style.css中添加。

答案 3 :(得分:1)

如果主题中尚未存在名为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;

答案 4 :(得分:1)

转到&#34;购物车&#34;来自仪表板页面的页面,来自&#34;页面属性部分&#34; - &GT; &#34;模板&#34;选择&#34;全宽&#34;这会给你一个没有侧边栏的页面。

答案 5 :(得分:0)

要从 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

相关问题