测试你的主题

在向公众发布主题之前,您应该对其进行全面测试,确保其按预期工作。

我们来看看发布主题前需要做的一些事情,包括:

  • 在本地开发环境中测试主题。
  • 使用主题测试数据确保主题能处理各种内容。
  • 用于调试和测试的有用插件。
  • 可访问性和性能测试工具。

在本地开发环境中测试主题

学习 WordPress 开发者路径中的所有课程都推荐使用本地开发环境。

不过,也可以使用在线服务器开发块主题,尤其是在使用 Create Block Theme 时。

因此,在本地开发环境中测试主题也是一个好主意。

这样做的好处之一是,您可以启用 WordPress 调试选项,查看主题是否产生任何错误或警告。

如果您还没有本地开发环境,请查看“本地开发环境”课程以了解一些选项。

使用主题测试数据

测试主题的一部分包括确保它能处理各种内容。默认情况下,新的 WordPress 安装只有一个示例页面、文章和评论。

您无需手动创建不同类型的内容,而是可以下载并安装 WordPress 项目的主题测试数据。

这些测试数据包含一组文章、页面和其他内容,可用于测试您的主题。

要安装主题单元测试数据,请按照以下步骤操作:

  1. 从 GitHub 仓库下载主题单元测试数据文件,点击下载原始文件按钮,并将文件保存到计算机硬盘。
  2. 在 WordPress 管理后台中,转到工具 > 导入
  3. WordPress 部分下,点击立即安装。这将安装 WordPress XML 导入器。
  4. 安装完成后,点击运行导入器链接。
  5. 点击选择文件按钮,选择之前下载的主题单元测试数据文件。
  6. 点击上传文件并导入按钮。
  7. 将内容分配给现有用户,或创建一个新用户来分配,并确保勾选下载并导入文件附件复选框。然后点击提交按钮。

导入完成后,您应该会在网站上看到各种内容,包括文章、页面和其他内容类型。

然后,您可以使用这些内容测试主题,确保其正确显示。

用于调试和测试的有用插件

有几个社区插件可以在主题开发过程中帮助您测试和调试主题。

在主题开发过程中,有几个插件可以帮助您发现和修复问题,包括:

  • Query Monitor
  • Debug Bar
  • Log Deprecated Notices

当您准备分发主题时,Theme Check 插件会根据 WordPress 主题审查指南评估您的主题代码。

遵循这些指南是将主题提交到 WordPress 主题目录的要求。

即使您不打算通过主题目录分发主题,这仍然是测试主题结构和代码的良好基线。

跨浏览器测试

为了有效进行块主题的跨浏览器兼容性测试,您需要在所有主流浏览器上测试主题,包括 Firefox、Chrome、Safari 和 Edge。

您还可以使用第三方工具,如 BrowserStack 或 BitBar,在不同浏览器和设备上测试主题。

此外,大多数现代浏览器都提供开发者工具,允许您检查渲染页面的所有内容,包括 JavaScript 错误、网络使用情况和主题性能。

使用浏览器开发者工具还可以启用响应式设计模式,让您在不同设备和屏幕尺寸上测试主题。

可访问性和性能测试工具

确保主题的可访问性是负责任的主题开发的关键方面。

您应努力确保主题符合 WordPress 可访问性指南。这包括键盘导航、屏幕阅读器兼容性以及正确使用 ARIA 角色等方面。

如果您还没有了解过,请查看“主题可访问性”模块,了解更多关于使主题可访问的重要性、常见可访问性问题以及如何避免它们的信息。

您还应该测试主题,确保它没有加载不必要的资源,并且针对性能进行了优化。

要测试这一点,你可以使用 Google Lighthouse 等工具,它可以通过 Chrome 开发者工具、命令行或作为 Node 模块运行。

你也可以将主题安装到真实网站上,并使用 PageSpeed Insights 或 GTmetrix 等工具来测试主题的性能。请确保不仅测试首页,还要测试页面和文章等其他模板。

延伸阅读

有关测试主题的更多信息,包括本课程中提到的所有技巧和工具,请查阅主题开发者手册中“高级主题”下的“测试”页面。

插件API钩子

WordPress 提供了许多钩子,允许插件“接入”WordPress 的功能。

你的主题应支持这些钩子,以便插件开发者能够扩展你的主题。

在本课中,你将学习如何通过实现特定的模板标签,让插件能够接入你的主题。

关于块主题的说明

如果你正在开发块主题,则无需担心实现这些模板标签。

实现本课所述功能的块已经支持相关的钩子。

只有在开发经典主题或核心块之外的自定义功能时,才需要使用这些模板标签。

模板标签

大多数钩子由WordPress内部自动执行,因此你的主题无需特殊标签即可使其工作。

然而,少数钩子需要在特定的主题模板中得到支持。

这些钩子由特定的模板标签触发:

wp_head() 触发 wp_head 动作,插件利用它向主题的 <head> 部分添加代码。

此标签应始终位于主题 header.php 模板文件中 <head> 元素的末尾。

wp_body_open() 触发 wp_body_open 动作,插件利用它向主题的 <body> 元素添加代码。

此标签应位于主题 header.php 模板文件中 <body> 元素的开头。

wp_footer() 触发 wp_footer 动作,插件利用它向主题的页脚添加代码。

此标签应位于主题的 footer.php 文件中,紧接在闭合的 </body> 标签之前。

wp_meta() 触发 wp_meta 动作。此动作可能有多种用途,具体取决于你的使用方式,但其中一个用途可能是允许主题切换。

此标签通常位于主题菜单或侧边栏的 <li>Meta</li> 部分。

comment_form() 用于在文章末尾显示评论表单。

此标签应位于 comments.php 模板文件中,直接放在文件闭合的 </div> 标签之前。

构建流程

在开发 WordPress 主题时,考虑是否需要构建流程来帮助你管理主题资源并优化性能会很有用。

在本课中,你将学习更多关于构建流程的知识、为何要使用它们,以及如何使用 @wordpress/scripts 包来设置一个基本的构建流程。

什么是构建流程?

构建流程是一种将源代码文件转换为计算机可读取的最终构建/生产版本的方法。

特别是,主题通常会将源代码压缩或转换为 CSS 或 JavaScript,以便浏览器能够读取。

为什么要使用构建流程?

根据你在主题中使用的技术,你可能需要一个构建流程来帮助你管理主题资源并优化性能。

例如,如果你选择使用 Sass 来编写样式,你将需要一个构建流程来将你的 Sass 文件编译成浏览器可读取的 CSS 文件。

如果你选择使用更现代的语法编写 JavaScript,你将需要一个构建流程来将你的 JavaScript 文件转译成所有浏览器都能执行的格式。

即使你不使用这些选项,构建流程对于优化主题资源仍然很有用,例如压缩 CSS 和 JavaScript 文件以及优化图片。

在创建 WordPress 主题时,你可能会发现自己需要一个构建流程来处理更复杂的项目。有很多系统可供选择,你可以使用任何你喜欢的。

WordPress 也提供了 @wordpress/scripts 包,你可以放心它会持续更新,并且应该能满足你大部分的需求。

前置要求

大多数 WordPress 主题开发不需要任何额外的软件。你只需要一个代码编辑器、一个本地开发环境和一个 WordPress 安装。

但要使用构建流程,还有一些其他要求:

  • 你需要在本地机器上安装 Node.js 和 npm,这也是构建 WordPress 区块的要求。
  • 建议对 webpack 有基本的了解。
  • 对 @wordpress/scripts 包有一定熟悉度。

这些工具比通常构建主题所需的工具更高级,但如果你想使用标准的 WordPress 构建流程,它们是必需的。

如果你已经完成了初级开发者学习路径中的区块开发入门模块,你应该已经具备了所有需要的知识。

设置文件和文件夹

@wordpress/scripts 包最初是为区块开发创建的。随着时间的推移,它已经发展到也能与主题一起使用。

默认情况下,它期望开发文件位于 /src 文件夹中,并将构建文件输出到 /build 文件夹。

然而,大多数主题作者会使用自定义系统来处理资源。

假设你的主题有以下结构:

your-theme/
├── resources/
│   ├── js/
│   └── scss/
├── public/
│   ├── js/
│   └── css/
├── style.css
└── functions.php

你的开发 JavaScript 和 Sass 文件分别位于 resources/jsresources/scss 文件夹中。当构建流程运行时,你希望它们被输出到 public/jspublic/css 文件夹。

设置 package.json 文件

第一步,如果你还没有做的话,是初始化 npm 项目。这将在你的主题根目录中创建一个 package.json 文件。

为此,打开你的终端,导航到主题根目录,并运行以下命令:

npm init

系统会提示你输入一些关于项目的信息。你可以按回车接受默认值,或根据自己的喜好更改这些值。

完成设置后,你的主题根目录中会有一个 package.json 文件。

{
  "name": "your-theme",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

接下来,你需要将 @wordpress/scripts 包作为开发依赖项安装。

为此,在终端中,在你的主题根目录下运行以下命令:

npm install @wordpress/scripts --save-dev

完成后,你会看到 package.json 文件已更新,包含了新的依赖项。

{
  "name": "your-theme",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@wordpress/scripts": "^27.9.0"
  }
}

最后但同样重要的是,更新 package.json 文件中的 scripts 部分,包含以下内容:

{
  "scripts": {
    "start": "wp-scripts start --webpack-src-dir=resources --output-path=public",
    "build": "wp-scripts build --webpack-src-dir=resources --output-path=public"
  }
}

这会创建两个 npm 脚本命令,startbuild,它们将使用适合你主题的正确配置来运行 @wordpress/scripts 包。

在这种情况下,它会在 resources 文件夹中查找文件,并将它们输出到 public 文件夹。

如果你有不同的文件夹结构,可以调整 --webpack-src-dir--output-path 参数以匹配你的设置。

配置 webpack

@wordpress/scripts 包是基于 webpack 构建的。如果你在构建区块,所有配置都已经为你准备好了。

但是,由于你正在构建主题,你需要用自己的配置覆盖 @wordpress/scripts 包的一些默认配置。

为此,请在主题根目录中创建一个自定义的 webpack.config.js 文件。

// WordPress webpack config.
const defaultConfig = require( '@wordpress/scripts/config/webpack.config' );

// Plugins.
const RemoveEmptyScriptsPlugin = require( 'webpack-remove-empty-scripts' );

// Utilities.
const path = require( 'path' );

// Add any new entry points by extending the webpack config.
module.exports = {
    ...defaultConfig,
    ...{
        entry: {
            'js/editor':  path.resolve( process.cwd(), 'resources/js',   'editor.js'   ),
            'css/screen': path.resolve( process.cwd(), 'resources/scss', 'screen.scss' ),
            'css/editor': path.resolve( process.cwd(), 'resources/scss', 'editor.scss' ),
        },
        plugins: [
            // Include WP's plugin config.
            ...defaultConfig.plugins,

            // Removes the empty `.js` files generated by webpack but
            // sets it after WP has generated its `*.asset.php` file.
            new RemoveEmptyScriptsPlugin( {
                stage: RemoveEmptyScriptsPlugin.STAGE_AFTER_PROCESS_PLUGINS
            } )
        ]
    }
};

自定义 webpack 配置可以在 WordPress 开发者手册高级主题部分的构建过程页面中的配置 webpack 章节找到。

这个配置文件为你的自定义 JavaScript 和 Sass 文件设置了入口点,并告诉 webpack 在哪里找到它们。

它还配置了 webpack-remove-empty-scripts,这样就不会有残留的 JavaScript 文件映射到你的 CSS。

运行构建过程

一切设置完成后,你现在可以运行构建过程了。

要启动开发服务器,请在终端中运行以下命令:

npm run start

这将启动开发服务器并监视你的文件变化。当你对 JavaScript 或 Sass 文件进行更改时,构建过程将自动重新编译它们。

要为生产环境构建主题,请在终端中运行以下命令:

npm run build

加载脚本和样式

在关于包含资源的课程中,你已经学会了如何在主题中加载脚本和样式。

当使用构建过程时,你需要加载编译后的文件,而不是源文件。

如果你打开 public/js 文件夹,你会看到构建过程创建了以下文件:

editor.js
editor.asset.php

资源文件返回一个 PHP 数组,其中包含一个依赖项数组和一个 editor.js 文件的版本号。

然后你可以使用这个数组在主题中加载脚本。

首先,使用相关的钩子并在 functions.php 文件中指定钩子回调函数

// Load editor scripts.
add_action( 'enqueue_block_editor_assets', 'themeslug_editor_assets' );

function themeslug_editor_assets() {

}

在钩子回调函数内部,包含资源文件

$script_asset = include get_theme_file_path( 'public/js/editor.asset.php'  );

最后,使用资源文件中的值加载脚本

    wp_enqueue_script(
        'themeslug-editor',
        get_theme_file_uri( 'public/js/editor.js' ),
        $script_asset['dependencies'],
        $script_asset['version'],
        true
    );

你的最终代码应该如下所示:

add_action( 'enqueue_block_editor_assets', 'themeslug_editor_assets' );
function themeslug_editor_assets() {
    $script_asset = include get_theme_file_path( 'public/js/editor.asset.php'  );
    wp_enqueue_script(
        'themeslug-editor',
        get_theme_file_uri( 'public/js/editor.js' ),
        $script_asset['dependencies'],
        $script_asset['version'],
        true
    );
}

对于任何你想要加载的样式表,过程是类似的。

进一步阅读

关于如何使用 @wordpress/scripts 包 设置构建过程的完整指南,你可以参考 WordPress 开发者手册高级主题部分的构建过程页面。

主题中的JavaScript

JavaScript 是一种编程语言,用于为网页添加交互功能。

主题开发者通常使用 JavaScript 来为他们的主题提供交互性、动画或其他增强功能。

虽然使用 JavaScript 可以让你的主题更具吸引力和互动性,但如果使用不当,也可能带来潜在问题。

在本课中,你将学习在 WordPress 主题中使用 JavaScript 的一些最佳实践。

你将了解如何使用第三方 JavaScript 库、编写 JavaScript 时应遵循的一些最佳实践、是否应该使用 jQuery,以及在哪里可以找到更多信息。

JavaScript 库

如果你需要在主题中使用任何第三方 JavaScript 库,请务必检查该库是否已通过 WordPress 安装提供。

WordPress 包含多个你可以使用的 JavaScript 库。这些库随 WordPress 一起提供,你可以在主题中使用它们。

新手主题开发者常犯的一个错误是将自己的库版本与主题捆绑在一起。

然而,这可能会与那些加载 WordPress 自带库版本的插件产生冲突。

你可以在 wp_enqueue_scripts 函数参考中找到 WordPress 包含和注册的默认脚本和 JavaScript 库的完整列表。

确保你的主题与你喜欢的、WordPress 自带的库版本兼容。

编写 JavaScript

JavaScript 在网络上越来越受欢迎,多年来这门语言已经改进,能够执行各种任务。这意味着对于更常见的任务,你可能根本不需要使用 JavaScript 库,只需编写纯 JavaScript 即可。

以下是编写 JavaScript 时需要考虑的一些事项:

  1. 尽量避免使用全局变量。

全局变量在整个代码中都是可用的,无论作用域如何。这意味着你可以从代码的任何位置访问和修改这些变量,无论是在函数内部还是外部。

// 避免这样做
var myGlobal = 'Hello';

function myFunction() {
    console.log(myGlobal);
}

为了避免使用全局变量,你可以使用多种替代方法,但最直接的方法是使用立即调用函数表达式(IIFE)。这允许你在局部作用域中定义变量,防止它们污染全局命名空间。

(function() {
    var myLocal = 'Hello';
    console.log(myLocal);
})();
  1. 保持你的 JavaScript 不引人注目

确保你的 JavaScript 不会干扰页面内容或产生不必要的错误。这意味着你的 JavaScript 应该与 HTML 分离,并且不应依赖于 HTML 中的特定元素或类。

例如,如果你需要为按钮添加点击事件,你应该使用 addEventListener() 方法来添加事件监听器,而不是在 HTML 中使用 onclick 属性。此外,在添加事件监听器之前,你应该检查该元素是否存在于页面上。

// 好的做法
var button = document.getElementById('myButton');
if (button) {
    button.addEventListener('click', function() {
        console.log('Button clicked');
    });
}
  1. 使用编码标准。

使用编码标准有助于确保你的代码一致且易于阅读。WordPress 有一个 JavaScript 编码标准,你可以使用它来确保你的代码与 WordPress 代码库的其他部分保持一致。

  1. 验证并检查你的代码

使用 linter 检查你的代码是否存在错误和潜在问题。这有助于及早发现错误,并确保你的代码一致且易于阅读。

ESLint 是一个流行的 JavaScript linter,可用于检查你的代码是否存在错误和潜在问题。你可以通过 @wordpress/scripts 包配置你的主题,使用 ESLint 检查你的 JavaScript 代码。

  1. 确保你的主题在没有 JavaScript 的情况下也能工作

首先确保你的网站主题在没有 JavaScript 的情况下也能工作——然后添加 JavaScript 以提供额外的功能。这是一种渐进增强的形式,这种策略强调网页内容优先,允许每个人访问网页的基本内容和功能。

  1. 资源加载

对非立即需要的资源使用懒加载。为此,请识别对内容不关键的资源,并仅在需要时加载它们。

jQuery

jQuery 是一个 JavaScript 库,在 Web 开发的早期阶段使用率有所增加。然而,随着 JavaScript 的改进,对于许多常见任务,通常不再需要使用 jQuery。

如果不需要,就不要使用 jQuery——你可能不需要 jQuery 是一个很棒的网站,它向你展示了如何使用纯 JavaScript 完成许多常见任务。

例如,如果你需要按 ID 选择一个元素,你可以在纯 JavaScript 中使用 document.getElementById() 方法。

// 使用纯 JavaScript 选择元素
var element = document.getElementById('myElement');

另一个很好的例子是,如果你需要发起 AJAX 请求,可以使用纯 JavaScript 中的 fetch() 方法,或者更好的选择是使用 WordPress 的 apiFetch 包。

// jQuery
$.ajax({
  url: 'https://example.com/wp-json/wp/v2/posts',
  success: function( data ) {
      console.log( data );
  }
});

// Plain JavaScript
fetch('https://example.com/wp-json/wp/v2/posts')
  .then(data => console.log(data));

// apiFetch
apiFetch( { path: '/wp/v2/posts' } ).then( posts => {
    console.log( posts );
} );

如果你必须在主题中使用 jQuery,你应该使用 WordPress 自带的 jQuery 版本。

在加载主题的脚本时,你应该将 jQuery 指定为依赖项,将其包含在依赖数组中。

add_action( 'wp_enqueue_scripts', 'my_theme_scripts' );
function my_theme_scripts() {
    wp_enqueue_script( 
        'my-script', 
        get_template_directory_uri() . '/js/my-script.js', 
        array( 'jquery' ), 
        '1.0', 
        true 
    );
}

这将确保 jQuery 在你的脚本加载之前被加载,并且使用 WordPress 自带的版本。

由于 WordPress 自带的 jQuery 以 noConflict() 模式加载,你还应该将代码包裹在一个立即调用函数表达式(IIFE)中。

( function( $ ) {
    // Your jQuery code goes here
} )( jQuery );

这样可以防止其他 JavaScript 库使用 $ 变量与你的 jQuery 代码发生冲突。

进一步阅读

关于这些以及开发主题时的其他 JavaScript 最佳实践,请务必阅读 WordPress 开发者手册高级主题部分中的 JavaScript 最佳实践手册页面。

UI 最佳实践

在设计 WordPress 主题时,考虑主题的用户界面非常重要。

在本课中,你将学习用户界面设计,以及设计主题用户界面的一些最佳实践。

什么是用户界面设计?

网站的用户界面(UI)是人与网站之间进行交互的空间。这通常被称为网站前端。

良好的用户界面设计的目标是实现有效的交互,也就是良好的用户体验,这样网站就能提供有助于用户决策过程的良好反馈。

糟糕的用户界面设计可能导致令人沮丧的用户体验,并可能流失网站访客,这对你的主题用户来说不是一个好结果。

在设计主题时,确保主题元素提供良好的用户体验非常重要。

让我们深入了解设计 WordPress 主题用户界面的一些最佳实践。

Logo 链接到首页

主题的 Logo 应链接到网站的首页。

如果你在经典主题中使用 custom_logo() 函数,或在区块主题中使用站点 Logo 区块,Logo 会自动链接到首页。

如果你使用任何类型的自定义头部,应确保 Logo 链接到首页。

以下是一个使用 home_url() 函数将 Logo 链接到首页的示例:

<a href="<?php echo esc_url( home_url( '/' ) ); ?>">
    <img src="<?php echo get_stylesheet_directory_uri(); ?>/logo.png" alt="<?php esc_attr_e( 'Home Page', 'textdmomain' );?>" />
</a>

描述性锚文本

在为主题中显示的内容创建链接时,请确保使用描述性锚文本。

锚文本是链接的可见文本。描述性锚文本应让读者了解点击链接时将执行的操作。

以下是一个糟糕的描述性锚文本示例:

The best way to learn WordPress is to start using it. To Download WordPress, <a href="https://wordpress.org/download/">click here</a>.

“点击这里”并不能很好地描述点击链接后会发生什么。

以下是编写锚文本的更好方式:

The best way to learn <a href="https://wordpress.yuannext.com/">WordPress</a> is to start using it. <a href="https://wordpress.org/download/">Download WordPress</a> to get started.

“下载 WordPress” 这个文本描述了点击链接后会发生什么。

为链接添加下划线样式

谈到链接,好的主题设计意味着保留链接的默认样式,即显示下划线。

有些设计师使用 CSS 禁用链接的下划线。然而,这样做会导致可用性和可访问性问题,因为从周围文本中识别超链接变得更加困难。

不同的链接颜色

在链接上使用颜色是一种视觉提示,表明文本是可点击的。

HTML 链接是少数具有状态的元素之一。两个主要状态是已访问和未访问。已访问表示用户已点击链接并访问了其指向的页面,未访问表示用户尚未点击该链接。

默认情况下,未访问的链接是蓝色,已访问的链接是紫色。

为这两种状态设置不同的颜色有助于用户识别他们之前访问过的页面。

此外,链接还有另外 3 种状态:

  • 悬停,当鼠标悬停在元素上时
  • 聚焦,类似于悬停,但适用于键盘用户
  • 激活,当用户正在点击链接时

由于悬停和聚焦具有相似的含义,有时设计师会给它们相同的样式。

然而,悬停和聚焦有不同的交互模式。

如果你选择微妙的悬停状态,你应该有一个更易识别的聚焦状态。

悬停在链接上是一种定向活动,用户知道他们在页面中的位置,只需要识别该位置是否可链接。

聚焦是一种非定向活动,用户需要发现他们的焦点在从上一个位置移动后到了哪里。

注意 Twenty Twenty-Four 主题中的菜单链接,当鼠标悬停时会添加下划线样式,但通过键盘切换焦点时则显示边框。

颜色对比度

颜色对比度指的是屏幕上两种颜色之间的差异。

例如,注意 Twenty Twenty-Four 主题中默认按钮样式具有深色背景和浅色文字。如果你将文字颜色改为深色,按钮将更难阅读。

WebAIM 是一个非营利性网络可访问性组织,它提供了一个颜色对比度计算器,帮助你确定网站设计中的对比度。

你可以输入背景色和前景色,查看对比度是否满足 Web 内容可访问性指南(WCAG)2.0 的要求。

WCAG 2.0 要求普通文本的对比度达到 4.5:1 才能符合 AA 级标准。

足够的字体大小

让你的文字易于阅读。

通过将文字设置得足够大,你可以提升网站的可用性,使内容更容易理解。14px 是最小的文字尺寸。

将标签与输入框关联

在使用接受输入的 HTML 元素时,请确保使用 for 属性将标签与输入框关联起来。

<label for="name">Name</label>
<input type="text" id="name" name="name" placeholder="John Smith" />

这样用户就可以点击标签,并将焦点聚焦到输入框上。

占位符文本

开发者经常在输入元素上使用占位符,向用户展示输入内容的示例。

<label for="name">Name</label>
<input type="text" id="name" name="name" placeholder="John Smith" />

当用户将光标放入输入框并开始输入时,占位符文本会消失。

然而,如果使用不当,占位符可能会成为用户体验和可访问性的噩梦。

因此,请确保正确使用占位符,或者干脆不用。

如果你决定使用占位符,请确保它提示的是输入框所需的数据类型,而不是替代输入框的标签。

描述性按钮

网络上充斥着含义不清的按钮。还记得你上次在登录表单上使用“确定”或“提交”按钮吗?

在按钮上选择更合适的词语可以让你的网站更易用。尝试使用 [动词] [名词] 的模式。例如“提交表单”,而不仅仅是“提交”。

这描述了用户点击按钮时会发生什么。

一个很好的例子是单篇文章模板中的评论表单,它使用了“发表评论”,而不仅仅是“提交”。

进一步阅读

如需了解主题开发过程中用户界面最佳实践的更多信息,请参考 WordPress 主题开发者手册高级主题部分中的 UI 最佳实践文档。

子主题

有时,您可能需要一种方法来修改或扩展现有主题,而无需更改主题的代码。

这就是子主题发挥作用的地方。

在本课中,您将了解什么是子主题、为什么应该使用它们,以及如何创建和使用子主题。

什么是子主题?

子主题是其父主题的扩展。

使用子主题允许您扩展或修改父主题的任何部分,而无需对父主题代码进行任何更改。

为了理解其工作原理,让我们看一个简化的例子。

为什么要使用子主题?

从 WordPress 主题仓库中安装并激活任意主题到您的本地 WordPress 环境中。

在这个例子中,默认主题 Twenty Twenty-Four 已被安装并激活。

假设您想要自定义主题的某些部分,例如页脚的布局和结构。

您更希望站点菜单位于左侧,而站点徽标、标题和标语位于右侧。

您还想更改页脚版权信息,使其引用您的公司名称并更新 URL。

实现此目的的一种方法是在站点编辑器中操作。

您可以找到并编辑页脚模板部分,并进行所需的更改。

将菜单移到左侧,站点徽标和标题移到右侧,并更新页脚版权信息。

但是,如果您想在不同的站点上重复使用这些相同的更改呢?您每次都必须手动在站点编辑器中进行这些更改。

当然,您也可以手动进行更改,方法是导航到页脚模板中使用的 Twenty Twenty-Four 页脚模式,并更改该模式的内容。

但如果主题有更新会发生什么?在主题更新期间,整个主题会被替换为更新版本,因此您对任何特定文件所做的任何更改都将丢失!

这就是子主题发挥作用的地方。

通过创建一个仅包含您所需特定更改的子主题,您可以激活该子主题,更改就会被应用。

如果将来父主题有任何更新(在本例中是 Twenty Twenty-Four),子主题中的修改仍然会被应用,并且更改将保持不变。

创建子主题

为了理解子主题的工作原理,创建一个您的第一个子主题是个好主意。

让我们使用上面的例子来创建您的第一个子主题。

wp-content/themes 目录中,创建一个名为 twentytwentyfourchild 的新空主题目录。

在该目录中,创建一个 style.css 文件。然后,将以下主题头部信息添加到该文件中

/**
 * Theme Name: Child theme of Twenty Twenty-Four
 * Template:   twentytwentyfour
 */

现在浏览到 WordPress 管理区域,并导航到主题页面。您应该会看到列出的新子主题。

现在激活该子主题。然后浏览到网站前端。

您会注意到网站看起来和之前完全一样。这是因为所有主题元素都继承自父主题。

子主题的工作原理

所有 WordPress 主题——除非它们特指是子主题——从技术上讲都是父主题。

子主题与父主题略有不同,因为它们在 style.css 文件中有一个特殊的主题头部字段,用于定义它们是哪个父主题的子主题。

这个头部字段是 Template 字段。该字段的值必须与父主题的文件夹名称(或别名)匹配,相对于 wp-content/themes 目录。

这有时也被称为主题的别名。

因此,在这个例子中,这个主题是 Twenty Twenty-Four 的子主题,因为它将 Template 字段定义为 twentytwentyfour

您现在可以做的就是选择要修改的父主题的特定部分。

例如,如果您只想修改页脚,您可以在子主题目录中创建一个新的 footer.html 文件,位置与父主题中的 footer.html 相对路径相同,然后对子主题的 footer.html 进行所需的更改。

生成子主题页脚的一种方法是在站点编辑器中对页脚模板进行所需的更改。

然后,切换到代码编辑器视图,复制代码,并将其粘贴到子主题的 footer.html 文件中。

激活子主题后,您对子主题中 footer.html 文件所做的更改将被应用,并且页脚将按您期望的方式显示。

值得注意的是,子主题不仅可以扩展父主题的模板,实际上几乎可以扩展父主题的每个部分。通过子主题,你可以扩展模板部分、样式、甚至自定义主题功能。

使用创建块主题功能

虽然可以手动创建子主题,但你也可以使用“创建块主题”插件,基于在站点编辑器中进行的修改来创建子主题。

为此,请激活 Twenty Twenty-Four 主题,并删除本课程前面创建的子主题。

然后,搜索、安装并激活“创建块主题”插件。

接下来,导航到站点编辑器,对页脚模板部分进行相同的修改。

对修改满意后,点击站点编辑器右上角的“创建块主题”图标,打开创建块主题选项。

选择“创建主题”,然后选择“创建子主题”。

为子主题命名,并可选地添加相关主题元数据。

然后点击“创建子主题”。

子主题将被创建,编辑器会重新加载。

如果导航到 WordPress 管理区域的主题页面,你会看到新的子主题已列出,并已安装和激活。

如果浏览前端页面,你会看到对页脚模板部分所做的修改已生效。

最后,如果你查看代码编辑器,会发现子主题文件已创建。

延伸阅读

有关子主题的更多信息,请参阅主题开发者手册中高级主题下的“子主题”页面。你还可以在主题开发者手册核心概念章节的“子主题头部字段”部分,了解更多关于子主题特定头部字段的内容。