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