So I’m trying to figure out this small piece, but I’m completely stuck and could use some assistance. I will break the code down into sections for understanding.
This will grab 5 of my posts:
$post_list = get_posts([ 'post_type' => 'post', 'posts_per_page' => 5, ]);
Output per post:
Array ( [0] => WP_Post Object ( [ID] => 59343 ) )
Then I’m adding the returned ID’s into an array using the below code:
$post_authors = []; foreach ($post_list as $key => $post) { $post_author = get_post_author($post->ID); $post_authors[] = $post_author['ID']; } print_r($post_authors);
This outputs me the following array:
Array ( [0] => 52714 [1] => 0 [2] => 3339 [3] => 0 [4] => 0 )
Then I’m matching my custom post author meta associated with the post:
$test_id = []; foreach ($post_authors as $author) { $test_id[] = get_post_meta($author, '_test_id'); } print_r($test_id);
This is the output that I get:
Array ( [0] => Array ( [0] => 7899 ) [1] => [2] => Array ( [0] => 3487 ) [3] => [4] => )
Is there a way that I can map the above posts as keys and then have the id as outputs? Also skip the empty values on get_posts()
.
For example:
Array ( [52714] => 7899 [3339] => 3487 )
All help would be appreciated!
Advertisement
Answer
If I understand your question correctly then you can use this logic.
$posts = array(5676,6767,0,0,564,898); $test_id = []; foreach ($posts as $key =>$value) { $test_id[$value] = $key; // get_post_meta($author, '_test_id'); } print_r($test_id); //output Array ( [5676] => 0 [6767] => 1 [0] => 3 [564] => 4 [898] => 5 )