Como exibir a seção por um certo tempo

4

Estou construindo um site de notícias. Quero exibir 1 postagem em destaque da categoria "principal" por apenas algumas horas. depois que ele deve expirar ou desaparecer da seção.

por favor, dê uma olhada aqui você pode ver o post no topo.

 <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> 
    
por Nisha_at_Behance 18.07.2012 / 18:05

2 respostas

3

Verifique o parâmetro de tempo na WP_Query Class . Há um exemplo de como mostrar postagens dos últimos 30 dias. Você pode fazer isso por duas horas, minutos ou até segundos! Código é testado e funcionando.

$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> 

Adicione esta função em 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;
}
    
por Sisir 22.07.2012 / 19:27
3

Você pode conseguir isso usando um shortcode. Aqui está uma função que adiciona um shortcode chamado expire que você pode adicionar um valor a data e hora quando quiser que o conteúdo seja oculto.

/**
 * 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');

E coloque este shortcode no seu editor: [expires hide="2012-07-18 20:00:00"] Your content here [/expires]

Este conteúdo ficará oculto hoje, depois das 20:00.

Ou você pode usar uma declaração if para verificar se é verdade ou não, adicionando a hora atual, adicionar +1 hora e verificar the_time ou post_date Tente isto:

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

Isso não foi testado no meu sistema, mas é bastante simples. Faça uma variável com a data atual + a hora em que você deseja que a postagem seja exibida, ou seja, 1 hora (altere em $time_remove ) e obtenha o tempo de publicação das postagens com the_time('Y-m-d H:i:s') e verifique se o $ time_remove é Menor ou igual a (< =) para a data de publicação the_time('Y-m-d H:i:s') , em seguida, exibe a postagem.

    
por Pontus Abrahamsson 18.07.2012 / 18:48