WordPress元字段中数组中的名称键

问题描述 投票:0回答:1

我正在尝试在wordpress和自定义帖子类型中编写日历脚本。到目前为止工作正常。我使用几个自定义字段(ACF)来调用我想要的参数(事件标题,start_date,end_date等)

我把结果称为get_posts()

但我在数组中命名我的键时遇到问题。在foreach操作之后,我可以获得所需的值,例如通过event_title键入$posts[0]或start_date来$posts['1']

我怎么能实现我可以命名键,以便我可以在我的输出中使用$posts[title]$posts['start_date']

我试图构建第二个数组使用array_combine,但这失败了。

<?php 
$args = array( 'post_type' => 'cpt_kalender', 'post_status' => 'publish', 'numberposts' => '-1', 'meta_key' => 'cf_termin_start', 'orderby' => 'meta_value_num', 'order' => 'ASC' );

$posts = get_posts( $args );

$group_posts = array();

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

    /*
        Hole die Termine der einzelnen Startdaten
        - Schreibe das Datumsformat yyyymmdd in yyyy-mm-dd um
    */
    $titel = get_the_title();
    $termin_datum_start = get_field('cf_termin_start');
    $termin_datum_start = new DateTime($termin_datum_start);
    $termin_datum_ende = get_field('cf_termin_ende');
    $termin_datum_ende = new DateTime($termin_datum_ende);      
    $termin_jahr = $termin_datum_start->format('Y');
    $termin_monat = $termin_datum_start->format('F');
    $termin_tag = $termin_datum_start->format('d');
    $post_id = get_the_ID();
    $termin_start_uhrzeit_stunde = get_field('cf_termin_start_uhrzeit_stunde');
    $termin_start_uhrzeit_minute = get_field('cf_termin_start_uhrzeit_minute');
    $termin_ende_uhrzeit_stunde = get_field('cf_termin_ende_uhrzeit_stunde');       
    $termin_ende_uhrzeit_minute = get_field('cf_termin_ende_uhrzeit_minute');
    $termin_schulfrei = get_field('cf_termin_schulfrei');       
    $termin_intern = get_field('cf_termin_intern');

    /*
        Fülle das Array mit den Werten
    */
    $group_posts[$termin_jahr][$termin_monat][] = array(
        $titel,
        $termin_datum_start,
        $termin_datum_ende, 
        $post_id,
        $termin_start_uhrzeit_stunde,
        $termin_start_uhrzeit_minute,
        $termin_ende_uhrzeit_stunde,
        $termin_ende_uhrzeit_minute,
        $termin_schulfrei,
        $termin_intern
    );

endforeach; ?>

有没有办法告诉上面列出的数组在同一个foreach操作中所需的键名?

我很感激每一个提示。多谢。我只是在学习php,这让我疯狂。 :(

php arrays wordpress
1个回答
0
投票

要将值添加到$group_posts数组的部分。您可以为每个项目添加键。

$group_posts[$termin_jahr][$termin_monat][] = array(
  'title'                         => $titel,
  'termin_datum_start'            => $termin_datum_start,
  'termin_datum_ende'             => $termin_datum_ende, 
  'post_id'                       => $post_id,
  'termin_start_uhrzeit_stunde'   => $termin_start_uhrzeit_stunde,
  'termin_start_uhrzeit_minute'   => $termin_start_uhrzeit_minute,
  'termin_ende_uhrzeit_stunde'    => $termin_ende_uhrzeit_stunde,
  'termin_ende_uhrzeit_minute'    => $termin_ende_uhrzeit_minute,
  'termin_schulfrei'              => $termin_schulfrei,
  'termin_intern'                 => $termin_intern
);

然后你可以访问像$group_posts['termin_jahr']['termin_monat']['title']这样的值

由于您要使用termin_jahrtermin_monat添加每个项目,您需要首先提供这些项目才能访问正确的项目标题。

或者,您可以在数组中添加这些变量并稍后访问它,如下所示:

$group_posts = array(
  'title'                         => $titel,
  'termin_datum_start'            => $termin_datum_start,
  'termin_datum_ende'             => $termin_datum_ende, 
  'post_id'                       => $post_id,
  'termin_start_uhrzeit_stunde'   => $termin_start_uhrzeit_stunde,
  'termin_start_uhrzeit_minute'   => $termin_start_uhrzeit_minute,
  'termin_ende_uhrzeit_stunde'    => $termin_ende_uhrzeit_stunde,
  'termin_ende_uhrzeit_minute'    => $termin_ende_uhrzeit_minute,
  'termin_schulfrei'              => $termin_schulfrei,
  'termin_intern'                 => $termin_intern,
  'termin_jahr'                   => $termin_jahr,
  'termin_monat'                  => $termin_monat,
);

您可以在foreach数组上执行$group_posts循环,然后访问每个项目,如下所示:

foreach($group_posts as $group_post) {
  // Outputs $titel variable which you added to array above
  echo $group_post['title'];
}
© www.soinside.com 2019 - 2024. All rights reserved.