显示自定义帖子类型Metabox数据

时间:2016-05-22 09:28:26

标签: wordpress metadata custom-post-type meta-boxes

我在页面模板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(); ?>

我已经尝试了一切。这只是我尝试的最新版本。我做错了什么?

更新:

好吧,所以我发现元数据没有保存。我不确定为什么,但我试着修理它,但它不起作用。我的修复使情况变得更糟。这是我的代码: `     public function save_metabox($ post_id,$ post){

    // 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  );

}
}

1 个答案:

答案 0 :(得分:2)

我相信您遇到的问题就在这条线上:

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

您似乎将get_the_ID$post->ID混合在一起。您还尝试回显阵列。

get_post_meta的第三个参数将确定返回的值是字符串还是数组。使用true返回单个值。

将其更改为:

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

在次要说明中,您尝试回复the_excerpt()等功能。您通常会发现以the_而不是get_the_开头的函数将直接输出而不是返回值。此外,the_excerpt()会自动添加段落标记。

替换它:

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

有了这个:

the_excerpt();