I’m trying to build a filter for a custom post type page. The custom post type has a metabox that allows inputting of different authors.
I am displaying the post names in a dropdown like this, using the get_post_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; ?>
The problem is that some values are grouped together, typed separated by commas. I need to take every value in the field as individual, and avoid duplicates.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
This is just a basic php array question – not a WP question.
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
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0