Comment afficher la section pendant un certain temps

4

je construis un site de nouvelles. Je souhaite afficher 1 article en vedette de la catégorie "prime" pendant seulement quelques heures. après son expiration ou sa disparition de la section.

veuillez consulter ici pour afficher le message en haut.

 <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> 
    
posée Nisha_at_Behance 18.07.2012 - 18:05

2 réponses

3

Vérifiez le paramètre heure sur la classe WP_Query . Il y a un exemple sur la façon d'afficher les messages des 30 derniers jours. Vous pouvez le faire pendant quelques heures, quelques minutes ou même quelques secondes! Le code est testé et fonctionne.

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

Ajouter cette fonction sur 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;
}
    
réponse donnée Sisir 22.07.2012 - 19:27
3

Vous pouvez y parvenir en utilisant un shortcode. Voici une fonction qui ajoute un shortcode appelé expire auquel vous pouvez ajouter une valeur avec la date et l'heure lorsque vous souhaitez que le contenu soit masqué.

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

Et mettez ce shortcode dans votre éditeur: [expires hide="2012-07-18 20:00:00"] Your content here [/expires]

Ce contenu sera masqué aujourd'hui à partir de 20h00.

Vous pouvez également utiliser une instruction if pour vérifier si elle est vraie ou non en ajoutant l'heure actuelle, en ajoutant +1 heure et en vérifiant soit the_time , soit post_date Essayez ceci:

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

Ceci n’a pas été testé sur mon système, mais c’est assez simple. Créez une variable avec la date du jour + l’heure à laquelle vous voulez que le message soit affiché, c’est-à-dire 1 heure (Modifiez-le dans $time_remove ) , puis obtenez l’heure de publication des messages avec the_time('Y-m-d H:i:s') et vérifiez si le $ time_remove est inférieur ou égal à (< =) à la date de publication the_time('Y-m-d H:i:s') , puis affichez le message.

    
réponse donnée Pontus Abrahamsson 18.07.2012 - 18:48

Lire d'autres questions sur les étiquettes