alexsancho / wp-admin-no-ajax
一个WordPress插件,它简化了WP AJAX流程,并将请求定向到前端而不是管理后端。
v1.0.0
2018-02-09 17:49 UTC
Requires
- php: >=5.6
- composer/installers: ^v1.0.12
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2024-09-14 19:31:32 UTC
README
一个WordPress插件,它改变WP AJAX流程,并将ajax请求重写为自定义URL,而不是后端的/wp-admin/admin-ajax.php
。
安装
建议通过composer在WP项目中安装
$ composer require alexsancho/wp-admin-no-ajax
使用案例
- 将所有admin-ajax.php查询重写为自定义URL,以便您只允许
/wp-admin/
对特定的IP地址。 - 您可以使用此方法混淆试图利用admin-ajax.php漏洞的机器人。
配置
变量
此插件URL默认为/admin-no-ajax/
。您可以使用过滤器来更改它,或者您可以通过以下方式自行设置默认值:
// This turns the no admin ajax url to -> /ajax/ define('WP_ADMIN_NO_AJAX_URL','ajax');
注意:此处设置的值也可以被过滤,这只是为了设置自定义URL的起点。
注意2:在插件安装和进行其他更改后,请确保刷新您的固定链接,只需转到设置 > 固定链接 > 并保存即可,无需进行任何修改。
钩子和过滤器
您可以使用过滤器admin-no-ajax/keyword
来自定义URL。
<?php // This changes /admin-no-ajax/ -> /ajax/ add_filter( 'admin-no-ajax/keyword', 'my_custom_admin_no_ajax_url' ); function my_custom_admin_no_ajax_url( $ajax_url ) { return "ajax"; }
您可以使用admin-no-ajax/before
或admin-no-ajax/before/{action}
在ajax调用之前运行命令。
<?php // Writes log entries after hearthbeat action for debugging do_action( 'admin-no-ajax/before/heartbeat' , 'my_custom_admin_no_ajax_debug' ); function my_custom_admin_no_ajax_debug() { error_log( 'DEBUG | heartbeat action was run by: '.$_SERVER[“REMOTE_ADDR”] ); }