【问题标题】:Sidebar not showing in Shop Page Woocommerce, Wordpress商店页面 Woocommerce、Wordpress 中未显示侧边栏
【发布时间】:2015-03-20 15:08:20
【问题描述】:

我非常绝望地试图解决这个问题。我正在定制一个 Wordpress Tisson Pro 主题以准备好 WooCommerce(它不是)。我已经做了与“第三方/自定义/非 WC 主题兼容性”相关的建议,在我自己的 Child-Theme 中做,还有 100 万件事情......但是侧边栏看起来仍然没有加载到商店页面中!我检查了代码,看起来问题如下;

woocommerce.php

<?php get_header();
$sidebar = mfn_sidebar_classes();

?>
<!-- Content -->
<div id="Content">
    <div class="container">
        <!-- .content -->
        <?php
            //open div
            if( $sidebar ) echo '<div class="content">';
            //get woocommerce content
            woocommerce_content();
            if( $sidebar ){
                //close div
                echo '</div>';
            } else {
                echo '<div class="clearfix"></div>';
            }
        ?>
        <!-- Sidebar -->
        <?php
            if( $sidebar ){
                get_sidebar();
            }
        ?>

    </div>
</div>
<?php get_footer(); ?>

代码没有进入 if( $sidebar ),不知何故我不知道为什么!我尝试了一切都没有运气。

如果你能帮助我,我将不胜感激:)

【问题讨论】:

  • 我们不知道mfn_sidebar_classes() 会返回什么。但是,如果您删除 if($sidebar) 条件并简单地调用 get_sidebar() 应该可以工作。
  • 我已经尝试过这个解决方案,但没有运气。问题是 WooCommerce 似乎删除了商店页面中声明的每个侧边栏。它以某种方式改变了布局。
  • 但是侧边栏会显示吗?您的侧边栏中是否有任何小部件?我猜布局会发生变化,因为您正在打开具有相同条件 if( $sidebar ) echo '&lt;div class="content"&gt;'; 的内容 div ...我不知道 $sidebar 的值在这里是什么,因为我不知道 mfn_sidebar_classes() 返回什么。我建议您聘请开发人员来完成此集成... WooCommerce 不会删除小部件或侧边栏,因此问题一定出在您的主题上。

标签: php wordpress woocommerce sidebar


【解决方案1】:

从 WooCommerce Third Party Theme Compatibility 文档中,您应该能够定义您的包装器......据我所知,看起来类似于 &lt;div class="content"&gt;。如果您在functions.php 中使用这些包装器,那么您不需要woocommerce.php

add_action('woocommerce_before_main_content', 'my_theme_wrapper_start', 10);
add_action('woocommerce_after_main_content', 'my_theme_wrapper_end', 10);

function my_theme_wrapper_start() {
  echo '<div class="content">';
}

function my_theme_wrapper_end() {
  echo '</div>';
  echo '<div class="clearfix"></div>';
}

【讨论】:

  • 我改变了它,现在我只使用钩子来定义我的包装器。没有 woocommerce.php 了。无论如何,页面 Shop 仍然没有加载任何侧边栏。我应该定义一个 sidebar-shop.php 还是类似的东西?
  • 您在商店侧边栏中肯定有一些小部件?您不应该定义侧边栏,因为 WooCommerce 将使用它的版本。您可以针对 24 进行测试。
【解决方案2】:

试试这个..

# WOOCOMMERCE CONNECT
remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
add_action( 'woocommerce_before_main_content', '_woocommerce_output_content_wrapper', 10 ); 
add_filter( 'woocommerce_show_page_title', 'no_title' );
function no_title(){
    return false;
}
function _woocommerce_output_content_wrapper(){
    echo '<div class="content"><div class="entry-content">';
    genesis_do_breadcrumbs();
    echo '<h1 class="entry-title" itemprop="headline">';
    woocommerce_page_title();
    echo '</h1>';
}

>> MORE DETAILS HERE

上面的代码只有在默认的钩子没有被移除或重新定位到不同的函数时才有效。

我可以知道您当前的商店网址吗?在创世纪,有一个页面设置,您可以选择页面布局。您应该选择侧边栏内容或内容侧边栏。然后在小部件上,您的主侧边栏必须至少有一个小部件,这样您才能看到结果。起源和woocommerce结构的问题不一样。您需要做的就是用&lt;div class="content"&gt;&lt;div class="entry-content"&gt; 包装woocommerce HTML。结构应该是这样的

<div class="content">
    <div class="entry-content">
        <woocommerce HTML>
    </div>
</div>
<sidebar>sidebar</sidebar>

如果对齐仍然不正确,则问题出在您的 CSS 代码上。第二个选项是将您的 woocommerce 文件覆盖到您当前的主题,并且不需要在 functions.php 中使用钩子。希望这会对你有所帮助。

【讨论】:

  • 我尝试了这个解决方案,但仍然无法正常工作。也许我做错了。我将它包含在functions.php(主题内部)中。我也有 woocommerce.php 来呈现 woocommerce 内容。我在我的主题和我的子主题中都试过了,在商店页面中仍然说:“这个模板支持侧边栏的小部件。添加一个或使用全宽布局。”当我在仪表板中定义了一个带有小部件的侧边栏时。我应该在functions.php中注册侧边栏并在woocommerce.php中调用它吗?
  • 您能否进一步解释一下究竟是什么意思“注意:如果下面的代码不起作用,则意味着您当前的 Woocommerce 挂钩已重新定位或 Woocommerce 挂钩已从之前的结构更新。”跨度>
  • 实际上,如果我添加您的代码,我的产品就会从商店页面中消失
  • Tisson Pro 是创世纪儿童主题吗?否则genesis_do_breadcrumbs()会导致白屏死机。
  • 不是,我只是将其构建为没有框架的普通 vhild。你推荐我使用它吗?
猜你喜欢
  • 2023-03-13
  • 2019-07-11
  • 2017-06-24
  • 2015-01-31
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
相关资源
最近更新 更多