在 Wordpress 主题中使用 sidebar.php
Using sidebar.php within a Wordpress theme
我最近在自建主题上安装了 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>
在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。
并在您的侧边栏-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>
我最近在自建主题上安装了 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>
在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。
并在您的侧边栏-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>