如何推送/创建关联数组?

时间:2018-06-03 17:07:41

标签: php wordpress loops

我正在运行一个帖子循环,这些帖子有四个我需要关联的属性:标题,日期,链接,位置:

while (have_posts()) : the_post();
    if( !in_array( $post->ID, $already_displayed_ids )) {
        array_push( $thisPostid, $post->ID );
        $title = get_the_title();
        $location = usp_get_meta(false, 'usp-custom-8');
        $link = get_permalink();
        $contentYear = usp_get_meta(false, 'usp-custom-14');
        if ($contentYear >= 0 && $contentYear <= 2019) {
            array_push($yearsArray, $contentYear);
            if (($wp_query->current_post +1) == ($wp_query->post_count)) {
                $yearsArray = array_unique($yearsArray);
                sort($yearsArray);
            }
        }
        array_push( $already_displayed_ids, $post->ID );
    }
endwhile;

基本上我正在运行一个循环,我在$already_displayed_ids中检查是否有重复,我需要关联并推送我在这里推送的任何帖子的标题,位置,日期和链接array_push($yearsArray, $contentYear);

目前我只能推$contentYear,但推文后没有linktitlelocation,我想创建一个关联数组,以推动每个帖子我需要的所有规格。 $contentYear是一个带日期的自定义字段,因此我使用这些值创建导航,它们是日期。但我需要将每个日期与他们的标题,位置和链接相关联,因为我目前还不知道如何推动这些规格与我推动的时间相关联。

2 个答案:

答案 0 :(得分:0)

据我所知,没有从帖子中获取关联数组的直接功能。 以下是您要求的摘录:

$posts = array();
if (have_post()) :
    while (have_posts()) :
        array_push($posts, 
            Array(
                'id'=>the_ID(),
                'quantity'=>1,
                'size'=>$size,
                'colour'=>$colour
            )
        );
    endwhile;
    $_SESSION['cart'] = $posts[0]; // change 0 index
endif;

请注意上面的代码并不理想,你可能应该这样做。此外,您可能希望使用cookie而不是会话。

答案 1 :(得分:0)

这是我解决它的方式:

while (have_posts()) : the_post();
    if( !in_array( $post->ID, $already_displayed_ids )) {
        array_push( $thisPostid, $post->ID );
        $contentYear = usp_get_meta(false, 'usp-custom-14');
        if ($contentYear >= 0 && $contentYear <= 2019) {
            array_push($yearsArray, 
                array(
                    'year'=> $contentYear,
                    'link'=> get_permalink(),
                    'location'=> usp_get_meta(false, 'usp-custom-8'),
                    'title'=> get_the_title()
                )
            );
        }
        array_push( $already_displayed_ids, $post->ID );
    }
endwhile;

然后我可以foreach ($yearsArray as $year) {echo $year['title']