我开发了一个自定义帖子类型的主题。其中一个post_types称为事件。
我不想在名为“即将发生的事件”的“页面”中显示最新事件。所以我创建了这个名为“Events”的模板文件。现在我需要修改全局wp_query,以便我返回最后一个事件。
这就是我的single.php的样子:
<?php
get_header();
setup_postdata($post);
get_page_post_content();
get_footer();
?>
在查看事件时工作正常,因为自定义帖子类型为“普通”。这是我的模板文件,应该包含最新的事件:
<?php
/*
* Template Name: Event
*/
?>
<?php
global $wp_query;
$wp_query = new WP_Query('post_type=event&posts_per_page=1');
include 'single.php';
?>
然而,这不能按预期工作,因为我的模板的其他部分取决于“is_single()”等属性,这种情况返回false,因为查询是从页面调用的。我不知何故需要设置查询,以便更改这些属性。任何人都知道如何或如何解决这个问题?
谢谢! :d
答案 0 :(得分:1)
将以下代码放在模板文件中。
<?php
/**
Template Name: Event
*/
get_header();
?>
<div id="content" >
<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
query_posts('post_type=event&paged='.$paged.'&posts_per_page=10');
if (have_posts ()) :
while (have_posts ()) : the_post(); ?>
<div <?php post_class() ?>>
<div class="post-title">
<h2 class="alignleft"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
</div><!-- .post-title -->
<div class="post-content">
<?php the_excerpt('read more');?>
</div>
</div><!--end of .post_class -->
<div class="post-meta">
<p class="alignright"><a class="readmore" title="<?php get_the_title();?>" href="<?php echo get_permalink( $post->ID );?>" rel="nofollow">Read</a></p>
<span class="alignright comment-cnt"><?php comments_popup_link( 'No Comments', '1 Comment', '% Comments' ); ?></span>
<div class="clear"></div>
</div><!-- end of .post-meta -->
<?php
endwhile;
endif;
?>
</div>
<div class="clear"></div>
</div>
<?php get_footer(); ?>