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

我们可以在没有do_action钩子的情况下执行add_action函数吗

在没有do_action钩子的情况下,是无法直接执行add_action函数的。do_action钩子是WordPress中用于触发特定动作的机制,它允许开发者在特定的时机插入自定义的代码。add_action函数则用于将自定义的动作(回调函数)添加到指定的do_action钩子上。

如果没有do_action钩子,add_action函数将无法找到要添加动作的位置,因此无法执行。在WordPress中,do_action钩子是由核心代码或插件提供的,用于在特定的时机执行相关操作。开发者可以通过自定义主题或插件来添加自己的do_action钩子,并在需要的时候执行add_action函数。

总结起来,没有do_action钩子的情况下,无法直接执行add_action函数。do_action钩子是执行add_action函数的前提,它提供了执行自定义动作的时机和位置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

这样,我们主题中添加功能,也会被加载到系统当中去。 这个文件没有再引用其他文件,然后返回 wp-config.php。...上挂载钩子走一遍,然后再回来继续执行后面的代码;如果没有挂载任何钩子,则不执行操作。...比如在开发过程中,可能会用到 get_header 这个函数,该函数执行时,首先会调用 do_action,那么, get_header 上挂载函数就会执行执行完成后,再执行后面的函数。...有了这个函数存在,才有了后续我们开发插件时,各种功能实现。 add_action add_action 可以我们自定义函数加到特定 Hook 上去,等待执行。...一般来说,我们只需要执行如下命令即可。 add_action("Hook 名","函数名") 不过这样使用忽略掉了两个参数,执行一些特定操作时,可能就不足了。 我们可以看看这个函数官方文档。

1.2K10

WordPress插件开发,从入门到精通。

WordPress 钩子可以我们特定时机介入 WordPress 代码执行流程,不需要编辑任何核心文件就可以改变 WordPress 行为。...register_uninstall_hook 我们卸载插件时运行,我们可以挂载一个清理插件所有数据函数来清理数据库中不再需要插件数据。...4.添加、移除、执行钩子 可以使用 add_action() 、add_filter函数来添加我们自己钩子,通过我们自己自定义钩子,其他开发者可以通过扩展或修改我们插件来适应他们需求。...可以使用  remove_action() 、remove_filter来移除挂载到某个钩子函数, remove_action() 需要在初始 add_action() 之后运行。...可以使用do_action、apply_filter运行指定钩子所有钩子函数; 制作插件 1.定义插件 Plugins目录下,创建一个目录,目录里面放一个同名PHP文件,通过注释添加如下描述:

95840

CVE-2022-21661:通过 WORDPRESS SQL 注入暴露数据库信息

今年 10 月,我们收到了来自 GiaoHangTietKiem JSC ngocnb 和 khuyenn 报告,涉及 WordPress 中 SQL 注入漏洞。...在这里,请求是没有身份验证情况下发送,因此会调用未经身份验证 Ajax 操作,即wp_ajax_nopriv_ecsload。...搜索字符串“wp_ajax_nopriv_ecsload”表明它是一个存在于ajax-pagination.php页面中钩子名称: public function init_ajax(){ //add_action...后来get_posts方法中,这个查询是通过$wpdb->get_col()方法执行,这里出现了SQL注入条件。...虽然这是信息泄露而不是代码执行问题,但暴露数据可能对攻击者很有价值。不久将来,主动攻击中看到这个错误并不会让我们感到惊讶。我们建议尽快应用补丁或采取其他补救措施。

4.1K10

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

前言 WooCommerce模板众多,可以选择出我们需要模板,生态好,而且数千个钩子更加利于开发者开发。本文分享如何为woocommerce独立站开发第三方支付插件。...创建插件 因为WooCommerce有很多钩子,所以我们开发支付网关时候,只需按照一个“框架”来开发就好,下面的是插件框架 具体代码 构造函数 public function __construct..., 现在我们可以提交表格(当然JS中), 我们使用PHP中令牌通过支付处理器API捕获付款。...) ) { return; } // 除非你网站处于测试模式,否则不要在没有SSL情况下验证。...,请添加这个动作钩子 do_action( 'woocommerce_credit_card_form_start', $this->id ); // #ccNo, #expdate, #cvc自己改成自己

13810

WordPress主题开发,如何修改自带邮件发送功能?

今天收到两条评论,发现没有收到邮件通知,转念一想自己也没设置过邮件相关配置,查了一下文档发现wordpress是通过wp_mail函数发送邮件。...4.wp_mail_failed 官方文档:https://developer.wordpress.org/reference/hooks/wp_mail_failed/ 这是一个action钩子,发送失败时触发这个钩子函数...,可以在这个钩子进行完全自定义操作。...新发现 do_action_ref_array和do_action区别,应该在于一个是引用传递参数一个是按值传递 6.wp_mail_succeeded 这就就不细说了,发送成功时触发钩子...太多了,找点有用吧 .............. 2.分析 开启评论审核之后,有新评论时wordpress会自动给站长邮箱发送邮件,我们需要做就是评论被回复时通知评论对象,以及审核通过时通知评论对象

65510

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

如果主循环没有加载成功,那么用于加载余下日志钩子就不会加载,同样,如果评论模板没有加载,则用于显示评论钩子就不会加载。 第三部分告诉我们回调函数名称是“callback_function”。...后面是函数名称。()中可以是任何可以传递参数(稍后会详细介绍),{是函数开头。之后一切都是函数内部运行代码。 }是函数结尾。真的很简单,但也很容易搞砸。...第二个remove_action()在这种情况下也不会执行任何操作,因为它要删除function_2没有被添加过。如果删除指令里和添加指令里任何一部分不是完全匹配,那么删除操作就不会执行。...如果像个变量相同,条件为真,那么我将“hook”钩子被触发从而运行function_1代码,但我不希望触发第二个钩子“hook_2”,所以我必须删除它,即使function_1代码没有被添加情况下...因为相同动作并不会重复执行,并且因为remove_action依赖于已经存在add_action,所以这让我可以使用非常简单代码将我函数从一个钩子移动到另一个钩子

73320

WordPress架构简单剖析

没有悟到什么. 这玩意不就可以做缓存嘛. 但是, 不好意思, 执行这步操作之前, 该查询数据就已经查过了, 所以这个缓存加了等于没加, 没什么卵用....钩子函数 如果WordPress只是能够拼图式组装页面, 那还不够灵活, 因为只能对页面进行操作, 而无法影响执行流程. 对执行流程影响, 就是它各种钩子函数了....WordPress钩子函数通过do_action和apply_filters两个方法进行调用, 看过方法add_action发现, 它就是简单调用了add_filter方法....举个例子, 有一个缓存插件, 就是通过添加init钩子函数, 将页面内容 echo之后, 直接执行die函数, 以达到快速返回效果....不过查看源码过程中, 有一个问题, 所有钩子函数调用, 都是直接使用字符串调用, 如 do_action('init'). 这种通用变量, 不应该写个常量列表么?

1.4K40

Genesis框架从入门到精通(4):框架内置动作(续)

函数分为几个关键部分,可以看成是某种按顺序执行任务模板。...这意味着,函数在哪里执行,它就会把这个值打印输出到函数所在位置,如果我想输出“bar”而不是默认“foo”,那就写成 generic('bar') 。配合钩子使用时,这个函数可能会更有意义。...php } 使用自定义动作 好,你现在可以编写一个简单函数了,但你需要将它添加到Genesis?嗯,这是最简单部分,只需写出来你想怎么用这个函数就行了。需要在标题之前执行代码?...当你使用钩子时,你也是调用一个函数,你就是告诉函数运行之前告诉它要在哪里运行。这意味着钩子函数可以与“普通”函数互换。...就像你可以钩子中使用另一个函数一样,你可以也不使用钩子情况下调用Genesis函数。 一个很好用法就是自定义 home.php 文件中。

63420

如何解决 WordPress 插件加载顺序和相互之间依赖问题

经常看我博客和公众号同学都知道,我所有插件都是基于 WPJAM Basic 插件,那么我首先要解决问题就是判断 WPJAM Basic 是否已经加载,有两种方法, 首先介绍第一种方法,我们可以通过函数...首先在 WPJAM Basic 插件最后自定义一个 action: do_action('wpjam_loaded'); 然后其他函数通过函数 did_action 判断该 action 执行了才加载和执行具体代码...因为表单插件和评论增强插件都是基于 WPJAM Basic,所以他们具体代码都是 plugins_loaded,所以他们之间具体是谁被执行并不确定。...')){ add_action('wpjam_comment_loaded', function(){ // 加载表单插件代码 }); } } 整合一下,就可以完美解决插件之间依赖关系...如果每次都要这样处理有点繁琐,并且这些插件都是基于 WPJAM Basic ,所以我 WPJAM Basic 中增加了 wpjam_load 函数来处理插件依赖问题: function wpjam_load

39640

网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)

有时候你会发现,你搜索引擎输入网站名称时候,出来网站信息是你们,但是域名却是一个陌生,这种情况可以基本确定网站被镜像了,那么究竟什么叫网站被镜像?...虽然目前我们还不知道恶意镜像我们网站到底有什么意图,但肯定对我们没什么好处,如果他这个域名有点什么不健康信息,那么我们被镜像站点有可能被污染掉,所以还是要警惕这个现象。...此方法缺点就是如果镜像网站更换了 ip,那我们屏蔽就失败了 方法 2:JS 来防护 头部标签:取自 @boke112 导航 <head </head <head </head 里加上下面的 JS...proxy2016 字符,如果没有找到就会将主机 URL 改为 www.ilxtx.com;为了安全起见,将 js 部分可以使用 js 代码混淆(本站“JS 代码混淆” 工具 或 站长之家 JS 混淆工具...; } } } 经过测试, functions.php 中加入此代码后,打开镜像站后显示“Internal Server Error”,强制刷新后显示我们设置好提示文字“请勿采集本站,采集者木有小

1.4K10

WordPress可拓展性初探(二)

所谓“钩子”,其实可以理解为代码插入点。这也就是说,如果原工程设计时加入了钩子方法调用,我们便可以调用钩子方法地方插入代码。...WordPress设计时候考虑得相当周到,可以说插件开发者需要插入代码地方,都已经有了钩子方法了。 钩子方法本质其实就是是动态调用函数。...这样上述代码就会被执行我们插件就利用 add_action 函数调用,把发送邮件功能注册了 save_post 这个钩子方法上。...这样就达到了特定位置执行插件定义代码目的。 这样做好处是,无论WordPress如何升级,只要钩子方法定义没有改变,那么原有插件就可以不加修改正常工作。...我们可以我们工程中借鉴这样思路,从而使我们工程也具有高可扩展性。

756120

WordPress二次开发之插件权限控制

以字体样式插件为例,我们添加菜单时设置了参数 manage_options 表示有这个权限角色才能创建该菜单,而这个权限只有管理员才有,只有管理员登录时才能看到该菜单 ,这是一种方式 add_menu_page...read(任何用户都能看见)但只要该用户没有edit_posts权限那么他也看不到该菜单 除了用户权限控制,我们还希望脚本文件,css文件等也受到控制,默认情况下插件引入js文件会作用域全局,也就是插件...js代码在当前插件页面有效,在后台其他页面甚至前台也会有效,这不符合常理,因此可以通过 get_current_screen来进行处理 public function __construct()...($this,'load_script')); //处理ajax 钩子 add_action('wp_ajax_my_color_check', array...admin_enqueue_scripts钩子添加处理函数函数体内判断当前页面id,如果为 options-general则加载js文件,这样js文件只作用域当前插件页面

55910

Genesis框架从入门到精通(3):框架内置动作

:用于搜索页面的动作 sidebar.php :用于创建用于侧边栏钩子和动作(仅在被layout.php文件调用了情况下执行) 同样,可以看出根据文件结构找到需要代码是多么容易。...它们名称实际上就是函数意义,完全可以按图索骥。 如何使用Genesis钩子( Hooks) 让我们看看如何使用钩子。我将分三个部分:删除动作,移动动作和修改动作。...过滤器会在另一个教程里讲,所以我们暂时忽略它。要移除或移动一个动作,可以不用依赖于函数,所以我们可以忽略上面的函数我们所需要只是一行。...另请注意,第3行定义了函数,它必须和add_action()中函数名称完全一直,这一点也非常重要。 代码内容就是为自定义循环创建了参数$args。首先是让已有的查询可以函数内部使用。...本系列接下来教程中,我将解释什么是过滤器,它可以让你在不用对动作进行删除,添加,修改操作情况下做出更大更改。 现在,你可以Genesis文件中找到需要动作,然后删除,移动或修改它们。

92930

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

这两个也是不能修改文件,它们构成了Genesis框架核心平台。 header 和 footer 之间是 html 代码封装代码和通过 do_action() 函数指明钩子”。...do_action() 函数作用是用“钩子(hook)”把需要执行动作函数(action)“勾入”到Wordpress中,用来执动作函数代码。...这个文件中有7个“钩子”,分别会把不同动作函数“勾入”wordpress中。我将在稍后解释什么是动作函数,现在让我们先简单总体看一下Genesis里典型钩子结构和加载过程。...每个“钩子”都可以将其他函数“勾入”进来以便添加一些功能。只需几行代码就可以移动网站各个部分。动作函数将在下次再讲。...他博客上这个系列文章已经很早了,2011年….8年前了,中间有不少东西可能都不准确了,最新版书我还没有拿到,不知道里面内容内容相对于博客有多少更新。。。

97841

WordPress二次开发之调用ajax

$in_footer:(可选)默认值:false,放置区块中。为true时,会出现在区最下方,但必须有wp_footer()钩子。...}) }) 上面js实现了当颜色输入框离开焦点时,对输入值进行判断 ajaxs使用url 为 wp_localize_script函数产生对象 需要注意是,这里必须使用jQuery.document.ready...(function())方式不能使用 $(function(){})这种方式经测不能引入jquery 处理ajax请求 这里我们不能之间admin-ajax.php中对ajax进行处理,这样做就是修改了核心文件...我们初始化时候将函数添加到这两个钩子上即可在插件中对ajax请求进行处理 构造函数中 public function __construct() { add_action(...= ""){ echo 'ok'; } //ajax 处理结束 wp_die(); } 测试结果 在前台也可以使用

85310

WordPress 通过模板文件和自带函数引入 cssjs 两种方法

该参数只WordPress不了解脚本情况时使用。默认值:None $deps(数组)(可选)脚本所依靠句柄组成数组;加载该脚本前需要加载其它脚本。若没有依赖关系,返回false。...默认值:false $in_footer(布尔型)(可选)通常情况下脚本会被放置区块中。如果该函数为true,脚本则会出现在区块最下方。要求主题在适当位置中包含有 wp_footer() 钩子。...3、加载样式到我们网站 我们不能在主题中随便找个地方使用 wp_enqueue_style() 函数 - 我们需要使用“动作”钩子。...还有我们可以使用各种用途三个动作钩子: wp_enqueue_scripts 用来在网站前台加载脚本和CSS admin_enqueue_scripts 用来在后台加载脚本和CSS login_enqueue_scripts...用来WP登录页面加载脚本和CSS 以下是这些钩子示例: <?

1.7K30

如何轻松自定义WordPress登录页面

Ø版本WordPress多年发展中,默认登录屏幕设计没有改变,仍然是简单和干净是不同屏幕尺寸作品。...但是,在为特定客户(特别是公司)构建网站时,如果您可以更改登录屏幕颜色方案以及与网站主题相匹配徽标,那会很好看,对? ---- 好,它可以轻松完成。...关于WordPress好处是后端每个部分都可以通过使用php 函数进行自定义。 今天教程中,我将向您展示如何以您希望方式自定义WordPress登录屏幕。...我们将使用login_enqueue_scripts钩子将CSS插入我们登录页面的头部以加载我们首选徽标。...为此,我们需要为我们自己CSS文件使用钩子。这将覆盖默认登录屏幕样式。 ?

2.7K20

留言订阅插件 -- Subscribe to Comments

Subscribe to Comments 2.1 这个插件可以让你读者留言之前通过选择一个选择框,然后得到以后留言 e-mail 通知。...安装 这个插件安装比较简单,大致如下: 把 subscribe-to-comments.php 上传到插件目录下 插件管理界面激活插件 可选,如果你WordPress主题没有 comment_form...>' 其中涉及到 comment_form 这个钩子,指的是你主题文件中 comments.php 是否有这个函数:<?...定制化 安装好之后,管理界面的 Options 下就会多出一个 subscribe to Comments 页面,通过这个页面你可以配置这个插件。 首先你可以输入通知邮件发送这个姓名和邮箱。...默认情况下,订阅留言选择框是未选上,你可以把选上,不过我建议不要把它选上,因为不是所 有的读者都熟悉你博客设置。我就是有段时间把它设上,被读者投诉, 。

61530
领券