从任何主题中删除Woocommerce侧边栏

时间:2018-03-27 20:06:31

标签: php wordpress woocommerce sidebar wordpress-hook

我使用WordPress 4.9.4运行Twenty Seventeen Child Theme主题与Woocommerce版本3.3.4。我正在尝试删除侧边栏...我尝试过使用它:

remove_action('woocommerce_sidebar','woocommerce_get_sidebar',10);

但尚未找到合适的人。

如何删除所有侧边栏?

3 个答案:

答案 0 :(得分:3)

适用于所有主题的最佳和简单方法是以这种方式使用get_sidebar Wordpress操作挂钩:

add_action( 'get_sidebar', 'remove_woocommerce_sidebar', 1, 1 );
function remove_woocommerce_sidebar( $name ){
    if ( is_woocommerce() && empty( $name ) )
        exit();
}

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

  

您可能需要对某些与html相关的容器进行一些CSS更改

此代码适用于任何主题,因为所有主题都使用get_sidebar() Wordpress功能用于侧边栏(即使是Woocommerce侧边栏),get_sidebar动作挂钩位于此功能代码中。

答案 1 :(得分:1)

WooCommerce在WC_Twenty_Seventeen班级的代码中标注了针对此特定主题的侧栏 / **      *关闭Twenty Seventeen包装。      * /

public static function output_content_wrapper_end() {
        echo '</main>';
        echo '</div>';
        get_sidebar();
        echo '</div>';
    }

我用这段代码替换了这个函数

remove_action( 'woocommerce_after_main_content', array( 'WC_Twenty_Seventeen', 'output_content_wrapper_end' ), 10 );
add_action( 'woocommerce_after_main_content', 'custom_output_content_wrapper_end', 10 );

/ **      *关闭Twenty Seventeen包装。      * /

function custom_output_content_wrapper_end() {
        echo '</main>';
        echo '</div>'; 
        echo '</div>';
    }

答案 2 :(得分:0)

使用is_active_sidebar钩子-这应该可以在 any 主题中使用,因为它是WordPress的核心功能:

function remove_wc_sidebar_always( $array ) {
  return false;
}
add_filter( 'is_active_sidebar', 'remove_wc_sidebar_always', 10, 2 );

您还可以使用条件语句来仅隐藏某些页面上的侧边栏,例如在产品页面上:

function remove_wc_sidebar_conditional( $array ) {

  // Hide sidebar on product pages by returning false
  if ( is_product() )
    return false;

  // Otherwise, return the original array parameter to keep the sidebar
  return $array;
}

add_filter( 'is_active_sidebar', 'remove_wc_sidebar_conditional', 10, 2 );