Cómo mostrar la Sección durante un tiempo determinado

4

estoy construyendo un sitio de noticias. Quiero mostrar 1 publicación destacada de la categoría "prime" por solo unas pocas horas. después de que haya caducado o desaparecido de la sección.

Por favor, eche un vistazo aquí puede ver la publicación en la parte superior.

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

2 respuestas

3

Verifique el parámetro de tiempo en WP_Query Class . Hay un ejemplo sobre cómo mostrar las publicaciones de los últimos 30 días. ¡Puedes hacerlo durante las últimas horas, minutos o incluso segundos! El código está probado y 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> 

Agrega esta función en 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;
}
    
respondido por el Sisir 22.07.2012 - 19:27
3

Puedes lograr esto usando un shortcode. Aquí hay una función que agrega un código abreviado llamado expire al que puede agregar un valor con fecha y hora cuando desea que el contenido esté 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');

Y ponga este código abreviado en su editor: [expires hide="2012-07-18 20:00:00"] Your content here [/expires]

Este contenido se ocultará hoy después de las 20:00.

O puede usar una instrucción if para verificar si es verdadera o no agregando la hora actual y agregar +1 hora y verificar ya sea the_time o post_date Intente esto:

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

Esto no está probado en mi sistema pero es bastante sencillo. Cree una variable con la fecha actual + la hora en que desea que se muestre la publicación, es decir, 1 hora (Cámbiela en $time_remove ) luego obtenga la hora de publicación de las publicaciones con the_time('Y-m-d H:i:s') y verifique si el $ time_remove es Menor o igual que (< =) a la fecha de publicación the_time('Y-m-d H:i:s') y luego muestra la publicación.

    
respondido por el Pontus Abrahamsson 18.07.2012 - 18:48

Lea otras preguntas en las etiquetas