我浏览了很多帖子,在google上搜索了很多,但还是没能实现。我正在尝试为管理ajax创建一个重写规则。php,以实现此处所示的相同结果:
Adding admin-ajax.php to the frontend. Good or bad idea?
但是,我不想使用htaccess文件。相反,我需要通过动态添加规则(比如使用add\\u rewrite\\u rule)来实现这一点,例如,因为要调用的ajax函数位于我正在编写的插件中,我希望提供一个友好的URL来调用。
我似乎遵循了有关该方法的所有最佳做法。我在插件的激活和停用挂钩上钩住了规则刷新。还对初始化操作添加了路由:
add_rewrite_rule(\'/api\', \'/wp-admin/admin-ajax.php\', \'top\');
不过,我只得到了404。
编辑:我现在就是这样做的:
// rewrite rules and API hooks
add_action(\'init\', array(\'MYCLASS\', \'add_custom_rules\'), 1);
add_filter(\'query_vars\', array(\'MYCLASS\', \'add_custom_query_vars\'), 1, 1);
add_action(\'parse_request\', array(\'MYCLASS\', \'add_custom_parse_request\'), 1, 1);
在add\\u custom\\u rules上,我执行以下操作:
add_rewrite_rule(\'my-api.php$\', \'index.php?my-api=1\', \'top\');
在add\\u custom\\u query\\u vars上,我执行以下操作:
$query_vars[] = \'my-api\';
return $query_vars;
在add\\u custom\\u parse\\u请求时,我执行以下操作:
if (array_key_exists(\'my-api\', $wp->query_vars)) {
$action = $wp->query_vars[\'action\'];
$API = new myAPI();
$API->{$action}();
exit();
}
我还缺少什么?再次感谢。