在Wordpress主题中使用sidebar.php

时间:2016-10-25 15:49:40

标签: php wordpress sidebar

我最近在自建主题上安装了Woocommerce,并收到一条错误消息,告诉我需要在我的主题中添加sidebar.php代码。错误消息后面是一个凌乱的,未设置样式的列表中的小部件列表。这些小部件包括一个搜索栏,我站点中的页面列表以及一个档案和类别​​列表。我现在通过一个似乎有用的教程创建了sidebar.php - 我已经包含了我在下面使用的代码。

我发现不寻常的是,自添加侧边栏以来,这些小部件似乎已经消失,我现在必须使用外观菜单下的小部件选项卡手动添加它们。我无法弄清楚他们为什么会失踪?

我一直认为在添加侧边栏时,我必须通过PHP代码添加小部件 - 否则侧边栏不会与其他模板冲突?例如,我可以为我的商店页面添加Woocommerce小部件,但是当我想创建博客文章时,我需要不同的小部件,而Woocommerce仍然会在侧边栏中,反之亦然。

也许我已经采取了错误的做法......也许有人可以指出我正确的方向?我一直在谷歌上搜索并观看了一些youtube教程,但还没有找到我正在寻找的答案。

我的代码如下:

的functions.php

function enable_widgets() {

    register_sidebar(
        array(
            'name' => 'Main Sidebar',
            'id'   => 'sidebar',
            'description'   => 'Here you can add widgets to the main sidebar.',
            'before_widget' => '<div id="%1$s" class="widget %2$s">',
            'after_widget'  => '</div>',
            'before_title'  => '<h5 id="widget-heading">',
            'after_title'   => '</h5>'
    ));

 }

 add_action('widgets_init','enable_widgets');

的sidebar.php

<div class="sidebar">
    <?php dynamic_sidebar('sidebar'); ?>
</div>

1 个答案:

答案 0 :(得分:1)

在woocommerce / templates / global / sidebar.php中,您可以看到woocommerce如何显示侧边栏。

<?php
if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

get_sidebar( 'shop' ); ?>

首先搜索sidebar-shop.php,然后搜索sidebar.php。 所以你需要做的就是在你的主题文件夹下创建sidebar-shop.php。

在您的sidebar-shop.php中,显示您已注册的小部件区域。

<强>边栏-shop.php

<div class="sidebar">
    <?php dynamic_sidebar('sidebar'); ?>
</div>

还有另一种方法可以使用相同的sidebar.php来显示特定于woocommerce的小部件区域。由于WooCommerce有一些conditional tags,我们可以使用 is_woocommerce ()来确定页面是否使用WooCommerce模板。

<强>的sidebar.php

<div class="sidebar">
    <?php

    if ( is_woocommerce() ) {
       dynamic_sidebar('sidebar');
    } else {
       dynamic_sidebar('default-sidebar');
    }

   ?>

</div>