按ACF按月和年排序和分组帖子

时间:2015-01-11 作者:tightman

如何将帖子按月份和年份按单独的标题分组?

示例(使用此日期格式输出):

2014年12月-4日。Dez 2014年5月。Dez 2014年

我有一个自定义字段(datepicker)“event\\u date”。

    <?php

$the_query = new WP_Query( array(
    \'post_status\' => \'publish\',
    \'meta_key\'    => \'event_date\',
    \'orderby\'     => \'meta_value\'
) );

$current_header = \'\';

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

    $temp_date = get_post_meta( get_the_ID(), \'event_date\', true );

    if ( $temp_date != $current_header ) {
        $current_header = $temp_date;
        echo "<div class=\'sub_category_name_wrapper\'><h5>$current_header</h5></div>";
    }

    ?>

    <div class="event_content_wrapper">
        <ul>
            <li>        
                <span><?php the_field(\'event_date\'); ?></span>&nbsp;<span><?php the_field(\'event_region\'); ?></span>
                <h4><?php the_title(); ?></h4>
                <br>
                <?php the_excerpt(); ?>
                <a class="content_button" href="<?php the_permalink(); ?>">mehr</a>
            </li>
        </ul>
    </div>

<?php endwhile;

?>

2 个回复
SO网友:Laxmana

当您使用查询帖子时orderby 参数作为event_date (可以是任何带有日期格式的字段)按日期、desc或asc排序帖子。因此,之后你要做的唯一一件事就是按年份和月份对它们进行分组。

因此:

<?php

            $posts = get_posts(array(
                \'post_type\' => \'post\',
                \'meta_key\'  => \'event_date\',
                \'orderby\'   => \'meta_value_num\',
                \'order\'     => \'DESC\'
            ));

            $group_posts = array();

            if( $posts ) {

                foreach( $posts as $post ) {

                    $date = get_field(\'event_date\', $post->ID, false);

                    $date = new DateTime($date);

                    $year = $date->format(\'Y\');
                    $month = $date->format(\'F\');

                    $group_posts[$year][$month][] = array($post, $date);

                }

            }

            foreach ($group_posts as $yearKey => $years) {

                echo $yearKey;
                echo \'<br>\';

                foreach ($years as $monthKey => $months) {

                    echo $monthKey;
                    echo \'<br>\';

                    foreach ($months as $postKey => $posts) {

                        echo $posts[1]->format(\'d-m-Y\');
                        echo \'<br>\';
                        echo $posts[0]->title;
                        echo \'<br>\';
                    }

                }

            }

        ?>
您可以根据需要更改年和月格式。这只是一个演示。这同样适用于HTML格式。

SO网友:Fint

遵循上的高级示例https://www.advancedcustomfields.com/resources/date-picker/ 这对我很有用:

有一个名为“event”的帖子类型,其中包含两个acf自定义字段“event\\u date\\u start”和“event\\u date\\u end”。

该查询显示从今天开始的所有未来事件,每个月都会获得其标题。因此,可以说事件是按月份分组的。也许这不是你想要的,但至少这可能是一个有趣的方法。。。

March 2017
-事件1
-事件2
-事件3
April 2017
-事件4
-事件5
。。。

<?php 
$today = date(\'Ymd\');


$args = array(
          \'post_type\'     => \'event\',
          \'posts_per_page\'   => -1,
          \'meta_key\' => \'event_date_start\',
          \'orderby\' => \'meta_value_num\',
          \'order\' => \'ASC\',
          \'meta_query\' => array(
            \'relation\' => \'OR\',
              array(
                \'key\'   => \'event_date_end\' , 
                \'compare\' => \'>=\',
                \'value\'   => $today,
                \'type\'        => \'date\'
              ),
              array(
                  \'key\'   => \'event_date_start\' , 
                  \'compare\' => \'>=\',
                  \'value\'   => $today,
                  \'type\'        => \'date\'
              ),


            )
);
$shows = get_posts($args );


$current_header = \'\';

foreach ($shows as $post ) : setup_postdata($post); 

// get raw date
$date = get_field(\'event_date_start\', false, false);


$temp_header = date_i18n(\'F Y\', strtotime($date));

if ( $temp_header != $current_header ) {
    $current_header = $temp_header;
    echo "<h3>".$current_header.\'</h3>\';

}
// echo content of event
get_template_part(\'templates/content\', \'events\');
endforeach; 
wp_reset_postdata();

?>

结束

相关推荐

在后期编辑中将jQuery Datepicker添加到自定义字段

我想在后期编辑面板中添加一个由jquery datepicker ui设置的自定义字段。我是wordpress的新手,所以我不知道如何添加这样的内容。我在插件方面运气不好,所以我想知道如何手动添加这样的东西。我熟悉PHP。

按ACF按月和年排序和分组帖子 - 小码农CODE - 行之有效找到问题解决它

按ACF按月和年排序和分组帖子

时间:2015-01-11 作者:tightman

如何将帖子按月份和年份按单独的标题分组?

示例(使用此日期格式输出):

2014年12月-4日。Dez 2014年5月。Dez 2014年

我有一个自定义字段(datepicker)“event\\u date”。

    <?php

$the_query = new WP_Query( array(
    \'post_status\' => \'publish\',
    \'meta_key\'    => \'event_date\',
    \'orderby\'     => \'meta_value\'
) );

$current_header = \'\';

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

    $temp_date = get_post_meta( get_the_ID(), \'event_date\', true );

    if ( $temp_date != $current_header ) {
        $current_header = $temp_date;
        echo "<div class=\'sub_category_name_wrapper\'><h5>$current_header</h5></div>";
    }

    ?>

    <div class="event_content_wrapper">
        <ul>
            <li>        
                <span><?php the_field(\'event_date\'); ?></span>&nbsp;<span><?php the_field(\'event_region\'); ?></span>
                <h4><?php the_title(); ?></h4>
                <br>
                <?php the_excerpt(); ?>
                <a class="content_button" href="<?php the_permalink(); ?>">mehr</a>
            </li>
        </ul>
    </div>

<?php endwhile;

?>

2 个回复
SO网友:Laxmana

当您使用查询帖子时orderby 参数作为event_date (可以是任何带有日期格式的字段)按日期、desc或asc排序帖子。因此,之后你要做的唯一一件事就是按年份和月份对它们进行分组。

因此:

<?php

            $posts = get_posts(array(
                \'post_type\' => \'post\',
                \'meta_key\'  => \'event_date\',
                \'orderby\'   => \'meta_value_num\',
                \'order\'     => \'DESC\'
            ));

            $group_posts = array();

            if( $posts ) {

                foreach( $posts as $post ) {

                    $date = get_field(\'event_date\', $post->ID, false);

                    $date = new DateTime($date);

                    $year = $date->format(\'Y\');
                    $month = $date->format(\'F\');

                    $group_posts[$year][$month][] = array($post, $date);

                }

            }

            foreach ($group_posts as $yearKey => $years) {

                echo $yearKey;
                echo \'<br>\';

                foreach ($years as $monthKey => $months) {

                    echo $monthKey;
                    echo \'<br>\';

                    foreach ($months as $postKey => $posts) {

                        echo $posts[1]->format(\'d-m-Y\');
                        echo \'<br>\';
                        echo $posts[0]->title;
                        echo \'<br>\';
                    }

                }

            }

        ?>
您可以根据需要更改年和月格式。这只是一个演示。这同样适用于HTML格式。

SO网友:Fint

遵循上的高级示例https://www.advancedcustomfields.com/resources/date-picker/ 这对我很有用:

有一个名为“event”的帖子类型,其中包含两个acf自定义字段“event\\u date\\u start”和“event\\u date\\u end”。

该查询显示从今天开始的所有未来事件,每个月都会获得其标题。因此,可以说事件是按月份分组的。也许这不是你想要的,但至少这可能是一个有趣的方法。。。

March 2017
-事件1
-事件2
-事件3
April 2017
-事件4
-事件5
。。。

<?php 
$today = date(\'Ymd\');


$args = array(
          \'post_type\'     => \'event\',
          \'posts_per_page\'   => -1,
          \'meta_key\' => \'event_date_start\',
          \'orderby\' => \'meta_value_num\',
          \'order\' => \'ASC\',
          \'meta_query\' => array(
            \'relation\' => \'OR\',
              array(
                \'key\'   => \'event_date_end\' , 
                \'compare\' => \'>=\',
                \'value\'   => $today,
                \'type\'        => \'date\'
              ),
              array(
                  \'key\'   => \'event_date_start\' , 
                  \'compare\' => \'>=\',
                  \'value\'   => $today,
                  \'type\'        => \'date\'
              ),


            )
);
$shows = get_posts($args );


$current_header = \'\';

foreach ($shows as $post ) : setup_postdata($post); 

// get raw date
$date = get_field(\'event_date_start\', false, false);


$temp_header = date_i18n(\'F Y\', strtotime($date));

if ( $temp_header != $current_header ) {
    $current_header = $temp_header;
    echo "<h3>".$current_header.\'</h3>\';

}
// echo content of event
get_template_part(\'templates/content\', \'events\');
endforeach; 
wp_reset_postdata();

?>

相关推荐

未捕获的TypeError:Object#<Object>没有方法‘Datepicker’

我想在我的网站中使用jQuery日期选择器。然而,当我使用相同的方法时,我会得到以下错误。未捕获的TypeError:对象#没有方法“datepicker”,我已经在Google上搜索了很长一段时间了。所有这些都表明问题可能是由于两次加载jquery造成的。我查过了,但事实并非如此。我按照以下方式加载jQuery脚本。<script type=\"text/javascript\" src=\"http://xxxx/wp-includes/js/jquery/jquery.js\"><