想对你的WordPress网站做一些改变?HTML和CSS只能走到这里。如果你需要改变WordPress的行为方式,而你又找不到一个主题或插件来做你想要的事情,那么WordPressHook可能就是你要找的答案。了解Hook是学习如何修改或创建插件和主题的一个重要步骤。但是,如果你试图搜索答案,到底什么是Hook,它们是如何工作的,你可能会发现大部分是为开发人员写的技术文章。bluehost定制网站服务商分享WordPress Hooks初学者指南
如果你是一个初学者,或者不知道如何编码,而想了解Hook呢?
这篇文章将为初学者解释WordPress的Hook,并教你如何使用它们来自信地修改你自己的WordPress网站。
在WordPress中几乎所有的内容都是用Hook工作的,所以一旦你理解了这个概念,你就可以修改几乎所有的内容。
什么是WordPress的Hook?
想象一下你的WordPress网站是一个巨大的、混合媒体拼贴在墙上的作品。混合在飞溅的油漆、回收的贺卡和杂志剪贴画(你的主题、插件和内容)中的是一些Hook。
这些Hook在那里,所以你可以把你自己的艺术品添加到拼贴画中,按你的意愿定制它。
WordPress的Hook工作起来有点像这样,允许你在某些地方 “挂 “你自己的代码。
你也可以把Hook看作是触发器。根据你使用的特定Hook,你的代码将在某些地方被触发。推荐阅读:《WordPress建站的惊人优势》
下面是WordPress代码中对Hook的描述。
“Hook是由WordPress提供的,允许你的插件’钩住’WordPress的其他部分;也就是说,在特定的时间调用你的插件中的函数,从而使你的插件开始工作。”
有两种Hook:动作和过滤器。
一个WordPress动作Hook的比喻
动作Hook设置自定义函数,以便在特定的WordPress事件中触发。
比方说,你在等待一个重要的包裹在星期六到达你家,但你有事情要做,不能在家里等待签收。所以你去找你的邻居Sara,要求她在你的包裹到达时签收。
如果你的请求是一个WordPress的Hook,它看起来会是这样的。
function sign_for_package( $sara_is_home ) {
if ( $sara_is_home ) {
echo ‘I’ll sign for that package!’;
}
}
add_action( ‘when_package_arrives’ , ‘sign_for_package’, 10 , 1 );
在上面的例子中,代码等待包裹的到来,然后它让Sara去签收(如果她在家的话!)。
数字10和1是什么?
第一个数字设定了函数的优先级:它应该在其他函数之前还是之后执行?默认值是10,所以我们就把它放在那里。大多数时候,这不会有什么影响。
第二个数字是函数中的参数或变量的数量。我们只是使用$sara_is_home这个变量,所以它被设置为1。
一个WordPress过滤器Hook的比喻
过滤器Hook是在对这些数据采取行动之前改变或过滤数据的函数。
假设Sara同意签收你的包裹,如果你同意让你的狗下次开始叫得太大声时安静下来。
我们可以为她的请求创建一个过滤器Hook。
function quiet_down($dog) {
$dog = str_replace ( “bark” , “silence” , $dog );
return $dog;
}
add_filter( dog_barking’ , ‘quiet_down’);
有了这个过滤器,触发器就是狗的叫声。当这种情况发生时,每一声狗吠都会被替换成安静。
这是一个过滤器,而不是一个动作,因为我们是在改变已经存在的东西(狗叫声变成沉默),而不是增加新的东西。
一个有用的、现实生活中的例子
“那么。”你可能在想,”我真的希望我可以用WordPress的过滤器来阻止我邻居的狗叫——但我不能。行动和过滤器的一些实际用途是什么?”
在每个帖子后添加内容,甚至在RSS中也是如此
假设你想在每一篇文章后自动添加一点内容。
你可以通过修改你的single.php模板文件,或使用一个post后的widget区域来实现。但无论是哪种方法,你的新内容都不会显示在你的RSS提要中。
为了修改内容,使其显示在你的RSS提要中,你可以使用一个过滤器。
function after_post_content($content) {
if(!is_feed() && !is_home()) {
$content.= ‘<h4>Like this post?</h4>’;
$content.= ‘<p><a href=”http://example.com/subscribe”>Subscribe to our newsletter</a>!</p>’;
}
return $content;
}
add_filter (‘the_content’, ‘after_post_content’);
这是一个过滤器,而不是一个动作,因为你在修改你的文章的内容,而不是添加一个全新的功能。推荐阅读:《如何在没有设计经验的情况下在WordPress中建立一个销售页面》
WordPress的Hook可以被添加到你当前主题目录下的function.php文件的末尾。你也可以用它们来创建你自己的插件。在做任何改变之前,一定要备份你的网站。
需要注意的几件事
回顾WordPress的PHP编码标准
在你开始创建你自己的动作和过滤器之前,看一下WordPress的PHP编码标准。
WordPress是一个合作项目,你的功能不仅会与WordPress核心互动,也会与其他主题和插件互动。如果我们都以一致的方式使用代码,这将有助于大家相处和愉快地游戏。
为函数使用一个独特的名字
当创建你自己的Hook函数时,一定要使用一个独特的名字。如果你碰巧使用了一个已经在你的网站上某个地方使用的函数名称,它可能会使你的整个网站戛然而止。
这方面的标准做法是使用一个与你的主题或插件名称相匹配的前缀。例如,如果你正在创建一个叫做Awesome WordPress Plugin的插件,你可以用awp_作为所有函数的前缀。
使用大量的注释
注释不仅对别人看你的代码有用,而且对你自己也有用!你可能需要回头修改你的代码。你可能需要在几个月或几年后回去修改你的代码,而忘记你到底做了什么。注释还可以使你更容易快速阅读和理解代码。为了节省自己的时间以及避免头痛,使用注释来解释代码中发生的事情,即使它现在对你来说是明显的。
结论
WordPress很容易用合适的主题或插件进行修改,但有时你想做一个独特的改变,而你却找不到一个主题或插件。通过学习WordPress的Hook是如何工作的,你会对整个WordPress有更多的了解。推荐相关阅读:《2022年3个最好的WordPress稀缺性插件快速提升销售额》