根据日期范围更改新闻故事布局

时间:2013-07-06 作者:Jon

我的网站已经运行了10年,因此经历了各种布局变化。每当我制作一个新的版面时,我都会将所有在该版面下制作的新闻故事添加到一个新的Wordpress类别中,这样我就可以针对所说的故事,并将相同的版面应用于它们。这是我使用的代码:

<?php rewind_posts(); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php if ( in_category(\'2563\') ): ?> (layout coding)
<?php elseif ( in_category(\'919\') ): ?>  (layout coding)
<?php elseif ( in_category(\'3\') ): ?> (layout coding)
<?php else: ?> (layout coding)
<?php endif; ?>
<?php endwhile; ?>
我再次改变我的布局,但我不想继续制作新的类别,因为这只会让事情看起来很混乱。因此,我想知道是否有一种方法可以取代以类别为基础的新闻故事布局,而是以创作日期为基础。所以我想做一些像。。。“如果X story是在2003年7月15日下午1:03和2007年9月19日上午11:34之间发布的,请使用以下布局。”与上面的代码类似,但具有时间/日期范围。有人知道这是否可行吗?非常感谢你!

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

从概念上讲,这并不难做到。

if (have_posts()) {
  while (have_posts()) { 
    the_post();

    if ( $post->post_date >= date("Y-m-d H:i:s",strtotime(\'7/15/03 1:03 PM\'))
         && $post->post_date <= date("Y-m-d H:i:s",strtotime(\'9/19/07 11:34 AM\'))) ) {
      // (layout coding)
    } elseif ( /* another condition */ ) { 
      // (layout coding)
    } elseif ( /* another condition */ ) {
      // (layout coding)
    } else {
      // (layout coding)
    }

  }
}
您可以跳过strtotime 如果只使用MySQL格式的日期--YYYY-MM-DD HH:MM:SS (24小时)-首先。

随着时间的推移,这将变得相当麻烦。可能已经很久了ifelse 序列,尤其是布局标记像这样穿插在一起。不幸的是,除非您的格式发生了不可避免的变化。您可以通过使用get_template_part.

} elseif ( /* another condition */ ) {
  get_template_part(\'layouts/\',\'layout2\');
}
布局标记将位于wp-content/themename/layouts/layout2.php. 这将使事情更具可读性和可维护性。

此外,您不需要所有这些打开和关闭PHP标记。只有在从PHP切换到HTML时才需要这些。它们不是直线起点和终点的标记。

结束

相关推荐

UPDATE_USER_META不适用于AJAX

我尝试将用户订阅保存在元数据变量中。该函数由AJAX调用。调用了AJAX,但前端的元数据似乎没有更新。代码如下:jQuery<script type=\"text/javascript\"> jQuery(document).ready(function($) { $(\'#tags_list a\').click(function(){ myid = $(this).parent(\"li\").attr(\'id\')