0

我以前尝试过这样做但失败了,也许我只是不明白它是如何工作的,也许以前有人这样做过并且可以帮助我。

用 wordpress 为学校建立一个网站,他们有一个主题的课程,他们通过一周中的几天列出它们,如下所示:

周一

  • 数学
  • 英语
  • 科学

周二

  • 科学

周三

  • 数学
  • 历史

当我构建这个时,我使用了一个名为“类”的自定义帖子类型,然后我使用自定义帖子字段输入所有数据,包括时间()格式(使用日期选择器) )

这就是我回显日期/时间的方式: <?php echo(types_render_field("date-and-time", array("format"=>"l","arg2"=>"val2"))); ?>

现在,目前这是我的循环:

循环要点

但它根本不起作用,它列出了天数,但它会多次列出天数,所以如果星期三有 4 个帖子,它会列出星期三、星期三、星期三、星期三。

这是有道理的,因为它只是循环浏览帖子并回显它的日期。

基本上,我正在尝试写:

- loop days of the week 7 days ahead 
    - loop posts under the date heading based on custom field date

我最初打算为此使用预定的发布,但是对于不具备计算机知识的人来说,在 wordpress 中安排发布并不是最简单的,使用自定义字段,我可以对其进行样式设置并使用TYPES提供的日期选择器。

如果有人可以帮助我,那就太好了!

4

1 回答 1

0

我的朋友设法为我的问题创建了一个出色的解决方案,我将在此处发布代码,希望将来能对某人有所帮助。

<?php 
 $begin = strtotime('Monday last week'); // Year . Week
 $end = $begin + (21 * 24 * 60 * 60);
 $week = -1;
 $day = -1;
 $table = FALSE;
 $this_week = date('W');

query_posts( 
array( 
    'post_type' => 'classes',               // Custom Post Type
    'order' => 'asc',                       // Order with earliest first
    'orderby' => 'wpcf-date-and-time',      // Order by the custom field
    'posts_per_page' => -1,                 // Show all
    'meta_key' => 'wpcf-date-and-time',     // Key is the custom field
    'meta_value' => array($begin, $end),    // Array of the current month and next
    'meta_compare' => 'BETWEEN',            // Between Being and End
    'author' => $author_id                  // Show only the author
    ) 
);                                          // Get posts between now and then

if (have_posts()) : while (have_posts()) : the_post(); 
    $do_not_duplicate = $post->ID;
    $time = types_render_field("date-and-time", array("arg1"=>"val1","raw"=>"true")); // Your custom field
    $current_week = date('W', $time);
    $current_day = date('l', $time);
    if ($current_week > $week) {
        if ($table) {
            echo "</table>";
            $table = FALSE;
        }
        $week = $current_week;
        if ($week > $this_week)          { $week_str = 'Next week';}
        else if ($week < $this_week) { $week_str = 'Last week';}
        else                                                 { $week_str = 'This week';}
        echo '<h2 class="">' . $week_str . '</h2>';
    }
    if ($current_day != $day) {
        $day = $current_day;
        if ($table) {
            echo "</table>";
            $table = FALSE;
        }
        $table = TRUE;
        echo '<h3 class="">' . $day . '</h3>';
        echo '<table>
                <thead>
                    <tr>
                        <td>Location</td>
                        <td>Venue</td>
                        <td>Time</td>
                        <td>age</td>
                    </tr>
                </thead>';
    }
    ?>

<tr>
    <td><?php the_title(); ?></td>
    <td><?php echo(types_render_field("location", array("arg1"=>"val1","arg2"=>"val2"))); ?></td>
    <td><?php echo(types_render_field("venue", array("arg1"=>"val1","arg2"=>"val2"))); ?></td>
    <td><?php echo get_the_term_list( $post->ID, 'age-group', '', ', ', '' ) ?></td>
</tr>   

<?php endwhile; else: ?>
<p>We don't currently have any classes available on this day,
but we can <strong>book your child in for a class</strong>, please get in touch to organise this</p>
 <?php endif; wp_reset_query() ?>                                               
于 2013-08-05T13:52:49.560 回答