WordPress 自定义帖子部分

WordPress custom posts section

我正在尝试创建一个类似于 posts WordPress 提供的默认内容区域的额外内容区域。我的结果是在页面上循环这些 posts 而不需要 WordPress 默认 posts 因为它们将用于我的博客。

我已经设置了管理区域来创建 posts,它显示在我的主题中,但我遇到了问题。它只显示最近的 post,而不是循环所有 posts

我使用了帮助我构建它的指南。 adding editable areas 可以帮助大家理解。

任何人都知道如何修复它,所以它显示所有 post,而不仅仅是最近的?

到目前为止我的代码:

示例-page.php

<p>   
  <?php $content_block = new WP_Query(array('post_type'=>'content-block', 
  'posts_per_page'=>10, 'content-position'=>'about-bottom'))?>
  <?php if($content_block->have_posts()): $content_block->the_post(); ?>
  <?php the_content();?>
  <?php endif; ?>
</p>

functions.php

function initialize_content_blocks()  {
  register_post_type('content-block', array(
    'labels' => array(
      'name' => 'Page Content ',
      'singular_name' => 'Content Block',
      'add_new_item' => 'Add New Content Block',
      'edit_item' => 'Edit Content Block',
      'new_item' => 'New Content Block',
      'view_item' => 'View Content Block',
      'search_items' => 'Search Content Blocks',
      'not_found' => 'No content_blocks found',
      'not_found_in_trash' => 'No content blocks found in Trash',
      'view' => 'View Content Block'
    ),
    'publicly_queryable' => false, 
    'exclude_from_search' => true,
    'public' => true,
    'rewrite' => false, 
    'supports' => array('title', 'editor'),
    'taxonomies' => array()
  ));

  register_taxonomy('content-position', array('content-block'), array(
  'rewrite' => false,
  'labels' => array(
    'name' => 'Content Positions',
    'singular_name' => 'Content Position',
    'search_items' => 'Search Content Positions',
    'popular_items' => 'Popular Content Positions',
    'all_items' => 'All Content Positions',
    'edit_item' => 'Edit Content Position',
    'update_item' => 'Update Content Position',
    'add_new_item' => 'Add New Content Position',
    'new_item_name' => 'New Tag Content Position'
  ),
  'show_tagcloud' => false,
  'hierarchical' => true
));

}
add_action('init', 'initialize_content_blocks');

您错过了结果的实际循环,请参阅 have_posts() 文档中的示例。

通知while ( have_posts() )来电。这将使 WordPress 循环遍历查询中的所有帖子。

是的,您错过了真正的循环。重置您的自定义查询也很好。在您的代码后添加 wp_reset_postdata()。

$content_block = new WP_Query(array('post_type'=>'content-block' ... ));

if( $content_block->have_posts() )
{
    while( $content_block->have_posts() )
    {
        $content_block->the_post();
        the_content();
    }
}

wp_reset_postdata();