在 WordPress 中创建新的小工具区域

https://wpvkp.com/create-new-widget-area-in-wordpress/

本文要求您具备 PHP 编程语言的基本知识。

WordPress 有它自己的方式来定义页面结构。这有助于开发人员将网站的不同部分写在不同的文件里,这样开发人员就只需要专注于一个部分进行编写代码。最后,开发人员在一个名为 “index.php” 的文件中调用所有部分,这就是您的主页。并且以相同的方式创建了不同的页面模板,内容布局和侧边栏。
因此,如果要在 wordpress 中创建自定义小部件区域,那么你:要么编辑 sidebar.php 文件,要么创建它。
为了以防万一,我建议你先把你的主题做一个完整的备份。更好的方法是,在您的电脑上安装 wordpress,尝试这里提供的步骤。我之所以要求您这样做,是因为如果您以错误的方式或在错误的地方实现了本教程中提供的代码,那么它可能会破坏您的网站的外观。在最坏的情况下,您的站点可能会暂时宕机。
现在,如果你准备好了,请向下滚动,并遵循步骤。我相信在你完成最后一步后,你会有新的东西玩。
在这里,我将为您提供代码以及其工作原理的说明。 我还将告诉您它的工作原理以及放置位置。


第一步

复制下面的代码,然后粘贴到主题的 functions.php 文件中。

/**
* Register widget area.
*
* @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
*/
function bb_widgets_init() {
register_sidebar( array(
'name' => esc_html__( 'Sidebar', 'bb' ),
'id' => 'sidebar-1',
'description' => esc_html__( 'Add widgets here.', 'bb' ),
'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', 'bb_widgets_init' );

如果您不知道这个文件在哪里,请进入网站后台→外观→主题编辑器。然后,在右侧的文件列表中即可看到 “functions.php” 文件(可能在底部)。点击它,即可加载该文件,并显示在左侧的编辑器界面中。
现在,滚动到编辑器的底部,然后粘贴上面提供的代码。
您也可以下载此文件并进行编辑,编辑好之后可以通过 FTP 等方式上传回服务器。

第二步

现在是时候决定在哪里显示小工具了。
因此,您需要复制下面提供的代码并粘贴到 sidebar.php 文件中(如果没有,请创建该文件)。

if ( ! is_active_sidebar( 'sidebar-1' ) ) {
	return;
}
?>
<aside id="secondary" class="widget-area">
	<?php dynamic_sidebar( 'sidebar-1' ); ?>
</aside><!-- #secondary -->

使用 get_sidebar(); 函数可以让小工具在您的主题中的其他位置(比如页眉(header.php)、页脚(footer.php)等等)中出现,只需确保明智地使用它即可,因为此函数将加载 ID 为 sidebar-1 的小部件区域,您放置在其中的任何小部件都会显示在此处。
我个人建议您将 get_sidebar(); 放在 single.php 文件中,get_footer(); 之前的位置。这样,您将能够在所有的已发布的页面上显示小部件和其中的任何内容。

解释

在我的第一段代码中,我首先创建了一个名为 bb_widgets_init 的函数。在这个函数中,我使用了 register_sidebar()函数,该函数接受各种不同类型的参数。如果需要有关其实现和参数的详细信息,则可以阅读官方文档。
实际上,这些参数是非常不言自明的。例如,“name” 用于为边栏提供自定义名称。“id” 用于为侧栏区域提供唯一的标识。这有助于开发人员 在需要的位置中 调用特定的小工具区域。为了添加 HTML 包装,我使用了 “before_widget” 和 “after_widget”。最后,“before_title” 和 “after_title” 用于添加标题。
在我的第二段代码中,我使用了 if 条件语句来检查 “sidebar-1” 是否可用。如果条件为 true,则继续执行代码,注册一个新的小工具区域,否则将返回 null


我知道这个教程很难理解,特别是对那些没有接触过 PHP 的人。但是我已经尽我所能把事情讲的尽可能简单。
如果你对这个本文章有任何疑问,请不要犹豫在评论区问我。