我正在创建一个WP插件,它只会在特定的URL上加载其他插件。这些插件在WP管理插件中是停用的,只有在访问特定页面时才会加载。
在我的插件的类构造函数中:
$uri = $_SERVER['REQUEST_URI'];
$exp = explode('/', $uri);
$uri = $exp[2];
$options = get_option( $this->plugin_name );
$key = array_search( '/'.$uri.'/', array_column($options, 'url') );
$plugin_dir = $options[$key]['plugin']; // this prints plugin file directory ex. /MyPlugin/myplugin.php
include( WP_PLUGIN_DIR . $plugin_dir);
上面的代码在特定的URL /页面上加载插件。意味着变量$plugin_dir
抓住了正确的目录。但是,当有来自该插件的AJAX请求时会出现问题。防爆。当我尝试使用ajax请求删除项目时,它返回Error 404 Bad request
。
奇怪的是,上面几乎相同的代码,但这一次,我手动将插件目录分配给变量:ex。
$uri = $_SERVER['REQUEST_URI'];
$exp = explode('/', $uri);
$uri = $exp[2];
$options = get_option( $this->plugin_name );
$key = array_search( '/'.$uri.'/', array_column($options, 'url') );
$plugin_dir = '/MyPlugin/myplugin.php'; // manually place the plugin file dir
//same output as $plugin_dir = $options[$key]['plugin'];
include( WP_PLUGIN_DIR . $plugin_dir);
但这一次,插件工作得很好。没有Ajax错误的请求错误。
可能的解释是什么?有没有关于这个问题的解决方案,以便我可以根据请求URI从wp选项中动态获取插件文件目录。
另外,另一个问题。而不是REQUEST URI,我想要获得POST / PAGE ID,但一切都返回NULL /空。仍然在构造函数内部,我尝试了不同的方法来获取页面ID:
global $post;
var_dump($post->ID); //returns NULL
global $wp_query;
var_dump($wp_query->post->ID); //returns NULL
echo get_the_ID(); //returns empty/NULL
有没有办法如何正确获取POST / PAGE细节,甚至只是ID?
谢谢。