(Wordpress)仅显示存档中的未来帖子和搜索结果

时间:2010-08-03 01:38:44

标签: wordpress templates plugins posts

我有一个事件类别,可以通过子类别(按举办活动的城市)进行搜索。我有'未来就是现在!'插件允许我发布未来的日期帖子,但希望我可以设置一个分页模板,当帖子“过期”时,它将不再显示在循环/存档中。

我也想知道你是否也可以从搜索结果中过滤掉这些帖子?

如果有帮助,这是我当前的活动页面代码:

<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; ?>

1 个答案:

答案 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所说的内容而得到回复。)