2017-09-29 8 views
-1

OOPアプローチを使用してプラグインを開発していますが、many redirectsという問題が発生しています。wp_redirect()関数を使用すると、リダイレクトされる可能性があります

プラグインを有効にしていくつかの条件が満たされない場合、私のプラグインをページにリダイレクトします。私は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() 
} 

何をしないのですか?

EDIT:私がロードしているページに関係なく、init_plugin関数は起動していることを理解しています。その結果、ユーザーはサインアップにリダイレクトされ、多くのリダイレクトエラーメッセージが表示されます。これをどうすれば解決できますか?

答えて

0

上記のコードで最初にファイルを呼び出すと、この問題が発生すると考えられます。

あなたはあなたのコードは、それは非常に簡単ですinclude_once('path-to-your-file/your-php-file.php')

0

であるファイルを呼び出す必要があります。あなたは、adminが開始されるたびに、/ wp-adminのすべてのページに文字通りチェックが行われ、AJAXの呼び出しごとに(私は思うが)チェックが行われます。 プラグイン管理メニューの特定のページでのみこれを確認する必要がある場合は、$current_screenグローバルまたはget_current_screen()を使用し、オブジェクトのプロパティーIDを使用して、現在のページがチェックを行う場所であるかどうかを確認できます。 Query Monitor(管理画面の下)を使用して、ページの正確なIDだけでなく、デバッグ時に役立つたくさんのものを見ることができます。

関連する問題