gpt4 book ai didi

php - WordPress:按月分组的事件

转载 作者:行者123 更新时间:2023-11-29 14:59:37 25 4
gpt4 key购买 nike

在我的 WP 网站中,我有一个名为“事件”的类别,我在其中使用两个自定义字段发布事件信息:

  1. eventdate = 人类可读的事件日期
  2. eventsortdate = YYYY/MM/DD 以正确的顺序列出事件。

我从这里的一篇有用的帖子中得到了这段代码:http://www.davidrisley.com/events-list-with-wordpress/

<?php
$timecutoff = date("Y-m-d");
$args = array(
'category_name' => 'events',
'orderby' => 'meta_value',
'meta_key' => 'eventsortdate',
'meta_compare' => '>=',
'meta_value' => $timecutoff,
'order' => 'DESC'
);
$my_query = new WP_Query($args);
if ($my_query->have_posts()) : while ($my_query->have_posts()) :
$my_query->the_post();
$eventdate = get_post_meta($post->ID, "eventdate", true);
?>
<ul id="events">
<li>
<strong><?php echo $eventdate; ?></strong><br />
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
</li>
</ul>
<?php endwhile; else: ?>
<ul id="events">
<li><?php _e('No Events Scheduled! Stay Tuned.'); ?></li>
</ul>
<?php endif; ?>

这将确保事件按正确的顺序列出。但是,我还想按月对事件进行分组 - 因此有一个“月”标题,并将属于该月显示的所有事件分组到该标题下。

非常感谢任何想法,或者关于如何实现这一目标的替代建议也非常感谢。谢谢。

编辑:

考虑到建议的代码修改后的代码:

<?php
$timecutoff = date("Y-m-d");
$args = array(
'category_name' => 'events-press',
'orderby' => 'meta_value',
'meta_key' => 'eventsortdate',
'meta_compare' => '>=',
'meta_value' => $timecutoff,
'order' => 'ASC'
);
$my_query = new WP_Query($args);

if ($my_query->have_posts()) : while ($my_query->have_posts()) :
$my_query->the_post();
$eventdate = get_post_meta($post->ID, "eventdate", true);
?>

<?php if(!isset($currentMonth) || $currentMonth != date("m", strtotime($eventdate))){
$currentMonth = date("m", strtotime($eventdate));
?>
<li><?php echo date("m", strtotime($eventdate)); ?></li>
<?php
}
?>

<ul>
<li>
<h5><?php echo $eventdate; ?></h5>
<h4><?php the_title(); ?></h4>
<?php the_content(); ?>
</li>
</ul>
<?php endwhile; else: ?>
<ul id="events">
<li><?php _e('No Events Scheduled! .'); ?></li>
</ul>
<?php endif; ?>

编辑:进一步修改使其功能正确:

<?php
$timecutoff = date("Y-m-d");
$args = array(
'category_name' => 'events-press',
'orderby' => 'meta_value',
'meta_key' => 'eventsortdate',
'meta_compare' => '>=',
'meta_value' => $timecutoff,
'order' => 'ASC'
);
$my_query = new WP_Query($args);

if ($my_query->have_posts()) : while ($my_query->have_posts()) :
$my_query->the_post();
$eventdate = get_post_meta($post->ID, "eventdate", true);
$eventsortdate = get_post_meta($post->ID, "eventsortdate", true);
?>

<?php if(!isset($currentMonth) || $currentMonth != date("m", strtotime($eventsortdate))){
$currentMonth = date("m", strtotime($eventsortdate));
?>
<li><?php echo date("F", strtotime($eventsortdate)); ?></li>
<?php
}
?>

<ul>
<li>
<h5><?php echo $eventdate; ?></h5>
<h4><?php the_title(); ?></h4>
<?php the_content(); ?>
</li>
</ul>
<?php endwhile; else: ?>
<ul id="events">
<li><?php _e('No Events Scheduled! .'); ?></li>
</ul>
<?php endif; ?>

最佳答案

您可以使用 WP_Query() 函数做一些令人惊奇的事情,但我认为分组不属于它。您可以做的是自己构建一个数组并输出该数组的结果。或者您可以只保存当前月份并在下个月发生变化时输出:

if(!isset($currentMonth) || $currentMonth != date("m", strtotime($eventdate))){
$currentMonth = date("m", strtotime($eventdate));
?>
<li><?php echo date("m", strtotime($eventdate)); ?></li>
<?php
}

这将打印第一个事件的月份编号($surrentMonth 尚未设置),然后每次出现新月份时再次打印。

但可以肯定的是,您必须将输出(LI)更改为您想要的内容。

关于php - WordPress:按月分组的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3586384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com