I have wordpress and many posts. Every post have on tag. Posts may have same tags.
I have:
post1 tag1 date1
post2 tag1 date2
post3 tag2 date3
post4 tag3 date4
post5 tag2 date5
I have get:
post1
post3
post4
That is, I want to select from all posts one post from posts with the same tag and the earliest by date of publication.
I assume the following algorithm:
Get all tags of blog
Get posts for each tag
Get last date post for each tag
Show all posts from step 3.
I have wordpress and many posts. Every post have on tag. Posts may have same tags.
I have:
post1 tag1 date1
post2 tag1 date2
post3 tag2 date3
post4 tag3 date4
post5 tag2 date5
I have get:
post1
post3
post4
That is, I want to select from all posts one post from posts with the same tag and the earliest by date of publication.
I assume the following algorithm:
Get all tags of blog
Get posts for each tag
Get last date post for each tag
Show all posts from step 3.
1 Answer
Reset to default 0$args = array(
'type' => 'post',
'orderby' => 'name'
);
$tags = get_tags($args);
foreach($tags as $tag) {
$the_query = new WP_Query( 'tag='.$tag->name );
if ( $the_query->have_posts() ) {
$the_query->the_post();
$desired_posts[] = get_the_ID(); // all the post IDs stored here.
} else {
// no posts found
}
wp_reset_postdata();
}
$args1 = array(
'post_type' => 'post',
'orderby' => 'date',
'post__in' => $desired_posts,
'posts_per_page' => -1
);
$the_query = new WP_Query( $args1 );
echo '<ul>';
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>'. get_the_title() . '</li>';
}
} else {
// no posts found
}
echo '</ul>';
WP Query
Documentation here developer.wordpress/reference/classes/wp_query ... you can filter and get whatever posts you want using this – bbruman Commented May 5, 2020 at 13:22