如何在表格布局中显示帖子列表(单循环多个查询)

时间:2016-04-05 作者:Jordan Rogers

我正在为我的网站设置一个活动页面。此页面使用循环显示每月在不同场馆表演的表演列表。当浏览者来到页面时,他们使用一个简单的表单来选择月份,提交后返回相关数据。目前,我为循环中的每个动作显示的数据字段如下所示:

活动日期(高级自定义字段数据采集器)

  • 场馆(高级自定义字段文本字段)
  • act图像(高级自定义字段图像字段)
  • act名称(高级自定义字段文本字段)
  • 说明(高级自定义字段文本区域字段)
    1. 您可以查看其工作原理here

      我需要更改布局,以便在返回事件列表时如下所示:enter image description here

      所以本质上,我需要循环为一个月的每一天抽出行,如果当天某个地点有表演,则将其包括在行中。如果当天没有行动,我可以留白(如上所示)

      提前感谢您的帮助,如果您想了解更多信息,我将尽我所能回答。

    2 个回复
    SO网友:Charles Jaimet

    最好的方法不是运行一堆查询,而是循环一次数据以组织它,然后第二次显示它。下面是您需要的逻辑。确切的代码将取决于您的数据集。

    $events = array();
    $posts = WP_Query( $args );
    foreach ( $posts as $post ) { 
      $venue = $post->venue;
      $day_of_month = date( \'d\', $post->date );
      $events[ $venue ][ $day_of_month ][] = $post;
    }
    for ( $x = 1; $x <= 31; $x ++ ) {
      foreach ( $events as $venue => $ev ) {
        if ( ! empty( $ev[ $x ] ) {
          echo \'<td>\';
          foreach ( $ev[ $x ] as $details ) {
            echo $details;
          }
          echo \'</td>\';
        }
      }
    }
    

    SO网友:dg4220

    我想这样试试。使用元查询获取事件列表并将所有内容加载到datatable. 这似乎是让来访者进行筛选和分类的最佳时机。

    下面是一个简单的实现(可能需要调整)。只需从函数调用或模板中打印或返回“$disp\\U data”变量。如果您没有设置datatable,我可以帮助您。否则,只需更新下面的html并使用查询

        $disp_data = \'<div class="data-display"><script>
        jQuery(document).ready(function() {
            jQuery("#my-events-table").dataTable( {
    
                columnDefs: [ {
                    targets: [ 0 ],
                    orderData: [ 0, 1 ]
                }, {
                    targets: [ 1 ],
                    orderData: [ 1, 0 ]
                }, {
                    targets: [ 3 ],
                    orderData: [ 3, 0 ]
                } ]
            } );
    
        } );
        </SCRIPT>
        <TABLE id="my-events-table" class="display" cellspacing="0" ><thead>
                <tr>
                    <th>Date</th>
                    <th>Venue</th>
                    <th>Venue</th>
                    <th>Venue</th>
    
    
                </tr>
            </thead>
                        <TBODY>\';
    
    
            $args = array(
                    \'post_type\' => \'my-event-type\',
                    \'posts_per_page\' => -1,
                    \'orderby\' => \'meta_value\',
                    \'order\' => \'ASC\',
                    \'meta_key\' => \'acf-field\',//custom field name holding event date
                    \'meta_query\' => array(
                        array(
                            \'key\' => \'_my-datetime-from\',
                            \'value\' => array($start, $end),
                            \'compare\' => \'BETWEEN\',
                            \'type\' => \'DATE\'
                        )
                    )
                );
                $posts = new WP_Query( $args );
    
    
                    foreach ( $posts as $post ) { 
    
                          /*get you acf values here and load in to a table row*/
    
                    $disp_data .= \'<tr>
                        <td>\' . $cur_property . \'</td>
                        <td>\' . $venue . \'</td>
                        <td>\' . $venue . \'</td>
                        <td>\' . $venue . \'</td>
    
    
                    </tr>\';
    
                }
                wp_reset_postdata();
                $disp_data .= \'</tbody></table></div>\';
    

    相关推荐

    GET_POSTS查询大约需要40秒来执行

    我在get\\u帖子中有一个元查询,它需要花很长时间才能完成。它工作得很好,但只是时间太长了。我有一个名为event. 在每个event 发布后,有自定义元数据:post\\U sort\\U日期(事件日期YmdHis 格式,用于排序)我需要做的是获取下一个事件,该事件相对于$year 和$month 变量。所以如果$year = 2021 和$month = 10 (2021 10月)然后应该在2021 11月或之后找到第一个事件。我下面的查询很好,但很慢。执行大约需要40秒,我不知道为什么。$next