4

我得到了“最受欢迎的标签”wordpress 插件,所以我可以在我的网站上显示标签,但它会显示一堆通用标签。是否可以添加任何代码,让我可以在我的网站上显示最受欢迎的标签,并可以选择排除我不想要的标签?还是允许这样做的插件?

4

3 回答 3

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>
于 2013-01-10T18:57:16.950 回答
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 列表。

于 2016-10-24T17:11:18.973 回答
1

我认为 get_tags->count 并没有真正计算范围内的标签。我已经实施了这个解决方案,如果这对你有用,请告诉我:

<?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>';
}
}
?>
于 2016-03-17T18:50:32.997 回答