WordPress编码标准简述(PHP, HTML, CSS和JavaScript)

WordPress编码标准简述

WordPress 开发中的编码标准对于一个强大和可持续的代码库至关重要。它们是开发人员在编写代码时遵守的准则和惯例,有助于加强协作、简化维护并确保整体可靠性。

此外,编码标准还能防止常见的陷阱和错误,提高代码质量。在 WordPress 开发中,多个贡献者通常会在一个项目上进行协作,因此编码标准是有效团队协作的基础。它们促进了沟通,缓解了潜在冲突,并有助于提高开发流程的效率。

遵守编码标准可促进各项目之间的一致性,使您更容易在不同的代码库之间无缝切换。这种一致性可扩展到代码的可读性和可维护性,并促进团队成员之间的共同理解。

WordPress 官方编码标准涵盖了五个关键领域,以确保开发过程的一致性和高效性:

  • 确保服务器端代码一致性的 PHP
  • 促进结构化和语义标记的 HTML
  • JavaScript 用于实现有效的客户端功能
  • CSS 用于保持风格一致
  • 可访问性,确保最终产品对有不同需求的个人具有包容性和用户友好性

在本文中,我们将探讨 WordPress 这些编码标准,以帮助您开始构建符合标准的网站,并为 WordPress 开发社区做出贡献。

WordPress 开发中的 PHP 标准

WordPress 专用的 PHP 编码标准可确保 WordPress 代码的一致性和可读性。它们是 WordPress Core 的强制性标准,也是主题和插件的强烈推荐标准。这些标准涵盖各个方面,包括命名规则、缩进和代码结构,以提高可读性和便于协作。

WordPress PHP 标准分为以下几类:

常规 – 这些标准包括在 HTML 代码块中嵌入多行 PHP 代码片段时,将开头和结尾的 PHP 标记放在一行中,使用单引号和双引号时避免使用速记 PHP 标记,以及 includerequire 语句的编写指南:

// Opening and closing PHP tags within HTML:
// Put open/close tags on their own lines.
## DO
function foo() {
?>
<div>
<?php
echo esc_html (
bar (
$param1,
$param2
)
);
?>
</div>
<?php
}
## DON'T
if ( $x === $y ) { ?>
<div>
<!-- HTML content -->
<?php }
// Avoid shorthand PHP tags
## DO
<?php ... ?>
<?php esc_html( $x ); ?>
## DON'T
<? ... ?>
<? esc_html( $x ); ?>
// Writing include/require statements:
// Avoid include_once as it continues execution 
// even if the file is not found. 
// Do not use brackets around the file path.
## DO
require_once ABSPATH . 'file-name.php'
## DON'T
require_once  __DIR__ . '/file-name.php'
include_once  ( ABSPATH . 'file-name.php' );

命名 – 命名标准包括命名约定和动态钩子的插值命名:

## DO
// Use lowercase letters for function and variable names.
function my_function( $some_variable ) {}
// Use uppercase letters for constant names.
define('MAX_AGE', 60);
## DON'T
// Use camelCase.
function myFunction( $someVariable ) {}

空白字符 – 空白字符标准规定了空格使用、缩进和删除尾部空格的准则。(如果你想在开发人员中掀起一场热烈的讨论,只需问问他们在缩进代码时更喜欢制表符还是空格即可。无论您的偏好如何,WordPress 开发人员的官方建议都是使用制表符,除了 PHP 之外,JavaScript 和 CSS 也是如此。因此,在合作项目中,请记住这一点)。

## DO
// Put spaces after commas.
$colors = ['red', 'green', 'blue']
// Put spaces on both sides of the opening and 
// closing brackets of control structures. 
foreach( $foo as $bar ) { ...
// Defining a function:
function my_function() { ...
// Logical comparisons:
if ( ! $foo ) { ...
// Accessing array items:
$a = $foo['bar']
$a = $foo[ $bar ]
## DON'T
$colors = ['red','green','blue']
foreach($foo as $bar){ ...
function my_function(){ ...
if (!$foo) { ...
$a = $foo[ ‘bar’ ]
$a = $foo[$bar]

格式化 – WordPress PHP 开发的格式化标准包括括号样式、数组声明、多行函数调用指南、类型声明、神奇常量和展开运算符:

// DO
// Use the following brace style.
if ( condition ) {
action();
} elseif ( condition2 ) {
action2();
} else {
default_action();
}
// Declare arrays using the long syntax.
$numbers_long = array(1, 2, 3, 4, 5);
/* In multi-line function calls, each parameter should only take up one line.
Multi-line parameter values should be assigned a variable, and the variable passed to the function call. */
$data = array(
'user_name' => 'John Doe',
'email'     => 'john@example.com',
'address'   => '123 Main Street, Cityville',
);
$greeting_message = sprintf(
/* translation function. %s maps to User's name */
__( 'Hello, %s!', 'yourtextdomain' ),
$data['user_name']
);
$result = some_function (
$data,
$greeting_message,
/* translation function %s maps to city name*/
sprintf( __( 'User resides in %s.' ), 'Cityville' )
);
// Magic constants should be uppercase.
// The ::class constant should be lowercase with no spaces around the scope resolution operator (::).
add_action( my_action, array( __CLASS__, my_method ) );
add_action( my_action, array( My_Class::class, my_method ) );
/* Add a space or new line with appropriate
indentation before a spread operator.
There should be:
* No space between the spread operator and the 
variable/function it applies to.
* No space between the spread and the reference 
operators when combined.
*/
//DO
function some_func( &...$arg1 ) {
bar( ...$arg2 );
bar(
array( ...$arg3 ),
...array_values( $array_vals )
);
}
//DONT
function some_func( &   ...  $arg1 ) {
bar(...
$arg2 );
bar(
array( ...$arg3 ),...array_values( $array_vals )
);
}

声明语句、命名空间和导入语句 – 这些编码标准包括命名空间声明和 use 语句:

// Each namespace declaration should contain 
// capitalized words separated by underscores.
namespace My_CompanyProjectKinsta_ProjectUtilities;
// Import use statements can use aliases 
// to prevent name collisions.
use Project_NameFeatureClass_C as Aliased_Class_C;

面向对象编程(OOP)– 这些标准包括每个文件只使用一个对象结构,提供使用特质 use 语句的指导,确保始终声明可见性,概述可见性和修饰符的顺序,以及概述对象实例化的规则:

// Trait use statements should be at the top of a class.
// Trait use should have at least one line before and after
// the first and last statements.
// Always declare visibility.
class Foo {
use Bar_Trait;
public $baz = true;
...
}
// Always use parentheses when instantiating a new 
// object instance.
// Don't add space between a class name and the opening bracket.
$foo = new Foo();

控制结构 – 控制结构包括使用 elseif 、not else if 以及 Yoda 条件准则: 在逻辑比较中将变量与常量、字面量或函数调用混合时,应将变量放在右侧,以防止意外赋值,如下所示:

// A "legal" comparison:
if ( true === $result ) {
// Do something with $result
}
// But a typo like this could get past you:
if ( $result = true ) {
// We will always end up here
}

运算符 – 这些标准包括三元运算符、错误控制运算符 ( @ ) 和增/减运算符:

// Always have ternary operators 
// test if the statement is true, not false.
$programming_language = ( 'PHP' === $language ) ? 'cool' : 'meh'; 
// Favor pre-increment/decrement over post-increment/decrement
// for stand-alone statements.
// DO
--$a;
// DON'T
$a--;

数据库 – 数据库编码标准提供了执行数据库查询和格式化 SQL 语句的说明。

其他建议 – 其他建议包括为函数参数使用不言自明的标志值、巧妙代码、闭包(匿名函数)、正则表达式、shell 命令以及避免使用 extract() 的说明等标准。

WordPress PHP 代码的内联文档标准

除上述指南外,WordPress还为PHP代码提供了内联文档标准。WordPress 使用定制的文档模式,该模式从 PHPDoc 语法中汲取灵感,PHPDoc 是由 phpDocumentor 维护的一个不断发展的为 PHP 代码提供文档的标准。这些标准简化了外部文档的生成,并通过促进对代码库结构的共同理解,为更广泛的 WordPress 开发者社区做出了贡献。

WordPress 中的 PHP 文档大多以格式化块或内联注释的形式出现。在 WordPress 文件中记录以下内容:

  • 函数和类方法
  • 类成员,包括属性和常量
  • 要求和包含
  • 钩子(动作和过滤器)
  • 内联注释
  • 文件头
  • 常量

WordPress 中的 HTML 和 CSS 标准

WordPress 主题和插件遵守严格的 HTML 编码标准,以确保一致性、可访问性和可维护性。指南强调语义标记,鼓励开发人员将 HTML 元素用于其预期目的。这种做法可以增强内容结构,提高搜索引擎优化 (SEO) 性能。此外,我们还鼓励您验证 HTML,以保证跨浏览器的兼容性。

HTML 代码标准为以下方面提供了指导:

验证 – 您应根据 W3C 验证器验证所有 HTML 页面,以确保您的标记格式良好。

自闭合元素 – 自闭合元素中的正斜杠前应留一个空格。

<!-- DO -->
<br />
<!-- DON'T –>
<br/>

属性和标记 – 所有属性和标记都应小写。此外,属性值只有在机器解释时才应小写。如果是为人类编写,则应使用正确的标题大写。

<!-- DO -->
<a href="http://example.com/" title="Link Description">Descriptive text</a>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!-- DON'T -->
<a HREF="http://example.com/" TITLE="link description">Click here</a>

引号 – 所有属性都必须有一个值,并且必须使用单引号或双引号。不使用引号可能会导致安全漏洞。

<!-- DO -->
<input type="text" name="email" disabled="disabled" />
<input type='text' name='email' disabled='disabled' />
<!-- DON'T -->
<input type=text name=email disabled>

缩进 – HTML 缩进应始终反映逻辑结构。混合使用 PHP 和 HTML 时,PHP 代码块的缩进应与周围的 HTML 代码一致。

<!-- DO -->
<?php if ( ! have_articles() ) : ?>
<div class="article">
<h1 class="article-title">Not Found</h1>
<div class="article-content">
<p>No results were found.</p>
<?php get_error_msg(); ?>
</div>
</div>
<?php endif; ?>
<!-- DON'T -->
<?php if ( ! have_articles() ) : ?>
<div class="article">
<h1 class="article-title">Not Found</h1>
<div class="article-content">
<p>No results were found.</p>
<?php get_error_msg(); ?>
</div>
</div>
<?php endif; ?>

除了这些 HTML 标准外,WordPress 的 CSS 标准还可以帮助您创建简洁、模块化和响应式的样式表。它们为从核心代码到主题再到插件的协作和审查设定了基准。这些准则有助于确保代码的可读性、一致性和意义。

WordPress CSS 代码标准强调使用特定的类来定位元素,从而促进结构的一致性和条理性。具体来说,这些标准包括:

结构

/* DO 
Each selector should be on its own line ending with 
a comma or curly brace. The closing brace should occupy 
the same indentation level as the opening selector. */
#selector-1,
#selector-2 {
property: value;
}

选择器

/* DO 
Use lowercase and separate words using hyphens.
Use double quotes around values for attribute selectors.
Avoid overqualified selectors, such as div.container. */
#contact-form {
property: value;
}
input[type="text"] {
property: value;
}

属性(排序和浏览器引擎前缀)

/* Append properties with a colon and a space. 
Properties should be lowercase — except font names 
snd vendor-specific properties — and use shorthand. */
#selector {
property: value;
}

/* Add a space before the value and a semicolon after.
Use double quotes.
0 values should not have units.
Use a leading zero for decimal values.
Delineate multiple comma-separated values for 
a single property with a space or new line. */
#contact-form {
font-family: "Helvetica Neue", sans-serif;
opacity: 0.9;
box-shadow:
0 0 0 1px #5b9dd9,
0 0 2px 1px rgba(20, 120, 170, 0.9);
}

媒体查询

/* Rules set for media queries should be indented one level in.
Keep media queries grouped by media at the bottom of the stylesheet. */
@media all and (max-width: 1024px) and (min-width: 780px) {
$selector {
property: value;
}        
}

注释

自 2003 年诞生以来,WordPress的HTML和CSS编码标准一直与万维网联盟(W3C)的 HTML 和 CSS 指南保持一致。W3C 标准强调整合响应式设计原则和语义标记,从发布 HTML5 和 CSS3 开始,就对主题和插件的开发产生了影响。

采用 W3C 准则可确保 WordPress 网站遵守全球网络标准,增强互操作性和用户体验,并反映出在更广泛的网络生态系统中保持最新、安全和兼容的承诺。

WordPress 对这些准则的遵守强调了根据 W3C HTML 标记验证器进行 HTML 质量验证。

这些 HTML 和 CSS 标准可确保 WordPress 网站在跨平台时具有视觉吸引力、用户友好和高效的表现形式。它们支持无缝的用户体验,并促进了 WordPress 生态系统不同方面的开发人员之间的协作。

WordPress 中的 JavaScript 编码标准

WordPress 的编码标准还为主题和插件的 JavaScript 代码的格式和样式提供了指导。此外,这些标准还有助于促进代码与核心 PHP、HTML 和 CSS 代码的一致性。

WordPress JavaScript 编码标准建立在 jQuery JavaScript 样式指南的基础上,该指南于 2012 年推出,是一套全面的编码规范,可增强代码的一致性和可读性。该指南最初专门针对j Query 项目,但它的成功促使 jQuery 框架以外的项目也广泛采用该指南。

虽然jQuery指南为WordPress标准提供了参考,但在WordPress开发中也有一些明显的不同之处:

  • WordPress对字符串声明使用单引号。
  • 在开关块中,大小写语句是缩进的。
  • 函数内容采用一致的缩进,包括全文件闭包。
  • 为了与 PHP WordPress 标准保持一致,一些空白规则也有所不同,比如使用制表符或缩进。
  • jQuery 的 100 个字符硬行限制虽然值得鼓励,但并未严格执行。

WordPress JavaScript 编码标准涵盖以下方面:

  • 代码重构
  • 代码间距,包括对象声明、数组和函数调用:
// Object declarations
// DO
var obj = {
name: 'John',
age: 27,
height: 179
}
// DON'T
var obj = {
name: 'John',  age: 27,
height: 179
}
// Arrays and function calls
// Include extra spaces around elements and arguments.
array = [ 1, 2 ];
foo( arg1, arg2 );
  • 分号的使用:
// Always use semicolons
array = [ 1, 2 ];
  • 缩进和换行,包括块和大括号、多行语句和链式方法调用:
// Use tabs for indentation
( function ( $ ) {
// Expressions indented
function doSomething() {
// Expressions indented
}
} )( jQuery );
// if, else, for, while, and try blocks should span multiple lines
if ( condition ) {
// Expressions
} else if ( ( condition && condition ) || condition ) {
// Expressions
} else {
// Expressions
}
// Line breaks must occur after an operator if the statement
// is too long to fit on one line.
var html = '<p>The sum of ' + a + ' and ' + b + ' plus ' + c +
' is ' + ( a + b + c ) + '</p>';
/* If a chain of method calls is too long to fit on a single line, 
use one call per line. The first call should be on a separate line from
the object on which the methods are called. */
elements
.addClass( 'foo' )
.children()
.html( 'hello' )
.end()
.appendTo( 'body' );
  • 赋值和全局,包括用 constlet 声明变量、用 var 声明变量、全局和常用库。
  • 命名约定,如缩写和首字母缩略词、类定义和常量:
// Abbreviations must be written in camelCase.
// All letters of acronyms should be capitalized.
const userId = 1;
const currentDOMDocument = window.document;
// Class definition must use UpperCamelCaseConvention.
class Human {
...
}
// Constants should use SCREAMING_SNAKE_CASE convention.
const SESSION_DURATION = 60
  • 相等(==):
// Use strict equality/inequality checks (=== and !==)
// instead of abstract checks (== and !=).
if ( name === "John" ) {
...
}
if ( result !== false ) {
...
}
// Also, with negation:
if !( result === false ) {
...
}
  • 字符串:
// Use single-quotes for string literals.
var myString = 'Hello world!'
  • 切换语句:
// Use a break for each case other than default.
// Indent case statements one tab within the switch.
switch ( event.keyCode ) {
// ENTER and SPACE both trigger x()
case $.ui.keyCode.ENTER:
case $.ui.keyCode.SPACE:
x();
break;
case $.ui.keyCode.ESCAPE:
y();
break;
default:
z();
}

此外,WordPress 编码标准还概述了编写 JavaScript 代码的几种最佳实践

与 PHP 一样,WordPress 也为 JavaScript 代码提供了内联文档标准。这些内联标准既可以是格式化的文档块,也可以是内联注释,它们遵循 JSDoc 3 内联 JavaScript 文档标准。内联标准涵盖函数、类方法、对象、闭包、对象属性、事件和文件头。

如何确保 WordPress 开发的可访问性

可访问性标准对于确保数字内容(包括在 WordPress 等平台上创建的网站)适合各种能力的人使用至关重要。采用 W3C 的可访问性标准可确保使用 WordPress 创建的网站具有包容性并可供残障人士访问。

W3C 可访问性指南,特别是《Web Content Accessibility Guidelines》(WCAG),为提高网页内容的可访问性提供了一个全面的框架。认识到包容性的重要性,WordPress 已将这些指南纳入其核心功能。

例如,WCAG 根据《欧洲无障碍法案》来衡量合规性,该法案将从 2025 年 6 月起适用于欧盟的许多组织。

要满足不同的需求,就需要实施一些功能和设计原则,如屏幕阅读器兼容性、键盘导航和非文本内容的文本替代。

确保 WordPress 的可访问性不仅仅是一个合规性问题。这是为每个人提供平等获取信息和服务机会的承诺。通过遵守 W3C 准则,WordPress 网站变得更易于访问和用户友好,从而营造一个更具包容性的网络环境。

在主题和插件中实施可访问性功能的一些实际例子包括以下内容:

  • 使用语义 HTML – 确保正确使用语义 HTML 标记。例如,在导航菜单中使用 <nav>,在网站页头中使用 <header>,在主要内容中使用 <main>。这些标签有助于屏幕阅读器和其他辅助技术理解页面结构。
  • 为图像、视频和音频内容添加文本替代 – 为图像提供描述性的 alt 文本,以便向无法看到图像的用户传达其含义。在 WordPress 中,添加图片时在媒体库中添加描述性的 alt 属性。为视频添加字幕和文字说明,并为音频内容提供文本替代,以确保耳聋或听力障碍的用户能够获取信息。
  • 在构建时考虑响应式设计 – 确保您的主题或插件具有响应性,能很好地适应不同的屏幕尺寸。这种方法有利于使用各种设备的用户,并确保跨平台的一致体验。
  • 设计无障碍表单 – 为表单字段提供清晰的标签和说明。使用适当的输入类型,如电子邮件或电话,以便在移动设备和辅助技术上触发正确的键盘。
  • 使用键盘导航 – 确保所有互动元素都可使用键盘导航。用户应能在链接、按钮和表单字段中使用选项卡。测试并增强键盘的无障碍性,避免只依赖鼠标进行交互。

遵守 WordPress 编码标准的工具

有许多代码嗅探工具可以帮助您遵守上述平台编码标准。让我们回顾一下您可以用来检查 WordPress 编码标准的几种验证工具。

PHP_CodeSniffer

PHP_CodeSniffer 会扫描您的 PHP 代码库,以识别与既定规范的偏差。它能精确定位违规编码和风格差异,使代码更简洁、更高效。这将提高 WordPress 网站的性能,并确保与未来的更新和插件无缝兼容。

W3 Org 的 CSS 验证服务

W3 Org 的 CSS 验证服务可扫描 CSS 样式表,识别并纠正可能妨碍网站最佳性能的潜在错误。它在保持一致性和遵守 W3C 标准方面发挥着至关重要的作用,保证了用户在各种设备上的流畅体验。因此,网站的加载时间得到改善,并符合 WordPress 规定的严格 CSS 编码标准。

JSHint

JSHint 可分析 JavaScript 代码,识别潜在错误、风格不一致之处以及是否符合最佳实践。它能帮助您编写更简洁、更高效的代码,最终优化网站性能。它非常注重 WordPress 的编码标准,确保 JavaScript 代码与 WordPress 的整体架构无缝集成,帮助您维护一个连贯、标准化的编码环境。

WebAIM Contrast Checker

WebAIM 的对比度检查器可帮助您评估和改进 WordPress 网站的可访问性。该工具简化了实现最佳色彩对比以提高可访问性的复杂过程。利用对比度检查器的实时反馈,您可以找出需要改进的地方,提高所有访问者的文本可读性和可读性。

小结

编码标准是高效协同软件开发的支柱。它们能确保代码的一致性和可读性,简化编码过程,提高可维护性,并促进团队合作。对于 WordPress 开发人员来说,遵守编码标准对于创建强大、可扩展的网站至关重要。

评论留言