如何在一定时间内显示分区

时间:2012-07-18 作者:Nisha_at_Behance

我正在建立一个新闻网站。我想在短短几个小时内显示一篇来自“prime”类别的特色文章。之后应过期或从该部分中消失。

请看一看here 你可以看到上面的帖子。

 <div id="prime_news" class="col-full">
 <?php $the_query = new WP_Query(\'category_name=prime&showposts=1&orderby=post_date&order=desc\'); 
    if ($the_query->have_posts()) :?>
<div id="prime_headline">
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<?php endwhile; ?>
<div class="prime_left fl">
<h3><a href="<?php the_permalink(); ?>" title="" class="title_slide"><?php the_title(); ?></a></h3>
<p class="prime_excerpt"><?php echo limit_words(get_the_excerpt(), \'190\'); ?><span  class="read-more"><a href="<?php the_permalink(); ?>"><?php _e(\'&#2310;&#2327;&#2375;  &#2346;&#2338;&#2375;...\', \'BharatNews\'); ?></a></span></p></div>
<div class="prime_right fr"><?php bharti_get_image(\'image\',560,320,\' \'.$GLOBALS[\'align\']); ?></div>
</div><div class="clear"></div> 
    <?php endif; ?>

 </div> 

2 个回复
最合适的回答,由SO网友:Sisir 整理而成

检查time parameter on WP_Query Class. 这里有一个关于如何显示过去30天的帖子的示例。你可以在最后几小时、几分钟甚至几秒钟内完成!代码已测试并运行。

$args = array(
                            \'posts_per_page\' => 1, // We are showing only one post
                            \'category_name\' => \'prime\' // showing form category prime
                            );


add_filter( \'posts_where\', \'filter_where\' );
$the_query = new WP_Query( $args );
remove_filter( \'posts_where\', \'filter_where\' ); ?>

 <div id="prime_news" class="col-full">
 <?php
    if ($the_query->have_posts()) :?>
<div id="prime_headline">
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<?php endwhile; ?>
<div class="prime_left fl">
<h3><a href="<?php the_permalink(); ?>" title="" class="title_slide"><?php the_title(); ?></a></h3>
<p class="prime_excerpt"><?php echo limit_words(get_the_excerpt(), \'190\'); ?><span  class="read-more"><a href="<?php the_permalink(); ?>"><?php _e(\'&#2310;&#2327;&#2375;  &#2346;&#2338;&#2375;...\', \'BharatNews\'); ?></a></span></p></div>
<div class="prime_right fr"><?php bharti_get_image(\'image\',560,320,\' \'.$GLOBALS[\'align\']); ?></div>
</div><div class="clear"></div> 
    <?php endif; ?>

 </div> 

Add this function on functions.php

function filter_where( $where = \'\' ) {
    // posts published last 30 minutes
    $where .= " AND post_date > \'" . date(\'Y-m-d H:i:s\', strtotime(\'-30 minutes\')) . "\'";
    return $where;
}

SO网友:Pontus Abrahamsson

您可以通过使用短代码来实现这一点。下面是一个函数,它添加了一个名为expire 当您希望隐藏内容时,可以使用日期和时间为其添加值。

/**
 * Make a simple expire shortcode
 * Example: [expires hide="2012-07-18 20:00:00"]
*/

function pa_hideafter_shortcode( $args = array(), $content = \'\' ) {
    extract( shortcode_atts(
        array(
            \'hide\' => \'tomorrow\',
        ),
        $args
    ));
    if ( strtotime( $hide ) > time() ) {
        return $content;
    }
    return \'\';
}

add_shortcode(\'expires\', \'pa_hideafter_shortcode\');
并在编辑器中输入以下短代码:[expires hide="2012-07-18 20:00:00"] Your content here [/expires]

此内容将于今天20:00后隐藏。

或者,您可以使用if语句通过添加当前时间和+1小时来检查其是否为真the_timepost_date 尝试以下操作:

<div id="prime_news" class="col-full">
    <?php
    // The time right now + one hour
    $time_remove = date( \'Y-m-d H:i:s\', strtotime ( \'+1 hour\' . date( \'Y-m-d H:i:s\' ) ) );
    ?>

    <?php $the_query = new WP_Query(\'category_name=prime&showposts=1&orderby=post_date&order=desc\'); ?>

    <?php if ( $the_query->have_posts() ) : ?>
        <div id="prime_headline">
            <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?><?php endwhile; ?>

            <?php if( $time_remove <= the_time(\'Y-m-d H:i:s\') ) : ?>

                <div class="prime_left fl">
                    <h3><a href="<?php the_permalink(); ?>" title="" class="title_slide"><?php the_title(); ?></a></h3>
                    <p class="prime_excerpt">
                        <?php echo limit_words( get_the_excerpt(), \'190\'); ?>
                        <span  class="read-more">
                            <a href="<?php the_permalink(); ?>"><?php _e(\'&#2310;&#2327;&#2375;  &#2346;&#2338;&#2375;...\', \'BharatNews\'); ?></a>
                        </span>
                    </p>
                </div>

                <div class="prime_right fr">
                        <?php bharti_get_image(\'image\',560,320,\' \'.$GLOBALS[\'align\']); ?>
                </div>

            <?php endif; ?>

        </div>
    <?php endif; ?>

    <div class="clear"></div>

</div>
这在我的系统上还没有测试过,但它非常简单。使用当前日期+您希望显示帖子的时间(即1小时)创建一个变量( Change it in $time_remove ) 然后获取帖子发布时间the_time(\'Y-m-d H:i:s\') 并检查$time\\u remove是否为Less than or equal to (<;=)到发布日期the_time(\'Y-m-d H:i:s\') 然后显示帖子。

结束