1

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

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

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

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

1 回答 1

0

我认为没有一个简单的参数可以说“在此日期之前的所有帖子”,因此您应该实施posts_where_paged过滤器。在那里,您可以检查!(is_archive() || is_search()),因为这两个可以正常继续。对于其他部分,您添加 a" AND $wpdb->posts.post_date < NOW()"或类似的内容(但现在不要使用,因为这会隐藏今天晚些时候发生的事件,您可能不希望这样)。

在 WordPress Answers Stack Exchange 网站上提出了一个类似的问题(在 2010 年 8 月 20 日之前的私人测试版中,因此除非您预先注册,否则您无法访问它)。乔霍伊尔的建议很简单:

如果您想要做的只是为“放映时间”添加一个额外的日期,那么添加一个完全可以做到这一点的元框可能会更容易 - 使用发布日期来欺骗它可能会出现问题,因为 WordPress 会将其设置为每当使用未来的发布日期更新它时的“未来”状态(我认为),因此每次更新帖子时您都必须挂钩以将其重新设置。此外,这样您就可以按预期保留“发布日期”。

我可能只会使用meta_key, 和自定义元框。尽管这取决于显示帖子的查询的复杂程度。

如果您将 meta_value 设置为时间戳,您仍然可以按演出时间日期排序,或者选择在某个日期之前/之后:

$events = get_posts('post_type=events&meta_key=show_time&meta_value='
. strtotime( '+1 week' ) .
'&meta_compare=<&orderby=meta_value');

将从当前日期起不晚于一周内获得所有带有放映时间的“事件”。注意:以上内容未经测试,但 应该可以工作:)

(这个答案是社区维基,所以我不会因为仅仅转发乔所说的话而获得代表点数。)

于 2010-08-14T08:01:59.190 回答