如何将元值分解为不同的项并避免重复?

时间:2020-07-21 作者:artist learning to code

我正在尝试为自定义帖子类型页面构建过滤器。自定义帖子类型有一个元框,允许输入不同的作者。

我使用get\\u post\\u meta以如下方式下拉显示帖子名称:

/*Get the Authors*/
$list_authors = array(
\'post_type\'         => array(\'publications\'),
);
$authors = array();
$query_authors = new WP_Query( $list_authors );

if ( $query_authors->have_posts() ) :
while ( $query_authors->have_posts() ) : $query_authors->the_post();
$author = get_post_meta(get_the_id(), \'cl_pub_authors\', true);
if(!in_array($author, $authors)){
$authors[] = $author;
}
endwhile;
wp_reset_postdata();
endif;
foreach( $authors as $author ):
?>
<option value="<?php echo $author;?>"><?php echo $author;?></option>
<?php endforeach; ?>
问题是有些值被分组在一起,并用逗号分隔。我需要将字段中的每个值作为单独的值,并避免重复。

1 个回复
最合适的回答,由SO网友:shanebp 整理而成

这只是一个基本的php数组问题,而不是WP问题。

function unique_authors ( $authors ) {
    $newArray = array();

    foreach( $authors as $item ) {
        $itemArray = explode( ", ", $item );
        $newArray = array_merge($newArray, $itemArray);
    }

    $newArray = array_unique($newArray);
    return $newArray;
}

$authors = unique_authors( $authors );

foreach( $authors as $author ):  //etc

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在