如何重命名WordPress AJAX URL?

时间:2019-04-05 作者:Johnny97

我目前正在寻找更改/隐藏默认WordPress的方法admin-ajax.php URL。我想这样做以删除admin 当我使用AJAX URL从我的服务器读取例如一个文件时,它可以防止我的客户产生误解。在这种情况下,URL具有admin前缀,这有点令人困惑。

因此,AJAX URl应如下所示:ajax.php

我搜索了一下,但找不到任何有用的信息。因此,我无法向您显示任何相关代码。但当我得到它时,我会更新我的问题以帮助其他人。

也许有人以前做过这件事,可以给我一些有用的提示,以便我尽快实施?这将是非常棒的!

2 个回复
SO网友:Krzysiek Dróżdż

这并不像人们想象的那么难解决。。。如果所有插件/主题都尊重最佳实践。

如果有,则所有链接admin-ajax.php 生成时使用admin_url 作用该函数内部有一个钩子,因此我们可以修改它返回的url:

// This will change the url for admin-ajax.php to /ajax/
function modify_adminy_url_for_ajax( $url, $path, $blog_id ) {
    if ( \'admin-ajax.php\' == $path ) {
        $url = site_url(\'/ajax/\');
    }

    return $url;
}
add_filter( \'admin_url\', \'modify_adminy_url_for_ajax\', 10, 3 );
所以现在我们必须教WordPress处理这些请求。我们可以使用.htaccess 这样做。这一行应该可以做到:

RewriteRule ^/?ajax/?$ /wp-admin/admin-ajax.php?&%{QUERY_STRING} [L,QSA]
所以现在,所有AJAX请求都应该显示为/ajax/ 而不是wp-admin/admin-ajax.php

SO网友:Rick Hellewell

谷歌把我带到了这个地方,它通过一个插件来实现。https://github.com/devgeniem/wp-no-admin-ajax

由于它是开源的,您可以看看他们是如何做到这一点的。或者直接使用插件。

没有这方面的经验。“默默无闻的安全”不是我要做的事情之一。但他们的过程可能对你有用。如果您计划将文件复制到其他地方,请注意您可能需要在WP更新后重新复制。

补充:不过,我喜欢Krzysiek Dródż的回答。

相关推荐

Setting custom canonical urls

我有一个页面,可以请求和显示数据库中的信息。一切都很好,但我在为这个页面及其URL(包含参数)设置自定义规范URL时遇到了一些问题。示例:https://example.com/primary-pagehttps://example.com/primary-page?requested_id=1https://example.com/primary-page?requested_id=2https://example.com/primary-page?requested_id=3 等等“requested