WordPress自定义帖子部分

时间:2016-08-22 15:53:19

标签: php wordpress posts

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

我已设置管理区域来创建帖子,它会显示在我的主题中,但我遇到了麻烦。它只显示最近的帖子,而不是循环播放所有帖子

我使用了一个帮助我构建它的指南。 adding editable areas这可能会帮助你们理解。

任何人都知道如何修复它,所以它会显示所有帖子,而不仅仅是最新的帖子?

到目前为止我的代码:

示例-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');

2 个答案:

答案 0 :(得分:1)

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

请注意while ( have_posts() )电话。这将使WordPress循环遍历查询中的所有帖子。

答案 1 :(得分:0)

是的,你错过了实际的循环。并且重置自定义查询也很好。在代码之后添加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();