当我们安装主题和插件时,都会向…
您是否听说过WordPress 可插拔功能?如果没有,那么本文应该引起您的注意。用两个词可插拔的功能是您可以覆盖的WordPress核心功能。所有这些功能都位于一个文件中:“ wp-includes / pluggable.php ”。可插拔功能是在WordPress 1.5.1中引入的,但是在WordPress的最新版本中,不再使用此方法。现在,最近的函数在其输出上使用过滤器。但是您仍然可以覆盖可插拔函数,这就是我在本文中要介绍的内容。
哪些功能?
可插拔功能包括:
- auth_redirect
- check_admin_referer
- check_ajax_referer
- get_avatar
- get_currentuserinfo
- get_user_by_email
- get_user_by
- get_userdatabylogin
- get_userdata
- is_user_logged_in
- wp_authenticate
- wp_check_password
- wp_clear_auth_cookie
- wp_create_nonce
- wp_generate_auth_cookie
- wp_generate_password
- wp_get_current_user
- wp_hash_password
- wp_hash
- wp_logout
- wp_mail
- wp_new_user_notification
- wp_nonce_tick
- wp_notify_moderator
- wp_notify_postauthor
- wp_parse_auth_cookie
- wp_password_change_notification
- wp_rand
- wp_redirect
- wp_safe_redirect
- wp_salt
- wp_sanitize_redirect
- wp_set_auth_cookie
- wp_set_current_user
- wp_set_password
- wp_text_diff
- wp_validate_auth_cookie
- wp_validate_redirect
- wp_verify_nonce
您可以单击每个功能的名称来访问其代码页。
如何重写可插拔功能
嗯,这很简单,您要做的就是在插件中创建一个包含“ if(!function_exists())…”语句的文件,然后重新定义该函数。我强烈建议您在开始时复制并粘贴原始功能。通过这种方式,您可以确定该功能将起作用。这是一个空的例子:
if ( ! function_exists('wp_notify_postauthor') ) : /** * Notify an author of a comment/trackback/pingback to one of their posts. * * @since 1.0.0 * * @param int $comment_id Comment ID * @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback' * @return bool False if user email does not exist. True on completion. */ function wp_notify_postauthor( $comment_id, $comment_type = '' ) { /* This is where you redefine the function */ } endif;
我想谈谈“ wp_notify_postauthor()”函数。这是负责在添加新评论时向发件人发送电子邮件的人。在我的一个插件WordPress Issues Manager中,我需要禁用此通知,但只能使用特定的自定义帖子类型。因此,我复制了整个函数,并简单地添加了以下内容:
if ( ! function_exists('wp_notify_postauthor') ) : /** * Notify an author of a comment/trackback/pingback to one of their posts. * * @since 1.0.0 * * @param int $comment_id Comment ID * @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback' * @return bool False if user email does not exist. True on completion. */ function wp_notify_postauthor( $comment_id, $comment_type = '' ) { if( $post->post_type != 'issue'): /* content of the original function */ endif; } endif;
这很简单,但是在无需进行大量更改或创建与自定义动作挂钩的完整自定义功能的情况下,效果很好。
wp_mail()
如您在可插入函数列表中所见,wp_mail()是可插入函数。此功能是用于发送电子邮件的功能。发送电子邮件时,WordPress中的任何地方都使用此功能。这就是为什么自定义它会非常有趣的原因。例如,您可以对WordPress安装发送的所有电子邮件使用html默认模板。
您还可以将每封邮件的隐藏副本发送到特定电子邮件,以进行某种备份(相信我,当有人告诉您他没有收到邮件时,这将非常有用!)。
wp_authenticate()
您还可以修改wp_authenticate()并添加一些额外的参数以增强站点的安全性(例如蛮力攻击)。
auth_redirect()
此功能是检查用户是否已登录的功能,如果没有登录,它将把用户重定向到登录页面。这将很容易覆盖函数并将用户重定向到自定义页面,而不是默认登录页面(例如,如果您要隐藏wp-admin文件夹)。
wp_generate_password()
此功能是自动生成密码的功能。老实说,您实际上不需要修改它,但是既然您知道什么是蛮力攻击,您可能会对创建更强大的密码感兴趣。好吧,这是要改进的功能。
结论
总结这篇关于WordPress主题可插拔功能的简短文章,我想指出一个事实,即新功能不再适用。正如我上面所写,它们现在正在使用过滤器。但是可插拔功能是重要的功能,尤其是在创建真正特定的插件时。但是使用可插拔功能时要小心。如果新创建的功能无法正常运行,则可能会破坏您网站的一部分(就功能而言),因此请在所有条件下进行测试。
微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!
需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!