2016-09-09 13 views
0

私はJobesプラグインにカスタムフィールドを適用するために、いくつかのコードを実行するthemesディレクトリにwordpress関数ファイルを持っています。Wordpress関数が変数で、別のファイルからアクセスできない

コードは正常に動作し、すべてのデータが入力できるようになり、データはフロントエンドに表示されますが、表示する場所は表示されません。

私はこの機能ファイルを別のPHPファイルに含めようとしましたが、フロントエンドでその外観をデザインしています。しかし、ファイルをインクルードするときに、変数にアクセスできず、変数名をエコーし​​ていても何も表示されません。

私はセッションを使用しようとしましたが、これは動作しませんか?

function display_job_salary_data() { 
global $post; 

$salary = get_post_meta($post->ID, '_job_salary', true); 
$salary = number_format($salary); 

if ($salary) { 
echo esc_html($salary); 
} 
} 

給与は、私は別のPHPファイルにアクセスする必要のある変数

+0

あなたは本当に私たちにいくつかのコードを表示する必要があります。関数の外観はどうなっていますか?どのように変数を出力しようとしていますか?変数が関数の中にある場合、関数の外で変数にアクセスすることはできません。 –

+0

関数内にあるので、関数の外から引き出すことができますか? – miotk

+0

関数から返すことができます。私が言ったように、いくつかのコードを見る必要があります.. –

答えて

1

変数は関数内で内側に作成されると、それはその関数の範囲内でのみアクセス可能ですです。

他の方法で値を使用する場合は、関数が値を返す必要があります。

関数名はdisplay_で始まるので、何かを返すと直感的ではないので、2つの異なる関数に分割します。

最初の関数は、給与データを取得し、返します。

function get_job_salary_data() { 
    global $post; 

    $salary = get_post_meta($post->ID, '_job_salary', true); 
    $salary = number_format($salary); 

    return $salary; 
} 

第二の機能は、給与データを出力します(それは以前と同じように)

function display_job_salary_data() { 
    // Get the salary data from our previous function 
    $salary = get_job_salary_data(); 

    if ($salary) { 
     echo esc_html($salary); 
    } 
} 

あなたは(関数を含むファイルが含まれている限り)給与データを得ることができます:

// Get the salary data 
$salary = get_job_salary_data(); 

// ...or just output it, just like before 
display_job_salary_data(); 

変数のスコープの詳細を読むために、私はここで主題についてPHPのドキュメントを読んでお勧めします:http://php.net/manual/en/language.variables.scope.php

+0

それはありがとう!エコーが結果を2回表示しているので、今問題のみです。 1つはページの上部にあり、もう1つは実際に表示したい場所ですが、エコーは表示されませんがどこにも表示されません。 – miotk

+0

これは、 'display_job_salary_data()'を2回呼び出すか、1回だけ呼び出すと、 'get_job_salary_data()'の結果を手動でエコーする場合にのみ発生します。 –

+0

これは一度しか呼び出されていないので、なぜページの上部に表示されているのかわかりません。私は関連するすべてのファイルを調べましたが、実際に表示できるようにしたい以外の 'display_job_salary_data(); 'はありません – miotk

関連する問題