如何在 WordPress 中为帖子和页面显示不同的侧边栏
已发表: 2023-02-16默认情况下,WordPress 在所有帖子和页面上显示相同的侧边栏。 但有时,您可能希望为最重要的帖子或与整个帖子类别相关的侧边栏项目显示完全不同的侧边栏。 如果您曾经想过如何做到这一点,那么您很幸运!
在本文中,我们将向您展示如何为不同的帖子或页面创建独特的侧边栏,包括手动和使用 WordPress 插件。 但首先,让我们更多地谈谈您为什么要这样做。
为什么您可能需要不同的侧边栏
如前所述,如果您的博客中有很多类别,您可能会想在边栏中添加与该主题相似的优惠、广告或产品。 或者,也许您想在“关于我们”侧边栏中谈论您的业务,该侧边栏针对每个页面的受众量身定制。
在这些类型的情况下,您会希望有一个独特的侧边栏。 您可以通过两种方式创建一个:手动开发自己的或使用 WordPress 插件。
让我们先介绍手动方式。
如何手动创建新的 WordPress 侧边栏
要手动创建新的侧边栏,理想情况下您应该在本地环境中使用子主题。 我们已经为 twentyseventeen 主题创建了一个,但您可以对任何主题执行相同的过程。
首先,找到侧边栏在您的主题中注册的文件。 通常它是 functions.php 文件,但它可能会因您的主题而异。
打开文件并找到侧边栏代码的函数。 它通常由register_sidebar
组成,完整的功能可能如下所示:
[php]
函数 twentyseventeen_widgets_init() {
注册侧边栏(
大批(
'name' => __( '博客边栏', 'twentyseventeen' ),
'id' => 'sidebar-1',
'description' => __( '在此处添加小部件以显示在博客文章和存档页面的侧边栏中。', 'twentyseventeen' ),
'before_widget' => '<section id=”%1$s” class=”widget %2$s”>',
'after_widget' => '</section>',
'before_title' => '<h2 class=”widget-title”>',
'after_title' => '</h2>',
)
);
注册侧边栏(
大批(
'name' => __( 'Footer 1', 'twentyseventeen' ),
'id' => 'sidebar-2',
'description' => __( '在此处添加小部件以显示在您的页脚中。', 'twentyseventeen' ),
'before_widget' => '<section id=”%1$s” class=”widget %2$s”>',
'after_widget' => '</section>',
'before_title' => '<h2 class=”widget-title”>',
'after_title' => '</h2>',
)
);
注册侧边栏(
大批(
'名称' => __( '页脚 2', 'twentyseventeen' ),
'id' => 'sidebar-3',
'description' => __( '在此处添加小部件以显示在您的页脚中。', 'twentyseventeen' ),
'before_widget' => '<section id=”%1$s” class=”widget %2$s”>',
'after_widget' => '</section>',
'before_title' => '<h2 class=”widget-title”>',
'after_title' => '</h2>',
)
);
}
add_action( 'widgets_init', 'twentyseventeen_widgets_init' );
[/php]
现在复制整个函数并在您的子主题中创建一个 functions.php 文件(如果您还没有)并粘贴代码。 确保更改函数名称。
根据您需要创建多少个额外的侧边栏,您可以简单地复制相同的代码并为每个侧边栏分配一个唯一的 id。 您还应该更改名称和描述,使每一个都独一无二。 在这里,我们创建了两个新的侧边栏:
[php]
函数 twentyseventeen_new_widgets_init() {
注册侧边栏(
大批(
'name' => __( 'WordPress Sidebar', 'twentyseventeen' ),
'id' => 'sidebar-4',
'description' => __( '在此处添加小部件以显示在 wordpress 相关博客文章的侧边栏中。', 'twentyseventeen' ),
'before_widget' => '<section id=”%1$s” class=”widget %2$s”>',
'after_widget' => '</section>',
'before_title' => '<h2 class=”widget-title”>',
'after_title' => '</h2>',
)
);
注册侧边栏(
大批(
'name' => __( 'Web Design Sidebar', 'twentyseventeen' ),
'id' => 'sidebar-5',
'description' => __( '在此处添加小部件以显示在网页设计相关博客文章的侧边栏中。', 'twentyseventeen' ),
'before_widget' => '<section id=”%1$s” class=”widget %2$s”>',
'after_widget' => '</section>',
'before_title' => '<h2 class=”widget-title”>',
'after_title' => '</h2>',
)
);
}
add_action( 'widgets_init', 'twentyseventeen_new_widgets_init' );
[/php]
新的侧边栏现已准备就绪; 如果您检查小部件部分,它将显示两个新的小部件区域。 我们在每个侧边栏中添加了一个简单的文本小部件,以使其易于识别。
创建侧边栏后,就可以分配位置了。 我们正在寻找替换现有右侧边栏的方法,因此您需要找到它所在的文件。
对于本例,它位于sidebar.php
中。 从父主题复制文件并将其粘贴到您的子主题中。
如果您检查该文件,它会调用sidebar-1
,这是主要右侧边栏的 ID。
[php]
<aside id=”secondary” class=”widget-area” role=”complementary” aria-label=”<?php esc_attr_e( 'Blog Sidebar', 'twentyseventeen' ); ?>”>
<?php dynamic_sidebar( 'sidebar-1' ); ?>
</aside>
[/php]
现在,我们将为我的网页设计类别创建一个侧边栏,为我的 WordPress 类别创建另一个侧边栏。 这可以通过两种不同的方式实现:一种是模板驱动的方法,另一种是类别驱动的方法。
模板驱动方法
在这种方法中,您必须根据您的要求创建不同的模板。 对于此示例,single.php 负责单个帖子,因此您可以将该文件复制并粘贴到您的子主题中。 相应地重命名文件,例如wordpress-post.php
,并添加模板名称。
[php]
/* 模板名称:WordPress 侧边栏
* 模板帖子类型:帖子*/
[/php]
同样,我们创建了另一个名为webdesign-post.php
的模板。
现在,回到子主题的sidebar.php
文件并添加一个简单的条件来检查正在使用哪个模板。 为此,我们将使用is_page_template()
函数。
代码是不言自明的。 它会检查正在使用的模板并相应地设置侧边栏。 如果不满足任何条件,它将使用默认侧边栏。
[php]
<?php
如果(is_page_template('wordpress-post.php')){
dynamic_sidebar( 'sidebar-4' );
}elseif ( is_page_template('webdesign-post.php') ){
dynamic_sidebar( 'sidebar-5' );
}别的{
dynamic_sidebar('sidebar-1');
}
?>
[/php]
现在让我们创建一个新帖子并分配我们刚刚创建的模板之一。
你会看到我为这个特定的帖子选择了 WordPress 侧边栏。
类别驱动的方法
对于这个例子(根据帖子类别更改侧边栏),类别驱动的方法比模板驱动的方法更有效。 为此,您需要根据类别而不是使用in_category()
函数的模板来调整sidebar.php
中的条件。
[php]
<?php
如果(in_category('wordpress')){
dynamic_sidebar( 'sidebar-4' );
}elseif ( in_category('网页设计') ){
dynamic_sidebar( 'sidebar-5' );
}别的{
dynamic_sidebar('sidebar-1');
}
?>
[/php]
现在,如果您编辑或创建新帖子,只需添加您想要的类别。 它会相应地显示侧边栏,因此无需选择任何模板! 在这里,我们选择了网页设计作为我的帖子类别,因此将出现网页设计侧边栏。
基本上,您只需要根据您的具体要求调整 sidebar.php 条件。
如何使用 WordPress 插件创建自定义侧边栏
如果您在手动创建侧边栏时遇到问题,您可以尝试使用一些方便的 WordPress 插件来轻松创建侧边栏!
一个这样的插件是 Content Aware Sidebars。 这是一个简单的插件,可让您在各个页面、帖子、类别等上动态创建侧边栏。
安装后,您将在管理面板中看到一个侧边栏菜单。
侧边栏 > 添加新的
首先,在侧边栏中添加一个名称。 然后,您可以从边栏条件下拉列表中设置显示条件。 侧边栏可以有多个条件,如页面、帖子、类别、作者等。
您可以从计划选项卡安排侧边栏,并在设计选项卡中更改 HTML 标签。
您将在右侧看到一个选项框。 从那里,您可以设置新侧边栏的位置和规则。 您还可以执行操作,例如创建侧边栏的短代码。
侧边栏发布后,您可以从“外观”>“小部件”部分访问它。
根据您的设置,这个新的侧边栏将自动出现在页面和帖子上。
该插件还允许您在编辑每个帖子或页面时选择侧边栏,而不管您的初始设置如何。
在帖子或页面中,您会在右侧看到一个侧边栏 - 快速选择面板,它将向您显示所有现有的侧边栏。 从那里,您可以在先前在初始设置中设置的目标位置中选择侧边栏。
例如,我们之前创建了My sidebar并且目标位置是Blog Sidebar ,因此在Quick Select面板中, My sidebar将仅适用于Blog Sidebar 。
但是,您也可以从编辑页面部分创建新的侧边栏。 只需键入新侧边栏的名称并发布或更新页面。
如果您创建一个新的侧边栏,您只需要在外观 > 小工具部分激活它。
注意:您还可以为页面分配侧边栏,但请确保您的页面模板包含侧边栏。 没有它,侧边栏将不会显示,即使你在编辑页面部分设置它。
结论
您现在已经看到了创建侧边栏的两种选择:手动开发和使用插件。 如果您对代码不满意,那么使用插件可能是您的最佳选择,但如果您有特定要求并且不想向您的网站添加额外的插件,那么您应该采用手动方式. 重要的是了解您的要求,然后选择您的最佳选择!