私はニュースサイトを作っています。私は数時間だけ "プライム"カテゴリから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('आगे पढे...', '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>
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('आगे पढे...', '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;
}
あなたはショートコードを使うことによってこれを達成することができます。これは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('आगे पढे...', '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')
までの (<=)以下で、投稿を表示します。