这并不像人们想象的那么难解决。。。如果所有插件/主题都尊重最佳实践。
如果有,则所有链接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