以数组形式获取ACF中继器的列表

时间:2016-02-25 作者:Roman

我运营一个音乐会网站&;音乐俱乐部。事件在称为“事件”的自定义帖子类型中设置。在这里,我设置了日期、活动名称以及有关该活动的所有其他信息。

在这种自定义帖子类型中,我有一个名为“艺术家”的ACF(高级自定义字段)转发器,子字段为“artistname”和“artistweb”。

我的目标是所有过去在我们俱乐部踢球的艺术家。此列表应按艺术家名称的字母顺序排序,如果存在链接(artistlik),则艺术家的名称应链接到该网站。

What I have so far:

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

$args = array(
    \'posts_per_page\' => \'-1\',
    \'post_type\'     => \'artists\',
    \'meta_query\'    => array(
        \'relation\'      => \'AND\',
        array(
            \'key\' => \'date\',
            \'value\' => $today,
            \'compare\' => \'<\',
        ),
    )
);

$the_query = new WP_Query( $args );
$post_ids = wp_list_pluck( $the_query->posts, \'ID\' );
$artist_list = array();

foreach($post_ids as $post_id){
    $artist_repeater = get_field(\'artists\', $post_id);

    if (is_array($artist_repeater)) {
        foreach($artist_repeater as $artist_detail){
            array_push($artist_list, $artist_detail);
        }
    }
}

$artist_list = array_map("unserialize", array_unique(array_map("serialize", $artist_list)));
$order = array();
foreach( $artist_list as $i => $row ) {
    $order[ $i ] = $row[\'artistname\'];
}

array_multisort( $order, SORT_ASC, $artist_list );
echo "<pre>";
print_r($artist_list);
echo "</pre>";
?>
半途而废!

使用上述代码,我可以获得所有艺人姓名和艺人网站,但其外观如下:

Array
(
[0] => Array
    (
        [artistname] => 7th Break
        [artistweb] => 
    )

[1] => Array
    (
        [artistname] => Al Berto & the Fried Bikinis
        [artistweb] => http://www.al-berto.ch
    )

[2] => Array
    (
        [artistname] => Asskick
        [artistweb] => 
    )

[3] => Array
    (
        [artistname] => Aynsley Lister
        [artistweb] => www.aynsleylister.co.uk
    )
.........
我的目标只是一个普通的ul列表,上面有艺术家的名字,如果一个艺术家有链接,那么这个名字应该链接到这个url

第七次突破;油炸比基尼,阿什基克,艾恩斯利·利斯特,有人能帮我吗?

非常感谢。

古罗马的

1 个回复
SO网友:TheDeadMedic

圣环攻击蝙蝠侠!我认为您可以将其简化很多:

$the_posts = get_posts( array(
    \'posts_per_page\' => \'-1\',
    \'post_type\'      => \'artists\',
    \'meta_query\'     => array(
        \'relation\' => \'AND\',
        array(
            \'key\'     => \'date\',
            \'value\'   => date( \'Ymd\' ),
            \'compare\' => \'<\',
        ),
    )
));

$the_list = array();

foreach ( $the_posts as $the_post ) {
    if ( $artists = get_field( \'artists\', $the_post->ID ) ) {
        // Build a simple name => link index
        foreach ( $artists as $artist )
            $the_list[ $artist[\'artistname\'] ] = $artist[\'artistweb\'];
    }
}

// Now sort the array by key (artist name)
ksort( $the_list );

echo \'<ul>\';
foreach ( $the_list as $artist => $link ) {
    echo \'<li>\';
        if ( $link )
            echo \'<a href="\' . $link . \'">\';

        echo $artist;

        if ( $link )
            echo \'</a>\';
    echo \'</li>\';
}
echo \'</ul>\';

相关推荐

在编辑帖子的内置类别metabox中使用wp_Terms_Checklist的输出时,如何修改输出?

在WP Admin的编辑屏幕上,有一个用于WP内置类别分类的元框。此元框是使用post_categories_meta_box() (/wp-admin/includes/meta-boxes.php).此元框使用wp_popular_terms_checklist( $tax_name ) 和wp_terms_checklist( $tax_name ) 在元框中输出实际类别(带有复选框)。wp_terms_checklist() (wp-admin/includes/template.php) 使用W