我正在使用OOP方法开发一个插件,但我遇到了many redirects
问题。
在插件激活后,如果某些条件不满足,我希望我的插件重定向到页面。我一直收到To many redirects...
错误消息。
我的代码如下所示:
if (! defined('WPINC')) die;
if (! class_exists('AwesomePlugin')) {
class AwesomePlugin {
public function __construct(){
//Register admin menus
add_action('admin_menu', [$this, add_menu]);
//Init plugin
add_action('admin_init', [$this, 'init_plugin']);
}
/**
*
* Init plugin
*/
public function init_plugin(){
if(!isset(get_option("some_option"))){
wp_redirect("admin.php?page=some-page"); exit; //This gives too many redirects
}
wp_redirect('admin.php?page=dashboard'); exit;
}
/**
* Add menu and submenu items
*/
public function add_menu(){
add_menu_page(
'Dashboard', 'Dashboard', 'manage_options', 'dashboard',
[__CLASS__, 'load_dashboard_view'],
plugins_url('logo.png', __FILE__)
);
add_submenu_page(
'', 'Signup page', 'Signup page', 'manage_options',
'sign-up', [__CLASS__, 'load_signup_view']
);
}
/**
* Dashboard page
*/
public function load_dashboard_view(){
include(plugin_dir_path(__FILE__) . 'dashboard.php');
}
/**
* Signup page
*/
public function load_signup_view(){
include(plugin_dir_path(__FILE__) . 'signup.php');
}
}
AwesomePlugin()
}
我错过了什么?
编辑:据我所知,无论我正在加载哪个页面,init_plugin函数都会继续触发。因此,它会将用户重定向到注册,从而导致许多重定向错误消息。我该如何解决这个问题?
答案 0 :(得分:0)
我认为当您最初使用上述代码调用文件时会导致此问题。
您应该使用include_once('path-to-your-file/your-php-file.php')
答案 1 :(得分:0)
非常简单。每次启动管理员时都会检查一下,确切地说是/ wp-admin和(我认为)每个AJAX调用的每一页。
如果您只需要在插件管理菜单的某个页面上进行检查,则可以使用$current_screen
全局或get_current_screen()
并使用对象的ID
属性来检查当前页面是否为你想在哪里办理支票。您可以使用Query Monitor(在管理员屏幕下)查看您的页面确切ID以及调试时可能会发现的许多其他内容。