首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WordPress 主题和插件的加载运行机制、Hook钩子与重要函数

本文有助于你深度了解 WordPress 主题和插件的 PHP 加载顺序,学习 Hook(钩子)Action(动作钩子) Filters(过滤钩子)的概念,弄懂 WordPress 重要函数:do_action...wp-load.php 打开这个文件可以看到,该文件检测了 wp-config.php 文件,如果未检测到该文件,则进入到安装进程。...什么是 Filters Filters 则是对内容的处理,通过 Filters 可以在这些数据被渲染到页面前或保存到数据库前对其进行修改。...do_action do_action 是 WordPress 插件机制非常重要的一环,当程序运行到这个函数时,就会将挂载在这个 Hook 上的所有函数执行一遍。...add_action("Hook 名","函数名") 不过这样的使用忽略掉了两个参数,在执行一些特定的操作时,可能就不足了。 我们可以看看这个函数的官方文档。

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WordPress架构简单剖析

    WordPress的钩子函数通过do_action和apply_filters两个方法进行调用, 看过方法add_action发现, 它就是简单的调用了add_filter方法....不过在查看源码的过程中, 有一个问题, 所有钩子函数的调用, 都是直接使用字符串调用的, 如 do_action('init'). 这种通用的变量, 不应该写个常量列表的么?...我数了一下, 目前一共1470个钩子. https://developer.wordpress.org/reference/hooks/ 可以说, WordPress就是通过各种钩子以及拼图式页面, 分别实现展示和流程的个性化定制...而这个钩子函数倒也不是什么新鲜玩意, 接口的监听器、各种beforeAction afterAction等等, 在平常开发过程中也经常用到. 只是没有用到这么极致罢....不过最重要的是, 这破玩意就是我现在在用的呀, 不好好了解一下怎么行. 以后如果有定制化需求, 咱也不至于无从下手了.

    1.5K40

    本地 Docker 打开 WordPress 速度慢

    意味着可以先排除浏览器的问题,CSS DOM Js 解析相关的事情都可以放一边,从服务器,PHP 语言入手。...> 未开启浏览器的「禁用缓存」的情况下,速度马马虎虎,不算很慢。 数据查询次数:31 消耗时间:0.808 秒, 使用内存: 22.81MB 但是如果切换「禁用缓存」选项,就会命中耗时很长的请求。...接收到后端服务器响应头花费的时间 可以看到,是 PHP-FPM 的耗时在 16 秒以上。...源码里的语句来分析为什么网站打开速度慢,但是,慢日志里的记录并没有主题代码的记录,也就是说去改动 WordPress 源码来解决本地访问速度慢的问题是不可靠的,因为 WordPress 升级后这些改动可能会失效...容器限制 刚开始也有这一步的猜想,是不是因为 docker 容器限制了内存、CPU 导致的。观察了请求发出后 php-fpm 容器的性能情况,负载几乎可以忽略。 容器运行情况 5.

    5.5K30

    使用 WordPress 快速打造个人 Wiki

    在之后,我也写过几篇 “如何使用容器技术搭建 WordPress” 的文章,据官方数据称 WordPress 目前已经占据了互联网 34% 的应用,写作体验和插件生态其实还是很棒的,那么我们为何不使用...Wiki 界面定制 使用最新的 5.0 版本的软件,默认安装完毕后,你将看到下面的界面。 ?...再次打开编辑器,你会发现原本的所见即所得编辑器就变成了我们熟悉的左右分栏的 Markdown 编辑器。 ? 代码高亮 在浏览器性能越来越高的今天,我们几乎完全不需要再使用服务端进行代码高亮啦。...最后 WordPress 是一款开源免费的软件,由 PHP 编写。前文提过,据官方数据,目前已经占据了 34% 的互联网软件份额。...感谢 WordPress ,替我节约了大量的时间去折腾更有意思的事情。 — EOF

    1.8K40

    Genesis框架从入门到精通(2):什么是动作?

    在本系列的前一篇文章中,我解释了Genesis框架和乐高之间的相似性。我列出了Genesis所有内置的“钩子”,把它们比喻成乐高里连接各个积木块的小凸点。...add_action('hook', 'function_1'); add_action('hook', 'function_1'); // 和上面的重复了,会被忽略 add_action(...小结 但,知道只是成功的一半。本系列的下一部分将介绍如何在Genesis文件中查找需要的动作(action)并在子主题中更改它们。...翻完这个,已经快无法直视钩子了,脑子里全是钩子。...感兴趣的可以看看,改天也想翻译下这个文章,将的挺形象的 或者干脆改名叫wordpress之钟馗 钩子算了 能看明白和能说明白真不是一回事啊。

    74920

    为woocommerce开发支付网关插件,对接支付通道

    $this->get_option( 'test_publishable_key' ) : $this->get_option( 'publishable_key' ); // 这个动作钩子保存上面的设置...我们使用WooCommerce中的事件延迟表单提交,并将带有卡数据的AJAX请求直接发送到我们的支付处理器,checkout_place_order 如果客户详细信息正常,处理器将返回一个令牌,我们将其添加到下面的表格中..., 现在我们可以提交表格(当然在JS中), 我们使用PHP中的令牌通过支付处理器的API捕获付款。...isset( $_GET['pay_for_order'] ) ) { return; } // 如果我们的支付网关被禁用,我们就不需要js了 if ( 'no' === $this->enabled...,请添加这个动作钩子 do_action( 'woocommerce_credit_card_form_start', $this->id ); // #ccNo, #expdate, #cvc自己改成自己的

    34810

    WordPress评论滑动拉链解锁myQaptcha修改为自动提交的方法

    二、部署代码 部署很简单,编辑 WordPress 主题目录下的 functions.php,在保存即可: include("myqaptcha/myQaptcha.php"); 三、修改代码 ①、评论框 为了配合这个自动提交,我们必须修改一下评论框的提交按钮代码。...php comment_id_fields(); do_action('comment_form', $post->ID); ?...目的是为了滑动模块后,不管是评论提交成功还是失败,模块都应该恢复到未拉动的状态,以备再次评论!总不能滑动评论一次就不能评论了吧?...再啰嗦一个例子: 张戈博客早期的文章《WordPress 评论滑动/拉链解锁 myQaptcha 代码版及部署方法》已经分享了代码部署的方法。 这篇文章中提到了因 Jquery 版本问题导致无法滑动。

    1.4K50

    WordPress主题开发,从入门到精通。

    7.wp_head、wp_body_open(放在Body之后)、wp_footer 利用钩子函数的输出,在指定标签的位置输出相应的内容;wp_head(),方法内就是一个do_action("wp-head...、edit_post 在文章保存后立即触发,remove_all_actions(),移除所有钩子,did_action(),钩子的运行次数 10.admin_menu 在后台加载管理菜单之前触发。...主题可用函数 带s的方法一般是钩子函数的包装器,可以直接传入函数作为钩子; 1.add_theme_support WordPress 默认隐藏了很多功能,我们可以通过 add_theme_support...,访问附件的URL保存在post_meta表 12.wp_options表 option可直接存放一个数组;当我们单独访问许多选项数据时,可能导致许多单独的数据库事务,通常,数据库事务是昂贵的操作(就时间和服务器资源而言...media.state().get('selection').toJSON()); ,被选的图片 问题总结 1.save_post wordpress自动保存也会触发这个钩子,可能导致异常输出;save_post

    10.7K40

    【玩转腾讯云】WordPress Typecho Hexo 实现消息的及时 QQ 微信 推送

    首先,Slack 这样的平台提供了太多可定制的功能,API 文档又长又复杂,而且还要安装额外的客户端,注册账号也是一件很麻烦的事情,选手机短信就更加麻烦了。...长老相信对于国内用户,大概没有比 QQ 和微信用的更多的通讯平台了,所以推送到 QQ 和微信是最方便的。...我们进入官网,点击登录,选择 QQ 登录,登录成功后的界面非常简单,我们选择一个推送机器人,然后添加自己的 QQ 号,点击保存。...接下来我们编辑 WordPress 主题下的 functions.php 文件,增加一个自定义钩子。 我们首先写一个推送函数,该函数会挂载到 WordPress 钩子,无需关心参数和返回值。...函数只要直接挂到 WordPress 的评论钩子即可。

    1.8K118

    WordPress 并不是插件越多速度越慢而是劣质插件越多速度越慢

    从 WordPress 插件运行原理来看,无论是代码还是插件对 WordPress 速度的影响几乎是没有的,唯一有可能产生影响的其实也就是代码或者插件的代码质量了,我们都知道 WordPress 核心程序提供了很多的内置函数和钩子...,它们本身就是 WordPress 的一部分,对于插件开发者而言,要尽量使用这些内置函数与钩子来进行开发,即可节省代码编写时间又能提高程序执行效率和安全性。...前端输出的CSS或JS经过优化,且有仅在需要的地方加载的判断规则或功能选项。 插件的功能有清单且有控制开关选项,未开启的功能代码不会被执行。 符合 WordPress 编码规范。...不需要数据库操作,没有频繁的数据库读写。 能保持更新、升级的插件。 就明月的经验来看,只要一个插件没有数据库操作对 WordPress 速度的影响是极其有限的,甚至都可以忽略的。...,毕竟没有几个站点舍得花钱另购独立的云服务器,都是服务器自带的数据库拿来就用了,稍微不注意就会拥堵也自然是正常的了。

    62210

    【Git】Git 完全指南:从入门到精通

    Git 提供强大的分支管理功能,可以在不干扰主分支的情况下开发新功能或修复 bug。 1.2 Git 与其他版本控制系统的区别 集中式版本控制系统(如 SVN):所有的代码版本保存在一个中央服务器中。...7.5 撤销修改 Git 提供了多种方式撤销更改,视不同的场景而定。...7.5.1 撤销未暂存的更改 命令: git checkout -- 示例命令: git checkout -- index.html 效果: 撤销文件 index.html 中的未暂存更改...请谨慎使用,因为此命令会删除所有未提交的更改。 8....Git 进阶技巧 12.1 使用 Stash 临时保存更改 Git 提供了 stash 命令,用于将当前的更改暂时保存,之后可以恢复,以便切换到其他任务。

    3.2K41

    离开页面前,如何防止表单数据丢失?

    向用户添加一个确认对话框,询问他们在具有未保存表单更改的情况下是否确认重定向是一种良好的用户体验实践。通过显示此提示,用户将意识到他们有未保存的更改,并允许在继续重定向之前保存或丢弃它们的工作。...通过在事件上调用 preventDefault 方法,我们可以触发浏览器的确认对话框。仅当表单具有未保存的更改(由 hasUnsavedChanges 属性指示)时,才会激活此对话框。...幸运的是,React Router v5提供了 Prompt 组件,以在离开未保存更改的页面之前警告用户。该组件接受两个props: when 和 message 。...,并在尝试离开未保存更改的表单时收到警告。...总结 总之,为未保存的表单更改实现确认对话框是增强用户体验的重要实践。本文演示了如何创建一个 FormPrompt 组件,当用户尝试离开具有未保存更改的页面时,该组件会向用户发出警告。

    5.9K20

    如何修复WordPress内容更新和发布失败错误

    如果您的WordPress网站在您尝试进行更改时返回诸如“更新失败”或“发布失败”之类的错误消息,那么结果不仅令人沮丧,而且还会阻止访问者访问他们需要的内容。...为什么WordPress有时无法更新或发布内容 如何修复WordPress更新失败和发布失败错误 为什么WordPress有时无法更新或发布内容 区块编辑器已经存在一段时间了。...“发布失败”错误有几种不同的原因,但其中一个特别与区块编辑器有关。新的WordPress编辑界面依赖REST API来创建、保存和发布文章。...一次性禁用所有插件可以帮助您确定哪个插件(如果有)导致了问题。然后,您可以删除、替换或更改该插件的设置以再次启用REST API。安全和性能优化插件是常见的罪魁祸首。...很有可能,您将能够在WordPress中找到导致“发布失败”错误的工具并禁用它或更改其设置以解决问题。

    5.5K30

    每天一个WordPress文件:wp-config.php

    wp-config.php 是 WordPress 用来保存配置信息的地方,包含网站的基础配置详细信息(如数据库连接信息),它是 WordPress 最重要的文件之一,该文件位于 WordPress 文件目录的根目录中...,用于确保存储在用户 cookie 中的信息更加安全,WordPress 2.7 又增加了第四个 key:NONCE_KEY。...自动保存 WordPress 会在你撰写日志的时候,使用 AJAX 自动保存日志修订到数据库中。...'DISALLOW_FILE_EDIT', true ); WordPress 后台可以直接更新插件或者主题,如果你的主题和插件已经自己做了一些定制化修改,不需要在更新了,使用下面选项屏蔽更新: define...,当你更改设置的时候,这些图片不会被删除,如果你不想那么多图片的时候: define( 'IMAGE_EDIT_OVERWRITE', true ); 屏蔽编辑未过滤的HTML代码 默认情况下,单站点下的管理员和编辑角色的用户是可以发布未过滤的

    77730

    WordPress 函数:wp_enqueue_script() 安全引入 JS

    ​WordPress 主题最佳引用 js 文件的方法是使用 WordPress 内置的 wp_enqueue_script() 函数,通过该函数可以安全地将javascript 代码加入到 WordPress...创建的页面中,不仅可以最大限度地保证兼容性,还是提高 WordPress 性能效率的一个方法。...$ver – 加载js文件的版本号,作为查询字串附加在路径的末尾,作用是确保正确的版本信息传递给了客户端,以免受到缓存的影响 (如js脚本发生变化时,通过更改版本号可以强制客户浏览器更新缓存),默认为false...,调用当前wordpress程序的版本号,如果不想显示,则设置为NULL(不推荐)。...> 另外一种方法,使用 wp_head 钩子和 admin_head 钩子: //为 WordPress 后台添加 css 和 js 代码 <?

    84820

    WordPress插件设计

    PHP语言和MySQL数据库开发的,用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。...'/languages' ); 6、定制系统行为 系统已经定义了许多action和filter,如果对其中的某个点比较感兴趣,可以注册自己的回调。...,这2个是WordPress中使用最多的钩子,最终实现机制差不多,都是先声明,然后在代码中使用的地方调用相关回调/钩子,最后插件可以针对自己感兴趣的action/filter注册相关的回调。...三、整体感受 整体来说,WordPress的插件做的是比较灵活的,通过观察者模式,通过钩子回调的方式,让插件可以快速、简单的关注自己感兴趣的扩充点,做到处处可扩展。...另外也增加开发者的维护成本,因为系统多少扩充点,如果没有很好的文档,那只能自己去搜索或者看源代码了。 当然这是一个权衡的考虑,在灵活性和稳定性如何选择,需要自己根据条件去做选择。

    83030
    领券