2017-09-28 6 views
0

私はページエディタのカスタムメタボックスを設定しています。テキストフィールドに入力された値は正しく保存され、カスタムフィールドボックスに表示されます。しかし、更新後、カスタムメタボックス内のテキストフィールドは、保存されたテキスト文字列の代わりに「配列」という単語を表示します。テキストボックスの文字列のカスタムメタ値が保存されますが、保存後は「配列」として表示されます

screenshot

ここでのfunctions.phpからコード

function restaurant_meta_box_cb() 
{   
    global $post; 
    $values = get_post_custom($post->ID); 

    $text_name = isset($values['biz_name']) ? $values['biz_name'] : ''; 
    $text_addr = isset($values['biz_addr']) ? $values['biz_addr'] : ''; 

    // We'll use this nonce field later on when saving. 
    wp_nonce_field('my_meta_box_nonce', 'meta_box_nonce'); 
    ?> 
    <p> 
     <label for="biz_name">Restaurant Name</label> 
     <input type="text" name="biz_name" id="biz_name" value="<?php echo $text_name; ?>" /> 
    </p> 
    <p> 
     <label for="biz_name">Address</label> 
     <input type="text" name="biz_addr" id="biz_addr" value="<?php echo $text_addr; ?>" /> 
    </p> 

    <?php  
} 

答えて

0

get_post_customは常に単一の値の配列を期待していても、多次元配列を返します - 参考Codex: get_post_custom

は、あなたが持っているにもかかわらず、 (おそらく)とbiz_addrを文字列として設定すると、get_post_custom()は配列内の各値を返します。

1つの結果しか得られないことがわかっているので、最初の要素に直接アクセスすることができます。


$text_name = isset($values['biz_name'][0]) ? $values['biz_name'][0] : ''; $text_addr = isset($values['biz_addr'][0]) ? $values['biz_addr'][0] : ''; 
はFYI:あなたの問題とは関係のない、しかし、私は、あなたの住所ラベルに間違った for値を持って気づいた(それは "biz_addr" でなければなりませんが): <label for="biz_name">Address</label>

+0

それを解決したこと! –

+0

@AndrewRiley喜んで助けることができました!これで問題が解決したので、受け入れることを検討して、質問がサイトで解決済みとマークされていることを確認します。[誰かが私の質問に答えるときにはどうすればよいですか?](https://stackoverflow.com/help/someone-answers)を参照してください。我々はまた、いくつかのポイントを得るでしょう:) – FluffyKitten

+0

完了。私はそんな奴だ! ;) –

関連する問題