Event Archive by Month

时间:2012-09-06 作者:tbwcf

我正在wordpress中为一家剧院创建一个活动网站-目前我已经为活动设置了一个自定义帖子类型,并使用自定义字段“event\\u date”(格式为YYYY-MM-DD)在其列表页面上对活动进行排序,如果超过了今天的日期,还可以将其移动到存档。

到目前为止,一切都很顺利。

下一步,我需要创建一个逐月过滤器,用于显示出现的月份,但我有点困惑。我想我需要:-检查包含节目(非过去)的月份,并输出一个列表链接,将这些月份链接到一个模板,该模板将过滤以仅显示相关月份。。

有什么指示吗?

提前感谢

2 个回复
SO网友:tbwcf

好吧,缺少更好的解决方案,我想到的是:

<?php
   $today = date(\'Y-m-d\', strtotime(\'-6 hours\')); 
   query_posts(array(
      \'post_type\' => \'events\', \'posts_per_page\' => 99, \'meta_key\' => \'event_date\', \'orderby\' => \'meta_value\', \'order\' => \'ASC\', 
      \'meta_query\' => array(array(
         \'key\' => \'event_date\',
         \'meta-value\' => $value, 
         \'value\' => $today, 
         \'compare\' => \'>=\', 
         \'type\' => \'CHAR\'
       ))
   ));
   if (have_posts()) :
   while (have_posts()) : the_post();
?>
以上内容获取今天日期以后的所有事件

<?php
    // http://stackoverflow.com/questions/3586384/wordpress-events-grouped-by-month
    // for each month output the month once 
    $eventdate = get_post_meta($post->ID, "event_date", true);
    if(!isset($currentMonth) || $currentMonth != date("m", strtotime($eventdate))){
    $currentMonth = date("m", strtotime($eventdate));

    //make the month to pass into the url
    $month = date("Y", strtotime($eventdate)).\'-\'.date("m", strtotime($eventdate));
    $monthname = date("F", strtotime($eventdate));
?>
如果在该日期存在帖子,请将月份名称踢出一次,然后进行输出操作。

<li>
    <a href="<?php echo home_url( \'/\' ); ?>whats-on-page/shows-by-month/?startdate=<?php echo($month); ?>-01&enddate=<?php echo($month); ?>-31&monthname=<?php echo ($monthname); ?>">
        <?php echo ($monthname); ?>
    </a>
</li>
<?php } ?>
输出html,这样我们就有了一个li和链接-链接到一个使用自定义页面模板的页面,该模板将URL中传递的参数拉入元查询,如下所示:

   $start = $_GET["startdate"];
   $end = $_GET["enddate"];
   $monthname = $_GET["monthname"];
   // gets info from URL

   query_posts(array(
      \'post_type\' => \'events\', //query “events”
      \'posts_per_page\' => 10,
      \'paged\' => $paged,
      \'meta_key\' => \'event_date\',
      \'orderby\' => \'meta_value\',
      \'order\' => \'ASC\', //sort in ascending order
        \'meta_query\' => array(
            array(
                \'key\' => \'event_date\',
                \'value\' => array($start, $end),
                \'compare\' => \'BETWEEN\',
                \'type\' => \'DATE\'
            )
        ) // meta query between dates
   ));
   if (have_posts()) :
   while (have_posts()) : the_post();
因此,现在我在侧边栏中有了一个动态列表,可以链接到一个自定义页面模板,该模板按月份过滤,使用自定义日期字段有效地重新创建存档后效果。

当然,我可能会创建一些URL重写,以使这项工作与漂亮的URL太,但那是另一天。

SO网友:Simon Forster

为自定义帖子类型创建存档索引(请参阅http://codex.wordpress.org/Creating_an_Archive_Index) 第一

我从另一个网站抓取了下一部分(http://wpgarage.com/code-snippets/how-to-create-an-archive-based-on-custom-fields-not-publish-date-in-wordpress/)

我发现了这个很棒的日期字段插件(http://matth.eu/wordpress-date-field-plugin)它允许您按照在自定义字段中输入的日期对帖子进行排序。以下是我所做的:

上载插件并激活它

打开您创建的存档页面模板并添加查询。查询将检查已填写日期的帖子,以及从最早到最新的顺序。

<?php query_posts(\'meta_key=date_value&orderby=meta_value&order=DESC\'); ?>

<我在循环中替换了一个典型的日期函数<?php the_time(‘j M Y’); ?> 使用

<?php echo date(“l jS \\of F Y”, get_post_meta($post->ID, ‘date_value’, true));?>

现在,您的存档中有一个按日期列出的帖子列表。。从那以后,采取下一步并按日期等进行筛选应该不会很困难。

结束

相关推荐

Only Showing Upcoming Events

在此页面的侧栏中:http://lifebridgecypress.org/our-people, 我有一个即将使用此代码的事件列表。。。<ul id=\"upcoming-events\"> <?php $latestPosts = new WP_Query(); $latestPosts->query(\'cat=3&showposts=10\'); ?> <?php while ($latestPos