如何在循环帖子后获得wordpress页面ID?

问题描述:

我在Wordpress中有一个页面,用于在特定类别中循环发布帖子。在sidebar.php中,我想获取一个子页面列表并将它们显示为一个菜单。但是,使用get_the_ID()或$ post-> ID时,它将返回循环的最后一个帖子的ID,而不是页面。如何在循环帖子后获得wordpress页面ID?

我在页面中放置帖子后,如何获得侧栏中页面的ID?

如果您使用页面模板,你应该做以下事情:

  1. 建立在你的页面模板的顶部一个全局变量(我假设你正在使用)
  2. 获取查询对象的ID并将其分配给该变量
  3. 全球化的变量在你的sidebar.php文件
  4. 使用在get_posts或query_posts变量函数显示子页面(使用正确的参数是post_parent

所以,把这个在你的页面模板的顶部:

<?php 
global $xyz_queried_object_id, $wp_query; 
$xyz_queried_object_id = $wp_query->get_queried_object_id(); 
?> 

然后把这个在您的侧边栏:

<h2><?php _e('Subpages') ?></h2> 
<ul> 
    <?php 
    global $xyz_queried_object_id; 
    $subpages = new WP_Query(array('post_type'=>'page','post_parent'=>$xyz_queried_object_id)); 
    while($subpages->have_posts()) { 
     $subpages->the_post(); 
     ?> 
     <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
     <?php 
    } 
    ?> 
</ul> 

这应该得到你想要的东西。

+0

不知道为什么我不认为使它成为查询帖子的全局变量。谢谢!完美工作。 – Kristopher 2010-01-13 17:43:17

我做到了,像这样: 得到您范围wp_query变量:

global $wp_query; 

然后

$wp_query->post->ID 

是你PAGEID,要知道,这可能是一个帖子ID 当你”关于你的主帖子页面。