2016-05-22 1 views
0

ページテンプレートwp_queryにメタボックスデータを表示する際に問題が発生しました。私はこのエラーを取得する:カスタムポストタイプメタボックスデータを表示

注意:ここでは、文字列への変換アレイ

は私のコードです:

<?php 

    // WP_Query arguments 
    $args = array (
     'post_type'    => array('portfolio'), 
     'ignore_sticky_posts' => true, 
     'posts_per_page' => '10', 

); 

    // The Query 
    $portfolio_query = new WP_Query($args); 

    // The Loop 
    if ($portfolio_query->have_posts()) { 
     while ($portfolio_query->have_posts()) { 
      $portfolio_query->the_post(); 

    echo '<div id="portfolio">'; 
    echo '<div class="featured_img">';  
    echo '<a href="' . get_the_permalink() . '">' . " " . get_the_post_thumbnail() . '</a>'; 
    echo '</div>'; 
    echo '<div class="portfolio">'; 
    echo the_title('<h2>', '</h2>'); 
    echo '<p>' . the_excerpt() . '</p>'; 
    echo '<p>' . get_post_meta(get_the_ID($post->id , 'project_metabox', false)) . '</p>'; 
    echo '</div>'; 
    echo '</div>'; 

     } 
    } else { 
     echo "<h1>There are no portfolio pieces to view.</h1>"; 
    } 

    // Restore original Post Data 
    wp_reset_postdata(); ?> 

私はすべてを試みました。これは私の試みの最新バージョンです。私は間違って何をしていますか?

UPDATE:

さてさて、私はメタデータが保存されていませんがわかりました。なぜ私は正確にはわからないが、私はそれを修正しようとしたが、それは動作していない。私の修正はそれを悪化させた。ここに私のコードは次のとおりです。 ` パブリック関数save_metabox($ post_idの、$ポスト){

// Check if it's not an autosave. 
    if (wp_is_post_autosave($post_id)) 
     return; 

    // Sanitize user input. 
    $project_new_web_design = isset($_POST[ 'project_web_design' ]) ? 'checked' : ''; 
    $project_new_web_development = isset($_POST[ 'project_web_development' ]) ? 'checked' : ''; 
    $project_new_digital_art = isset($_POST[ 'project_digital_art' ]) ? 'checked' : ''; 
    $project_new_graphic_design = isset($_POST[ 'project_graphic_design' ]) ? 'checked' : ''; 


    // Update the meta field in the database. 
    update_post_meta($post_id, 'project_web_design ', $project_new_web_design ); 
    update_post_meta($post_id, 'project_web_development ', $project_new_web_development ); 
    update_post_meta($post_id, 'project_digital_art ', $project_new_digital_art ); 
    update_post_meta($post_id, 'project_graphic_design ', $project_new_graphic_design ); 

} 
} 

答えて

2

は、私はあなたが抱えている問題は、このライン上にあると信じて:

echo '<p>' . get_post_meta(get_the_ID($post->id , 'project_metabox', false)) . '</p>'; 

あなたが持っているように見えますget_the_IDおよび$post->IDを一緒に混合する。また、配列をエコーし​​ようとしています。

get_post_metaの3番目のパラメータは、返される値が文字列か配列かを判断します。単一の値を返すにはtrueを使用してください。

変更して:マイナーノートで

echo '<p>' . get_post_meta(get_the_ID(), 'project_metabox', true) . '</p>'; 

あなたはthe_excerpt()のような機能をエコーし​​ようとしています。通常、get_the_の代わりにthe_で始まる関数は、値を返す代わりに直接出力されます。さらにthe_excerpt()は段落タグを自動的に追加します。

これを置き換えます。これにより

echo '<p>' . the_excerpt() . '</p>'; 

the_excerpt(); 
関連する問題