在单个产品页面上隐藏Woocommerce侧栏

时间:2020-01-22 15:03:57

标签: php wordpress woocommerce

我是新来的。

我已经在Woocommerce商店页面上安装了侧边栏,就像这样(在woocommerce.php文件中):

<main role="main" class="container row">
    <div class="col-md-2 filtersmargin">
        <?php
        if (is_active_sidebar('sidebar')) {
            dynamic_sidebar('sidebar');
        }
        ?> 
    </div>
    <div class="col-md-10">
        <div class="woocommerce">
            <?php woocommerce_content(); ?>
        </div>
    </main><!-- /.container -->

但是,此侧边栏当然也显示在单个产品页面上。问题是,在查看单个产品(尺寸,颜色等)时,边栏中的过滤器是不相关的,因此我想从那里删除它。过去,我使用Google的片段成功地做到了这一点(当时我没有创建自己的自定义主题,而是使用了Astra),但是现在我无法使其工作了。我怀疑这是由于我首先集成了侧边栏的原因,但是我不确定。

如果有人对我如何仅在单个产品页面上将其删除有任何想法,将不胜感激。

2 个答案:

答案 0 :(得分:2)

一种方法是通过is_product()is_singular('product')函数检查它是否为单一产品,以及是否未显示侧边栏。

另一种方法是从 woocommerce 插件根目录完全复制template文件夹,然后将其粘贴到 themes / current-theme / woocommerce 中,然后自定义{ {1}}文件。

注意:,您不需要复制所有文件。您只能复制需要自定义的文件(此处为single-product.php)。

答案 1 :(得分:0)

您将希望使用条件语句来检查您所处的页面类型。

You can find more functions and details here

代码可能类似于

<main role="main" class="container row">
<?php if (! is_product() ){  //if not single product page ?>
<div class="col-md-2 filtersmargin">
    <?php
    if (is_active_sidebar('sidebar')) {
        dynamic_sidebar('sidebar');
    }
    ?> 
</div>
<div class="col-md-10">
<?php }else{ // this depends on how you want your template to look ?>
  <div class="col-md-12">
<?php } ?>
    <div class="woocommerce">
        <?php woocommerce_content(); ?>
    </div>

</main><!-- /.container -->

如果您希望该列在单个产品页面上为空,则只需更改一行:

if ( is_active_sidebar('sidebar') && ! is_product() ) {

我不确定您正在编辑哪个模板文件,因此在研究时可能会值得。

侧面说明:如果要编辑WooCommerce插件中的文件,请记住最好将模板文件复制到主题/子主题中,并以这种方式覆盖它们,以便您可以更新插件而不会丢失对模板的更改。 / p>