2016-08-17 4 views
0

Wordpressテーマを開発していますが、私の変数をテーマファイルの中に再利用するための関数に変数の一部を保存しようとしています。同じ変数は何百もの時間を費やして作らずにグローバルです。私はそれが悪い習慣であると読んだ。Wordpress - すべてのテーマファイル(グローバルなし)で変数を使用できるようにする

今のところ私はadd_actionですが、の結果はです。私が意味する

do_action('run_pms_variables', $uid); 

、あなたは右の方法に私に対処することができますように私のfunctions.php

add_action('run_pms_variables', 'pms_variables_function'); 
function pms_variables_function ($uid) { 
    $the_group_uid = isset($_COOKIE["v_group_id"]) && !empty($_COOKIE["v_group_id"]) ? trim(strip_tags($_COOKIE["v_group_id"])) : "";  
    $session_detail = vpb_get_the_user_detail($uid); 
    $session_username = strlen($session_detail[0]) > 40 ? ucfirst(substr($session_detail[0],0,40)) : ucfirst($session_detail[0]); 
    $session_uid = $session_detail[1]; 
    $session_email = $session_detail[2]; 
    $session_photo = $session_detail[3]; 
    $session_country = $session_detail[4]; 
    //$session_usernames = explode(' ', $session_detail[0]); 
    $session_firstname = get_user_meta($uid,'first_name', true); 
    $session_lastname = get_user_meta($uid,'last_name', true); 
} 

、私のファイルに最終的に使用することにあるだろうか?ありがとう。

答えて

1

クラスを作成し、そのクラスのグローバルオブジェクトを宣言し、すべての変数をそのクラスの属性/プロパティとして保存します。

どこからでも、グローバルオブジェクトを取得できます。

すべての変数はその内部に格納されています。

+0

私はこのようにしています。ありがとう。 – XiLab

1

あなたは桃とリンゴを混合しています。 WordPressのフック、アクション、フィルタはWordPressのコアをあなたの望むように変更するためのもので、テンプレートのどこかにデータを保存するためのものではありません。

これを行うには、WordPressインストールのデータベースに値を格納するだけです。これを行うには、WPのデータベースに物を格納するためのセキュリティ機構である "Nonce"機能に慣れておく必要があります。

そこにはhundretsと何千ものチュートリアルがあり、その方法を示しています。

いくつかの数値または短い文字列を保存するだけの場合は、PHPデータが戻ってくるときに、HTMLデータ*オブジェクトを使用してデータを保存できます。サイドノートとして

-1
add_action('run_pms_variables', 'pms_variables_function'); 
function pms_variables_function ($uid) { 
    class GlobalVariables{ 
    function __construct ($uid){ 
     $this->the_group_uid = isset($_COOKIE["v_group_id"]) && !empty($_COOKIE["v_group_id"]) ? trim(strip_tags($_COOKIE["v_group_id"])) : ""; 
     $this->session_detail = vpb_get_the_user_detail($uid); 
      $this->session_username = strlen($session_detail[0]) > 40 ? ucfirst(substr($session_detail[0],0,40)) : ucfirst($session_detail[0]); 
     $this->session_uid = $session_detail[1]; 
     $this->session_email = $session_detail[2]; 
     $this->session_photo = $session_detail[3]; 
     $this->session_country = $session_detail[4]; 
     //$session_usernames = explode(' ', $session_detail[0]); 
     $this->session_firstname = get_user_meta($uid,'first_name', true); 
     $this->session_lastname = get_user_meta($uid,'last_name', true); 
     }  
    } 
    return GlobalVariables($uid); 
} 

//and to access: 

$global_variables = do_action('run_pms_variables', $uid); 

echo $global_variables->the_group_uid; 

、定義のグローバル変数はどこでもアクセスできる変数ですされ、他のオプションは、代わりにpms_variables_function内(あなたのほとんどは、変数がセッション固有見ているような)スーパーグローバル$_SESSIONで変数を設定することが含まクラス属性を設定する。

+0

WordPressでは、do_action()は何も返しませんので、このコードは機能しません。 – trysmudford

+0

間違った方法で、値を返すアクションを実行しますか? – Mickey

関連する問題