List events by month

时间:2018-10-16 作者:user2971921

我正在WordPress网站上工作,该网站由一个名为“事件”的自定义帖子类型组成。每个“事件”都包含一个名为“事件日期”的自定义字段。我想根据“活动日期”字段按月组织所有“活动”。

我的意思是:

November 2018
Event
Event
Event

December 2018
Event
Event
Event

January 2019
Event
Event
Event

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

也许有更好的优化方法,但我会这样做:

使用WP\\u查询获取所有事件,并按自定义日期字段对其进行排序,循环遍历所有事件并创建一个新的多维数组。在此数组中,我们将按日期(月和年)对所有帖子进行分组。最后,循环遍历我们的新数组,以获取我们提取的日期和事件。代码如下:

<?php
// Edit these values
$custom_post_type  = \'event\';
$custom_date_field = \'event_date\';
$order             = \'ASC\'; // from the oldest to the newest

// query
$the_query = new WP_Query( [
    \'post_type\'      => $custom_post_type,
    \'posts_per_page\' => - 1,
    \'meta_key\'       => $custom_date_field,
    \'orderby\'        => \'meta_value\',
    \'order\'          => $order,
] );

// We are creating new multidimensional array
$all_events = [];

while ( $the_query->have_posts() ) :
    $the_query->the_post();

    $date       = strtotime( get_post_meta( get_the_ID(), $custom_date_field, true ) );
    $month_year = date( "F Y", $date );

    $all_events[ $month_year ][] = $the_query->post;

endwhile;
wp_reset_query();

// And to print this:
foreach ( $all_events as $month_year => $events ) : ?>
    <h3><?php echo $month_year ?></h3>
    <ul>
        <?php 
        /** @var \\WP_Post $event */
        foreach ( $events as $event ) : ?>
            <li><?php
                // post title
                echo $event->post_title;
                // any custom field
                the_field( \'acf_custom_field\', $event->ID );
                ?></li>
        <?php endforeach; ?>
    </ul>
<?php endforeach; ?>
你可以在第二秒内随心所欲foreach 环根据需要进行编辑。

结束

相关推荐

如何测试unctions.php中的类(来自插件)

我为函数添加了各种代码更改。php。其中许多依赖于某些活动插件,因为它们引用这些插件定义的类。如果插件被禁用,将导致500服务器错误,因为找不到相应的类。有没有办法先考一门课?例如,以下函数依赖于WooCommerce扩展中的类。// Add prices to variations add_filter( \'woocommerce_variation_option_name\', \'display_price_in_variation_option_name\' ); func

List events by month - 小码农CODE - 行之有效找到问题解决它

List events by month

时间:2018-10-16 作者:user2971921

我正在WordPress网站上工作,该网站由一个名为“事件”的自定义帖子类型组成。每个“事件”都包含一个名为“事件日期”的自定义字段。我想根据“活动日期”字段按月组织所有“活动”。

我的意思是:

November 2018
Event
Event
Event

December 2018
Event
Event
Event

January 2019
Event
Event
Event

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

也许有更好的优化方法,但我会这样做:

使用WP\\u查询获取所有事件,并按自定义日期字段对其进行排序,循环遍历所有事件并创建一个新的多维数组。在此数组中,我们将按日期(月和年)对所有帖子进行分组。最后,循环遍历我们的新数组,以获取我们提取的日期和事件。代码如下:

<?php
// Edit these values
$custom_post_type  = \'event\';
$custom_date_field = \'event_date\';
$order             = \'ASC\'; // from the oldest to the newest

// query
$the_query = new WP_Query( [
    \'post_type\'      => $custom_post_type,
    \'posts_per_page\' => - 1,
    \'meta_key\'       => $custom_date_field,
    \'orderby\'        => \'meta_value\',
    \'order\'          => $order,
] );

// We are creating new multidimensional array
$all_events = [];

while ( $the_query->have_posts() ) :
    $the_query->the_post();

    $date       = strtotime( get_post_meta( get_the_ID(), $custom_date_field, true ) );
    $month_year = date( "F Y", $date );

    $all_events[ $month_year ][] = $the_query->post;

endwhile;
wp_reset_query();

// And to print this:
foreach ( $all_events as $month_year => $events ) : ?>
    <h3><?php echo $month_year ?></h3>
    <ul>
        <?php 
        /** @var \\WP_Post $event */
        foreach ( $events as $event ) : ?>
            <li><?php
                // post title
                echo $event->post_title;
                // any custom field
                the_field( \'acf_custom_field\', $event->ID );
                ?></li>
        <?php endforeach; ?>
    </ul>
<?php endforeach; ?>
你可以在第二秒内随心所欲foreach 环根据需要进行编辑。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请