这可能最适合您,也可能不适合您,自定义端点通常对轮询和其他类型的情况有用,而不适用于常规ajax工作。您可能更愿意研究其他方法,如缓存来自API的结果。
同样从我与Mark的讨论中,我同意在公共插件中使用此插件不是一个很好的主意,因为它需要在用户端进行大量更改,如果您正在构建特定于站点的解决方案,则可以使用此插件。
为了了解更多信息,我在WP-Ajax中添加了替代项。
您可以使用WordPress常量SHORTINIT
如果你不想加载插件。在这种情况下,这可能无助于加快ajax请求的速度,因为您正在发出注释中提到的HTTP请求。
如果SHORTINIT
设置为true时,WordPress不会加载Ajax请求的大部分内容,只加载最少量的内容。
如果您需要使用任何其他功能,只需从WordPress加载所需的文件即可。
这里有一篇很好的文章可以帮助您入门,这里有3种不同的方法:https://deliciousbrains.com/wordpress-rest-api-vs-custom-request-handlers/
我只想发布一篇文章的摘录,介绍SHORTINIT
.您需要在主题或插件中创建一个以该代码开头的PHP文件,并为其余处理添加处理程序。
// Set SHORTINIT to true
define( \'SHORTINIT\', true );
// get the path for wp-load.php, considering this file in root directory of plugin/theme
$wp_root_path = dirname( dirname( dirname( __FILE__ ) ) );
// Load wp-load.php file (which loads wp-config.php and bootstraps WordPress)
require( $wp_root_path . \'/wp-load.php\' );
// $wpdb class for any query you might need
global $wpdb;
// Do your PHP code for rapid AJAX calls with WP!
function geo_ip_api(){
global $bannerRequiredRegions;
global $ipBlackList;
$isInEU = \'null\';
$ipAddress = get_ip_address();
if(!in_array(strtolower($ipAddress), array_map(\'strtolower\', $ipBlackList))) {
try {
require_once \'HTTP/Request2.php\';
/* retrieving values from wp-config */
$api_url = GEO_API_URL;
$request = new Http_Request2($api_url);
$url = $request->getUrl();
//sending HTTP request logic here. No dependency on wordpress
}
catch (Exception $ex){
//TODO: put log here
}
}
echo $isInEU;
}