我有一个事件类别,可以通过子类别(按举办活动的城市)进行搜索。我有'未来就是现在!'插件允许我发布未来的日期帖子,但希望我可以设置一个分页模板,当帖子“过期”时,它将不再显示在循环/存档中。
我也想知道你是否也可以从搜索结果中过滤掉这些帖子?
如果有帮助,这是我当前的活动页面代码:
<h2>Upcoming Events</h2>
<ul class="posts">
<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('showposts=' . $limit . '&paged=' . $paged .'&cat=1&order=ASC');
$wp_query->is_archive = true; $wp_query->is_home = false;
?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<li class="events_ticker" id="post-<?php the_ID(); ?>">
<span class="left">
<h3><?php the_time('F jS, Y') ?></h3>
<p><?php if (strlen($post->post_title) > 25) { echo substr(the_title($before = '', $after = '', FALSE), 0, 25) . '...';} else {the_title();} ?></p>
<?php global $more; $more = 0; the_excerpt(); ?>
<p><a href="<?php echo get_permalink(); ?>">Read More</a></p>
</span>
<a href="<?php echo get_permalink(); ?>"><?php if ( function_exists("has_post_thumbnail") && has_post_thumbnail() ) { the_post_thumbnail(array(143,110), array("class" => "right post_thumbnail")); } ?></a>
</li>
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/content_breaker_wide.png" alt=" breaker" class="content_breaker" />
<?php endwhile; ?>
</ul>
<!-- end events loop -->
<div class="navigation">
<p class="alignleft"><?php next_posts_link('< Next') ?></p>
<p class="alignright"><?php previous_posts_link('Next >') ?></p>
</div>
<?php endif; ?>
答案 0 :(得分:0)
我认为有一个简单的参数可以说“直到此日期之前的所有帖子”,因此您应该实施posts_where_paged
过滤器。在那里,您可以检查!(is_archive() || is_search())
,因为这两个可以正常继续。对于其他部分,您添加" AND $wpdb->posts.post_date < NOW()"
或类似的东西(但现在不要使用,因为这将隐藏今天晚些时候发生的事件,您可能不希望这样做。)
A similar question was asked on the WordPress Answers Stack Exchange site(私人测试版直到2010年8月20日,所以除非您预先注册,否则无法访问它)。 Joe Hoyle的建议很简单:
如果你想要做的就是添加一个 'show times'的额外日期,可能是 更容易添加一个元框 确切地说 - 使用发布日期 欺骗它可能是潜在的 有问题的,因为WordPress会设置它 到了“未来”的状态 更新了未来的发布日期(I 想),所以你必须要挂钩 每次更新帖子以设置它 再次回来。还有,那样你就可以 保留“发布日期”的内容 意图。
我可能会使用
meta_key
, 和自定义元框。虽然它 取决于你的查询有多复杂 显示帖子。如果将meta_value设置为 时间戳,您可以通过节目订购 时间日期仍然,或选择之前/ 在某个日期之后:
$events = get_posts('post_type=events&meta_key=show_time&meta_value=' . strtotime( '+1 week' ) . '&meta_compare=<&orderby=meta_value');
将获得showtime的所有“事件” 不迟于当前一周 日期。注意:以上是未经测试的,但是 应该工作:)
(这个答案是社区维基,所以我不会因为重新发布Joe所说的内容而得到回复。)