在WordPress项目中构建质量:一个实际示例

学习软件新技能的最好的事情之一是,您通常会经历以下过程:使某项工作正常进行,了解您所犯的一些错误,完善代码,然后重复该过程。

最终,这是关于提高工作质量的,以使最终结果比在第一个迭代中将其保留时要好得多。

而且,实际上,在编写软件时,我们经常听到并且经常谈论的一件事就是质量 。 更具体地讲,我们谈论打造精品进入我们的软件。

但是我的猜测是,如果您问十个开发人员对他们意味着什么,那么您会得到十个不同的答案。

“质量”一词提供了三个定义

  1. 东西好坏
  2. 某人或某物具有的特征或特征:可以被视为某人或某物的一部分的事物,
  3. 高价值或卓越水平。

如果您想一想这与使用WordPress构建的产品有何关系,会想到什么?

  • 是组成项目的文件的组织吗?
  • 您的代码符合WordPress编码标准的程度如何?
  • 这是否与您遵循所选范例的最佳实践的程度有关?
  • 也许是以上所有; 也许没有列出。

无论如何,“质量”对不同的人可能意味着不同的意思。 但是我相信对于WordPress开发,有些事情不是主观的。

质量和WordPress开发

在进一步介绍之前,我想指出,引用别人时,除非它是众所周知的来源,否则我想保持来源匿名。

原因是我不希望那些阅读过此类教程的人陷入困境,并试图对该人的言论提出质疑。 这是重点,你知道吗?

确实发生了。 我说的是经验。

话虽如此,最近有人联系我,介绍了我在构建主题时使用WordPress挂钩提供的一些代码。 简而言之,他们说:

只有经验丰富的WordPress开发人员才会说,多行代码总比少行好。 代码越少越好。

对于业余爱好者和那些刚刚学会发展的绳索的人,我可以看到这是怎么回事。 对于那些在现场工作了一段时间的人来说,您可能会认识到这个问题。

我并不是说更多的代码总是更好的代码。 不是。 相反,我建议有时候整个功能要比单行代码更好。

我们如何将其构建到我们自己的工作中? 我们如何将这些信息传达给那些经验不足的程序员? 让我们看一个具体的例子,看看是否有值得借鉴的地方。

示例:如何过滤产量质量

在WordPress 4.4中,对标题标签的支持已更改,因此您只需在functions.php文件中包含以下行,即可添加对标题标签的支持:

<?php add_theme_support( 'title-tag' ); ?>

如果您不想使用该功能,则需要将title元素硬编码到主题的标题模板中。

当然,有些插件和主题尚未更新(在本教程撰写时)。 为此,在模板文件中看到类似以下代码行的代码仍然相对普遍:

<title><?php wp_title( '' ); ?></title>

但是,为什么有人会弄乱标题呢? 想想SEO插件。 他们通常会更改title元素,以使其对搜索引擎更加友好。

让我们看一个真实的示例:假设您正在处理主题,并且其title元素包括对wp_title的调用。 此外,您要确保wp_title是可过滤的,以便其他代码(如上述插件)可以对其进行更新。

看起来很简单,对吧? 但是,假设您要通过添加分隔符并更新其位置来修饰一下它。 在这种情况下,您可以执行以下操作:

<title><?php wp_title( ‘|’, true, ‘right’ ); ?></title>

或者,也许您想更进一步,介绍博客的名称及其描述。 或者,也许您想要设置标题,以使其在首页上与众不同。

然后,您可以执行以下操作:

<title><?php bloginfo('name'); ?> | <?php is_home() ? bloginfo('description') : wp_title( '' ); ?></title>

孤立地看-除了任何插件或其他工作以外-看起来还不错。 业余爱好者可以使用单行代码来实现其最终目标。

但是,当有人分发主题时会发生什么? 此外,当有人想使用插件来更改title元素时会发生什么?

它不会工作。

这只是为什么更少的代码并不总是更好的代码以及为什么更少的代码可能质量较低的原因之一。

更多代码,更高质量

为了确保wp_title()的使用尽可能灵活,我们需要定义一个自定义函数并使用WordPress提供的wp_title过滤器对其进行过滤:

<?php

add_filter( 'wp_title', 'acme_wp_title', 10, 2 );
/**
 * Provides a standard format for the page title depending on the view. This is
 * filtered so that plugins can provide alternative title formats.
 *
 * @param       string    $title    Default title text for current view.
 * @param       string    $sep      Optional separator.
 * @return      string              The filtered title.
 * @package     acme
 * @version     1.0.0
 * @since       1.0.0
 */
function acme_wp_title( $title, $sep ) {
    global $paged, $page;

	if ( is_feed() ) {
		return $title;
	}

	// Add the site name.
	$title .= get_bloginfo( 'name' );

	// Add the site description for the home/front page.
	$site_description = get_bloginfo( 'description', 'display' );
	if ( $site_description && ( is_home() || is_front_page() ) ) {
		$title = "$title $sep $site_description";
	}

	// Add a page number if necessary.
	if ( $paged >= 2 || $page >= 2 ) {
		$title = sprintf( __( 'Page %s', 'acme' ), max( $paged, $page ) ) . " $sep $title";
	}

	return $title;

}

上面的代码显然比上一个示例中的单行代码更多,但是它也更加灵活。

首先,代码检查一下页面是否在RSS feed中呈现。 如果是这样,它将仅返回指定的标题。 否则,它将标题名称附加到指定的$title字符串之后。 查看主页或首页时,代码会将描述放在分隔符之后。

最后,如果用户正在浏览该站点,则代码会将页码添加到分隔符和标题之前。

这提供了用于在主题内呈现title元素的基本功能。 这不是针对所有主题的默认方法,但可以说是更好的方法。

因此,您还可以自定义此功能以适合您认为最适合自己工作的任何功能。

这是质量吗?

本教程的主要内容不是如何为标题设置过滤器,或者如何设置过滤器,也不是如何处理标题。 此外,如本文前面所述,不建议使用wp_title

我们最终获得了标题的定制版本。 我们还使第三方开发人员能够覆盖我们自己的代码。

尽管这是更多的代码,但这是更高质量的解决方案。

结论

但是请记住:并非总是如此。 有时更多的代码可以降低质量,它可以增加复杂性。 但这不是本文的重点。 也许最好在另一个教程中讨论它。

相反,本教程的目的是显示更少的代码可能导致质量降低,以及更多的代码如何提高质量。 但这不是硬性规定。 也不应该如此。

相反,其目的是通过定义质量的方式引入思考的思维方式。 有时候,更少的代码就是质量代码。 有时,更多的代码就是质量代码。

在处理项目时,不要仅仅为了减少代码而寻找合并代码的方法。 寻找编写代码的方式,使其优雅,可扩展,可读和可维护,并且最适合目的。

以上所有这些都有助于提高质量。

如果您正在寻找可用于检查代码质量,在您的工作中或在客户项目中使用的其他WordPress项目的示例,则在市场上可能还会发现一些有趣东西。

如果您对我为Envato编写或制作的其他东西感兴趣,可以在我的个人资料页面上查看我的工作,也可以在@tommcfarlin的 博客和/或Twitter上关注我,我在其中谈论软件开发。 WordPress的上下文。

请不要在下面的提要中留下任何问题或评论,我将致力于回答每个问题或评论。

翻译自: https://code.tutsplus.com/tutorials/building-quality-into-wordpress-projects-a-practical-example--cms-25554

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值