2017-06-07 4 views
0

別のPHPファイルにいくつかのクラスを書いて、ユーザーがプラグインオプションページのフォームに記入したときのAPIコールを手伝ってくれます。 私はオプションページにいくつかの変数を含めて設定ファイルを持っています。 問題は私がファイルを必要とするとき、致命的なエラーはないので大丈夫だと思われますが、変数やクラスはアクション 'admin_menu'にフックする関数で使用できません。プラグインのWordpress管理オプションページを書くときにファイルを含める

require_once(plugin_dir_path(__DIR__) . 'product-dyno/config.php'); 
require_once(plugin_dir_path(__DIR__) . 'product-dyno/license.php'); 
require_once(plugin_dir_path(__DIR__) . 'product-dyno/member.php'); 


function product_dyno_plugin_menu() { 
    add_options_page('Product Dyno Options', 'Product Dyno', 
    'manage_options', 'activate-plugin-with-product-dyno', 
    'product_dyno_options'); 
} 
add_action('admin_menu', 'product_dyno_plugin_menu'); 


function product_dyno_options() { 

    $license = new License(); 

    if (!current_user_can('manage_options')) { 
     wp_die(__('You do not have sufficient permissions to access this page.')); 
    } 
    echo '<div class="wrap">'; 
    echo '<h2>Activate plugin '.$PLUGIN_NAME.'</h2>'; 
    echo '</div>'; 

    ....... 

$ PLUGIN_NAMEはconfig.phpから必須で、変数が定義されていないというエラーが表示されます。

奇妙なことに、クラスのコンストラクタ内で使用される変数もconfig.phpからインクルードされているので、そのクラスは含まれているように見えます。

すでに送信されているヘッダーやwpアクションの順序と関係があると思いますが、実際には動作できませんし、フォーラムでも同様の問題を見つけることはできません!

どのポインタも大変感謝しています!

答えて

0

私は、$ Plugin_nameはconfig.phpファイルで定義されていると考えていますが、このファイルで定義されている値はすべて手続き型関数では利用できません。

あなたの機能上のデータをつかむには、2つの方法があります:

  • 使用グローバル
  • (config.phpのクラスに立っている場合)は、グローバルを使用するには)(

を新しい設定を使用します:product_dyno_options()の先頭にglobal $PLUGIN_NAME;を追加します。

config.phpがクラスに含まれている場合は、ライセンスと同じ方法で使用してください。機能で

$config = new config(); 

後に続いて、あなたがしたい場所のようにそれを呼び出す:

$config->plugin_name; 

はそれが

を役に立てば幸い
関連する問題