WordPress主题搜索结果只有一篇文章时自动跳转到文章详情页
当我们在开发wordpress主题的时候,很多都需要做搜索功能,一般搜索都是模糊搜索,当你搜索某个关键词的时候,会匹配出多条记录,但是当读者通过WordPres…
目录
本文介绍了WordPress开发中最重要的话题之一:WordPress钩子,包括动作钩子和过滤钩子。钩子不仅是WordPress插件工作方式的核心,而且是WordPress生态系统中几乎所有代码的核心:大多数WordPress主题都大量使用钩子,“WordPress核心”本身也是如此。WordPress钩子是WordPress开发中一个绝对必须知道的话题。
理解钩子并不是那么容易,部分原因是术语本身很难形象化和相互区分。
但回报是巨大的:作为一个开发人员,我们发现使用过滤器和操作可能是我们与WordPress交互的最常见的方式。随着时间的推移,它也成为我们在WordPress中最喜欢做的事情之一。
特别是在这种情况下,理解术语“钩子”、“动作”和“过滤器”是成功的一半。例如,WordPress的法典中,这三个术语的使用都非常随意,而且前后不一致。
我们在本章中使用的定义是在WordPress中最常见的定义,它们最有助于理解实际发生的事情。因此,请坚持我们在这里提出的理解,当其他人以多种方式使用这些术语时,不要气馁。
钩子是WordPress代码中可以添加函数的地方。当您创建一个钩子时,您为自己和其他开发人员提供了在该位置添加附加功能的机会。
钩子函数是定制的PHP函数,我们可以在钩子指定的位置“钩住”WordPress。
钩住的函数有两种类型:动作和过滤器。筛选器修改现有输出,而操作可以执行任何类型的自定义功能。
钩子有两种类型:动作钩子和过滤钩子,它们基于接受哪种类型的钩子函数。
为了解释钩子,我们将回到我们的中心类比WordPress作为一个工厂。
记住,WordPress需要外部承包商来做一些工作。我们的承包商在WordPress工厂没有固定的位置,他们被困在外面,直到他们被工厂自己邀请进来。
就我们而言,这些外部承包商来自两个地方:
外部承包商本身就是插件和函数.php改变了WordPress工厂的运作。
钩子动作钩子和过滤钩子是WordPress调用这些外部承包商的方式。换句话说,WordPress钩子以指定的方式在指定的位置拉入外部代码。
我们可以把WordPress的“钩子”想象成真正的巨型工厂钩子,承包商就骑在上面,像这样:
每个钩子都有一个特定的名称,比如wp\u head,对应于WordPress工厂的一部分过程(在wp\u head的情况下,是构建页面的HTML<head>部分的过程)。
这些钩子延伸到大厅,这样承包商就可以把它们搭进去,而且它们是按照特定的顺序来做的。在<head>完成之前,wp\u head钩子向右移动到大厅和后面,在<body>完成之前,wp\u footer钩子向右移动到大厅和后面,依此类推。因此,承包商总是骑着他的钩子直接到活跃的,被工厂的一部分工作。
当一个承包商想成为一个特定过程的一部分时,他会等待那个钩子出现在入口处,然后直接骑着那个钩子进入工厂的适当部分。
如果承包商没有骑上合适的钩子,他就无法到达他在工厂里要去的地方。钩子是“邀请”外部代码(来自函数.php,插件等)进入WordPress PHP处理的定义区域。
我们对WordPress的钩子、操作和过滤器的理解已经走了一半。另一部分更具体一些:大厅有两种钩子,动作钩子和过滤钩子。
回顾一下WordPress钩子图,让我们了解操作和过滤器钩子。
动作钩子往往会在里程碑处摇摆不定:例如,wp\u head动作钩子的“页面<head>部分的构建几乎完成了”,wp\u footer动作钩子的“页面<body>部分的构建几乎完成了”。
当承包商把行动挂钩带进工厂时,他们倾向于做任何他们想做的事情:在页面上添加一堆东西,或者做完全其他的事情,比如记录错误,甚至发送电子邮件。
过滤器挂钩的工作方式有点不同。搭上行动钩子的承包商可以为所欲为,对任何人都不负责。但是使用过滤器钩子的承包商实际上将自己插入到了正常工人的流程中:他们得到了一些要处理的东西,比如一个文本块,并且必须通过一个PHP return语句将相同的文本块(可能稍微修改)返回给普通工人。
因此,使用过滤钩的承包商通常不只是想做什么就做什么;他处理的是他在工厂所在部门所做的工作。该部门经理可能会说:“这一部门在职位标题上起作用。”。“你想怎么做就怎么做,但如果你修改后不把帖子标题还给我,整个过程就无法正常进行。”
希望到目前为止我们说得有道理;现在我们要更专业一些,这样你就可以开始写这些东西了。
连接到action钩子和filter钩子的都是定制的PHP函数,我们或其他任何人都可以编写。
因为这些函数是通过将自己附加到WordPress钩子而进入WordPress的,也就是说,从它们的正式术语之外“钩住”就是钩住函数。
让我们看看每一个。
我们的第一个承包商是一个过滤器或过滤器功能。换言之,它是一个函数,通过过滤器挂钩进入工厂。
/* Environment: We're in functions.php or a PHP file in a plugin */
function wpshout_filter_example( $title ) {
return 'Hooked: ' . $title;
}
add_filter( 'the_title', 'wpshout_filter_example' );
以下是有关上述代码的知识:
下面是如何理解最后一行:
因此filter wpshout\u filter\u example()钩住filter hook的\u标题。当它这样做时,它只需在标题中添加“Hooked:”,并将其返回。有道理?
我们的下一个承包商是一个动作或动作函数:一个将动作挂钩带进工厂的函数。
/* Environment: We're in functions.php or a PHP file in a plugin */
function wpshout_action_example( ) {
echo "WPShout was here.";
}
add_action( 'wp_footer', 'wpshout_action_example' );
如果您已经理解了上面的过滤器示例,那么您将了解有关WordPress操作示例的几乎所有内容:
正如我们所指出的,与我们的过滤器示例的主要区别是钩住的函数不返回任何东西。相反,它直接在页面上回显(打印)消息。这条消息将打印在哪里?它将打印在页脚部分的最开始,无论主题作者在哪里放置了wp\u页脚操作钩子。
这种不同的操作可以做大多数事情,过滤器必须返回对给定内容的修改,这是这两种函数之间的主要区别,这两种函数在其他方面非常相似。
WordPress使用动作和过滤器来扩展它所能做的,从我们今天展示的愚蠢的例子,一直到像WooCommerce这样的超复杂插件。我们已经了解了钩子、动作和过滤器的用途,以及它们如何工作的基础知识。
总而言之:WordPress在WordPress页面生成过程中的特定位置注册操作和过滤器挂钩。任何开发人员都可以编写自己的函数来钩住这些操作和过滤器钩子。过滤器(或“过滤器函数”)修改所给的内容,并通过返回返回;操作(或“操作函数”)可以回显文本、修改数据和其他任何内容,并且不需要返回值。
WordPressHooks系统实际上是WordPress全面开发的门户,所以不要害怕回顾这些资料,对其进行实验,并使其成为您自己的。
WordPress日记主要承接WordPress主题定制开发、PSD转WordPress、WordPress仿站以及以WordPress为管理后端的小程序、APP,我们一直秉持“做一个项目,交一个朋友”的理念,希望您是我们下一个朋友。如果您有WordPress主题开发需求,可随时联系QQ:919985494 微信:18539976310