2011-12-16 22 views
0

これはWordPressのlingoを使用していますが、PHPに基づくコアな質問です。私は自分のサイトのバックエンドに、 "本部"として特定の場所(WordPressのカスタム投稿タイプ)を保存しているという選択肢があります。私は、次のような値を格納しています:単一の配列値を扱う

function options_headquarters() { 
    foreach(get_field('option_headquarters','options') as $post_object) { 
     $options_headquarters = $post_object->ID; 
     return $options_headquarters; 
    } 
} 

私は上のあいまいだことはある - 私のオプションは一つの値だけをつかむことを許可されているので、(オプションは1つだけのドロップダウンするように構成されている) - への代替があります特定の配列値を取得するためにforeach文を使用し、それをpost_objectに適用しますか?

ありがとうございます!

答えて

1
function options_headquarters() { 
    $options = get_field('option_headquarters','options'); 
    $options_hq = isset($options[0]) ? $options[0]->ID : NULL; 
    return $options_hq; 
} 
+0

恐ろしい!ただ一つの簡単なフォローアップの質問(私はあなたが普通のWPユーザーではないことを読んだので、他の場所でこれを参照する必要があるかどうか私に知らせてください) - あなたが 'options [0] - > ID 'それは' $ post_object-> ID'をどのように参照していますか?私はこれを考えてみようとしています。私は '$ options_hq = $ options [0];'に変更し、実際に働いていました。 'ID'テーブルには入っていないので、実際の' get_field() '関数はすでにそれを返しています私はちょっと混乱していると思う;) – Zach

+0

'get_field( 'option_headquarters'、 'options')'は配列を返すので、元のコードは単純にその配列を 'foreach'でループします。 '$ options [0]'はループを控え、 "返された配列の最初の要素が必要です" ... "0"キーは数値的に配列された配列の最初のものです。私が 'isset($ options [0])'を使用したのは、 'get_field'が空の配列を返す機会がないことです(データベースのフィールドに値が存在しないため)配列。これらのいずれかが起こった場合、 'isset'はPHPが警告または通知を出さないようにします – rdlowrey

+0

本当に説明を感謝します。間違いなく@Felix Klingのやり方も見ていきます。私は "コードコンプリート"という本を購入しました。 :) – Zach

1

だけ配列を取得し、最初の要素にアクセス:

$post_object = array_pop(get_field('option_headquarters','options')); 

リファレンスarray_pop

+0

+1非常にきれいに。考えられる唯一のことは、値が見つからない場合にWordpressの 'get_field'関数が配列を返さない場合PHPの警告を得ることができることです。私はWPの内部の仕組みがどう働いているのか分かりません... – rdlowrey

+0

*もし配列が空の場合(または配列でない場合)、NULLが返されます。*、配列がない場合でも問題ないと思います返されます。もちろん、 '$ post_object'をテストしなければなりません。しかし、私はWP APIのいずれかの洞察力を持っていません。 –

+0

array_pop docs:*配列以外で呼び出されたときに警告が生成されます* – rdlowrey

関連する問題