我一直在寻找一种方法来找到一种方法来按日期限制wordpress标签,并按照它们在所选时间范围内出现的次数进行排序。但我一直很不成功。
我想要实现的是类似Twitter上的热门话题。但在这种情况下,'趋势标签'。默认情况下,wordpress tagcloud会显示有史以来最受欢迎的标签。这在我的案例中毫无意义,因为我想追踪当前的趋势。
理想情况下会是这样的:
今天最受欢迎的标签
然后乘以“本周最受欢迎”和“本月最受欢迎”。有谁知道实现这个目标的方法?
答案 0 :(得分:3)
好的,我认为你可能想要的是这样做,比如说,最后50篇帖子。
循环播放最后n
个帖子,为每个帖子提取每个标记的term_id
,然后将该字符串传递给wp_tag_cloud()
的include
参数;
$how_many_posts = 50;
$args = array(
'posts_per_page' => $how_many_posts,
'orderby' => 'date',
'order' => 'DESC',
);
// get the last $how_many_posts, which we will loop over
// and gather the tags of
query_posts($args);
//
$temp_ids = array();
while (have_posts()) : the_post();
// get tags for each post
$posttags = get_the_tags();
if ($posttags) {
foreach($posttags as $tag) {
// store each tag id value
$temp_ids[] = $tag->term_id;
}
}
endwhile;
// we're done with that loop, so we need to reset the query now
wp_reset_query();
$id_string = implode(',', array_unique($temp_ids));
// These are the params I use, you'll want to adjust the args
// to suit the look you want
$args = array(
'smallest' => 10,
'largest' => 30,
'unit' => 'px',
'number' => 150,
'format' => 'flat',
'separator' => "\n",
'orderby' => 'count',
'order' => 'DESC',
'include' => $id_string, // only include stored ids
'link' => 'view',
'echo' => true,
);
wp_tag_cloud( $args );
答案 1 :(得分:0)
我很确定标签没有时间戳 - 也许您可以在特定时间段内搜索具有特定标签的帖子?
答案 2 :(得分:0)
我想你可以查看一些插件,看看你是否有一个像你需要的插件
答案 3 :(得分:0)
哟可以通过查询获取标记列表,这样您就不必进行循环抛出最后的X帖子。
<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>