从Woocommerce中的单个产品中删除二十一中的侧边栏

时间:2018-10-28 11:10:52

标签: php wordpress woocommerce sidebar twentyseventeen

我一直在尝试找出如何从单个产品页面上删除商店侧边栏。我为此尝试了各种选择。我正在使用二十七主题。 我首先在我的子功能文件中尝试了来自Business Bloommer的此代码段。

 add_action( 'wp', 'bbloomer_remove_sidebar_product_pages' );

function bbloomer_remove_sidebar_product_pages() {
if ( is_product() ) {
remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
}
}

但是这不起作用。随后从另一个用户那里读取了一个线程,说该代码段不适用于二十七个主题。

然后我尝试通过在子主题中创建woocommerce / singleproduct.php并删除以下内容来覆盖woo Commerce模板woocommerce / templates / singleproduct.php:

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

这也不起作用。我在这里遗漏了明显的东西吗?如果有人对我做错了什么有深刻的见解,我将非常感谢。非常感谢。

1 个答案:

答案 0 :(得分:0)

对于“二十十七岁”主题,Woocommerce WC_Twenty_Seventeen中有一个特殊的类可以处理侧边栏。

因此,请使用以下命令从单个产品页面上删除侧边栏:

remove_action( 'woocommerce_after_main_content', array( 'WC_Twenty_Seventeen', 'output_content_wrapper_end' ), 10 );
add_action( 'woocommerce_after_main_content', 'remove_sidebar_from_output_content_wrapper_end', 10 );
function remove_sidebar_from_output_content_wrapper_end() {
    // Only for single product pages
    if( is_product() ) {
        echo '</main></div></div>';
    } else {
        echo '</main></div>';
        get_sidebar();
        echo '</div>';
    }

}

代码进入活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

但是您将必须在styles.css文件中添加一些CSS规则,例如:

.has-sidebar.single-product.woocommerce-page:not(.error404) #primary {
    width: 100% !important;
    float: none !important;
}