admin管理员组

文章数量:1425820

I'm getting the most used tags in the 1 day interval and everything works fine but how do I add the limitation to get tags with at least 5 posts and order them by counting?

Actual code:

$term_ids = $wpdb->get_col("
    SELECT term_id FROM $wpdb->term_taxonomy
    INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id=$wpdb->term_relationships.term_taxonomy_id
    INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
    WHERE DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= $wpdb->posts.post_date"            
);

$tags = get_tags(array(
    'orderby' => 'count',
    'order'   => 'DESC',
    'number'  => 10,
    'include' => $term_ids,
));

foreach ( (array) $tags as $tag ) {
    echo '<li><a href="' . get_tag_link ($tag->term_id) . '" rel="tag">' . $tag->name . '</a></li>';
}

Thanks in advance!

I'm getting the most used tags in the 1 day interval and everything works fine but how do I add the limitation to get tags with at least 5 posts and order them by counting?

Actual code:

$term_ids = $wpdb->get_col("
    SELECT term_id FROM $wpdb->term_taxonomy
    INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id=$wpdb->term_relationships.term_taxonomy_id
    INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
    WHERE DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= $wpdb->posts.post_date"            
);

$tags = get_tags(array(
    'orderby' => 'count',
    'order'   => 'DESC',
    'number'  => 10,
    'include' => $term_ids,
));

foreach ( (array) $tags as $tag ) {
    echo '<li><a href="' . get_tag_link ($tag->term_id) . '" rel="tag">' . $tag->name . '</a></li>';
}

Thanks in advance!

Share Improve this question edited May 30, 2019 at 21:27 Alex asked May 30, 2019 at 20:24 AlexAlex 155 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

I found a solution!:

$term_ids = $wpdb->get_col("
    SELECT term_id FROM $wpdb->term_taxonomy
    INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id=$wpdb->term_relationships.term_taxonomy_id
    INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
    WHERE DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= $wpdb->posts.post_date"            
);

$tags = get_tags(array(
    'orderby' => 'count',
    'order'   => 'DESC',
    'number'  => '10', // <-- maximum number of tags
    'include' => $term_ids,
    'fields'  => 'ids'
));

foreach($tags as $tag) {                
    $term = get_term_by('id', $tag, 'post_tag');
    if ($term->count < 5) { // <-- minimum number of posts              
        $index = array_search($term->term_id, $tags);
        unset($tags[$index]);                   
    }               
}

foreach ( (array) $tags as $tag_result ) {
    $term = get_term_by('id', $tag_result, 'post_tag');
    echo '<li><a href="' . get_tag_link ($term->term_id) . '" rel="tag">' . $term->name . '</a></li>';
}

本文标签: Top tags with minimum number of posts