web-dev-qa-db-ja.com

ある時間区間を表示する方法

私はニュースサイトを作っています。私は数時間だけ "プライム"カテゴリから1注目の記事を表示したいです。期限切れになるか、セクションから消えます。

こちらをご覧ください こちら u上部に投稿が表示されます。

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

WP_Queryクラスのtimeパラメーター を確認してください。過去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> 

この関数を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;
}
3
Sisir

あなたはショートコードを使うことによってこれを達成することができます。これは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_timeまたはpost_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時間$time_removeに変更)で変数を作成し、投稿の公開時刻をthe_time('Y-m-d H:i:s')で取得し、 $ time_removeは、 公開日the_time('Y-m-d H:i:s')までの (<=)以下で、投稿を表示します。

3