显示最热门的标签?

时间:2012-12-15 00:24:57

标签: wordpress

我得到了“最受欢迎的标签”wordpress插件,所以我可以在我的网站上显示标签,但它显示了一堆通用标签。有没有我可以添加的代码,允许我在我的网站上显示最受欢迎的标签,可以选择排除我不想要的标签?或者允许这个的插件?

3 个答案:

答案 0 :(得分:1)

此代码将返回过去30天内最常用的代码。有了一点jQuery和CSS,你可以自定义,例如,在第一个上放一个大字体,在最后一个上放一个小字体。

<ul id="footer-tags">
    <?php $wpdb->show_errors(); ?> 
    <?php
        global $wpdb;
        $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 30 DAY) <= $wpdb->posts.post_date");

if(count($term_ids) > 0){

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

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

答案 1 :(得分:1)

我认为get_tags-&gt;计数并不真正计算范围内的标记。我已经实现了这个解决方案,请告诉我这是否适合您:

<?php
global $wpdb;
$term_ids = $wpdb->get_col("
SELECT term_id , count(*) cont 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 7 DAY) <= $wpdb->posts.post_date AND  $wpdb->term_taxonomy.taxonomy='post_tag'
GROUP BY term_id
ORDER BY cont DESC
LIMIT 5");

if(count($term_ids) > 0){
   $tags = get_tags(array(
   'orderby' => 'count',
   'order'   => 'DESC',
   'number'  => 5,
   'include' => $term_ids,
));
foreach ( (array) $tags as $tag ) {
   echo '<li><a href="' . get_tag_link ($tag->term_id) . '" rel="tag">' . $tag->name . '</a></li>';
}
}
?>

答案 2 :(得分:1)

我看到的解决方案涉及编写自定义查询或插件。当您询问特定插件时,请知道这可以通过纯WP完成。这有两个选择:

首先,您可以使用wp_tag_cloud创建标记云,并按count对其进行排序,如下所示:

$tags = wp_tag_cloud(array(
    'echo' => false,
    'orderby' => 'count',
    'order' => 'DESC'
));

您可以使用exclude参数排除某些代码。您还可以自定义字体大小输出,或者只使用CSS忽略标记云字体大小。

另一种选择是使用get_terms,可以这样使用:

$tags = get_terms(array(
    'taxonomy' => 'post_tag',
    'orderby' => 'count',
    'order' => 'DESC',
));

我个人是第二个get_terms选项的粉丝。与wp_tag_cloud一样,您可以通过exclude参数传递要排除的ID列表。