-1

投稿ページ(single.phpコード)に反映する多次元配列オプションを使用して、チェックボックスグループからデータを取得するためのヘルプが必要です。無線タイプは正常に機能していますが、チェックボックスグループタイプは機能していません。下部に、参照用にデータを投稿ページにクエリするラジオタイプのsingle.phpにあるサンプルコードを追加しました。

これが私のmetabox.phpコードからの配列です:

<?php
// array
$prefix = 'wtf_';
$meta_box = array( 'id' => 'site',
               'title' => 'Program Details',
               'page' => 'post',
               'context' => 'normal',
               'priority' => 'high',
               'fields' => array(
                        array('name' => 'Principal Return',
                                'desc' => 'Principal Return After Expiry or Not',
                                'id' => $prefix . 'principal',
                                'type' => 'radio',
                                'options' => array(
                                        array('name' => '  Yes    ', 'value' => 'Yes-after expiry'),
                                        array('name' => '  No    ', 'value' => 'No-included on the interest')
                                    )
                                ),
                        array(
                        'name' => 'Compounding',
                        'desc' => 'Choose if compounding is allowed or not',
                        'id' => $prefix . 'compounding',
                        'type' => 'radio',
                        'options' => array(
                             array('name' => '  Yes    ', 'value' => 'Allowed'),
                             array('name' => '  No    ', 'value' => 'Not Allowed'),
                             array('name' => '  Re-purchase', 'value' => 'Yes thru re-purchase')
                    )
                                ),
                             array ('name' => 'Payment Processors',  
                                    'desc'  => 'Payment Processsor Accepted',  
                                    'id'    => $prefix.'processors',  
                                    'type'  => 'checkbox_group',  
                                    'options' => array(
                                                    array('label' => ' Liberty Reserve ', 'value' =>'LR'),
                                                    array('label' => ' SolidTrustPay ', 'value' =>'STP'),
                                                    array('label' => ' EgoPay ', 'value' =>'EgoPay'),
                                                    array('label' => ' Perfect Money ', 'value' =>'PM'),
                                                    array('label' => ' Payza ', 'value' =>'Payza'),
                                                    array('label' => ' PayPal ', 'value' =>'PayPal'),
                                                    array('label' => ' Bankwire ', 'value' =>'Bankwire')
                                      ))))

// Callback function to show fields in meta box
function mytheme_show_box() {
global $meta_box, $post;

// Use nonce for verification
echo '<input type="hidden" name="mytheme_meta_box_nonce" value="',    wp_create_nonce(basename(__FILE__)), '" />';

echo '<table class="form-table">';

foreach ($meta_box['fields'] as $field) {
    // get current post meta data
    $meta = get_post_meta($post->ID, $field['id'], true);

    echo '<tr>',
            '<th style="width:20%"><label for="', $field['id'], '">', $field['name'], '</label></th>',
            '<td>';
    switch ($field['type']) {
    case 'text':
                echo $statetemt;
            break;
        case 'textarea':
                echo $statetemt;
            break;
        case 'select':
                echo $statetemt;
            break;
        case 'radio':
            foreach ($field['options'] as $option) {
                echo $statetemt; }
            break;
        case 'checkbox':
            foreach ($field['options'] as $option) {
                echo $statetemt;}
            break;
        case 'checkbox_group':  
             foreach ($field['options'] as $option) {  
                echo '<input type="checkbox" value="'.$option['value'].'" name="'.$field['id'].'[]" id="'.$option['value'].'"',$meta && in_array($option['value'], $meta) ? ' checked="checked"' : '',' />',$option['label']; }  
                echo '<br /><span class="description">'.$field['desc'].'</span>';  
            break;
    }


//From my single.php code  <<<<=================

<div class="sdinfo"><strong>Principal Return</strong>:<span><?php $principal = get_post_meta(get_the_ID(), 'wtf_principal', true); 
      if (isset($principal[0])) { 
        echo $principal ; 
} else if (isset($principal[1])) {
        $principal = get_post_meta(get_the_ID(), 'wtf_principal', true);
        echo $principal; 
       } else {_e('Not Available');} ?></span></div>
<div class="sdinfo"><strong>Program Started</strong>:<span> <?php $started = get_post_meta(get_the_ID(), 'wtf_started', true); if (isset($started[0])) { echo $started; 
                } else {_e('Not Available');} ?></span></div>
<div class="sdinfo"><strong>Compounding</strong>:<span>
<?php $compounding = get_post_meta(get_the_ID(), 'wtf_compounding', true); 
      if (isset($compounding[0])) { 
        echo $compounding ; 
                } else if (isset($compounding[1])) {
        $compounding = get_post_meta(get_the_ID(), 'wtf_compounding', true);
        echo $compounding; 
      } else if (isset($compounding[2])) {
        $compounding = get_post_meta(get_the_ID(), 'wtf_compounding', true);
        echo $compounding; 
      } else {_e('Not Available');} ?></span></div>
?>

これにより、次のような投稿メタからの出力が得られます: 管理者のスクリーンショット

これは私の投稿ページからの出力です。: 投稿ページのスクリーンショット

助けてください!..私はプログラマーではありません。詳細に答えを教えていただければ幸いです。よろしくお願いします。

4

1 に答える 1

0

var_dump($array)必要なのは、配列フィールドから必要なデータと場所を確認するために使用する配列を指すことだけです。

次に、関数を取得する必要がありforeach()ます。たとえば、データの配列を取得したい場合:

'priority' => 'high',例としてある必要があります:

echo $meta_box["priority"]これは配列の値として得られます:high

よくわからない場合や、配列の使用に慣れていない場合は、次のように簡単に使用できます。

foreach ($meta_box as $arr)
{
    var_dump($arr);

    #then play and manipulate how to grab a fields a data:
    foreach ($arr["fields"][""] as $fa)
    {
        var_dump($fa["name"]);
        var_dump($fa["desc"]);
        var_dump($fa["desc"]);
    }

    #...
}

var_dump()データの配列が不明な場合は、経由で取得する方法を学びます。

支払い処理業者 LR STP EgoP

echo $meta_box["fields"][""]["name"];

配列のデータを取得する必要があるよりも:

foreach ($meta_box["fields"][""]["options"] as $options)
{
    foreach ($options as $options_key)
    {
        foreach ($options_key as $opt_val)
        {
            $result .= ' '.$opt_val;
        }
    }

}
于 2013-02-22T19:40:24.347 に答える