2010-05-31 8 views
6

나는 지금까지 WordPress 태그를 날짜별로 제한하고 선택한 시간대에 나타난 횟수만큼 순서를 찾는 방법을 찾고있었습니다. 그러나 나는 오히려 불행했습니다.어떻게 wordpress tagcloud를 날짜까지 제한합니까?

내가 달성하고자하는 것은 Twitter의 트렌드 주제와 같습니다. 하지만이 경우 '인기 급상승'입니다. 기본적으로 wordpress tagcloud는 모든 시간 동안 가장 인기있는 태그를 표시합니다. 내 추세를 추적하고 싶기 때문에 내 사건에는 아무런 의미가 없습니다.

이상적으로는 같은 것이다 : 오늘의

가장 인기있는 태그

  • 오바마 (18 언급)
  • 뉴욕 (15 언급)
  • 아이언 맨 (11 언급)
  • 로빈 후드 (7 언급)

그리고 나서 '가장 인기있는 이번 주'와 '가장 인기있는 이번 달'을 곱합니다. 아무도 이것을 달성하는 방법을 알고 있습니까?

답변

0

저는 태그에 타임 스탬프가 없다고 확신합니다. 특정 시간대에 특정 태그가있는 게시물을 검색 할 수 있습니까?

+0

실제로는 타임 스탬프가 없습니다. 그러나 그들은 게시물과 관련이 있고 게시물에는 타임 스탬프가 있기 때문에 타임 스탬프를 검색 할 수 있어야한다고 생각했습니다. 당신의 대답은 나를 생각하게했다. 태그에 타임 스탬프 테이블을 추가하는 것이 가장 쉽지 않을까요? – Nordin

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); 
+0

아마도 태그를 저장하는 방법을 고려할 때이 작업을 수행하는 유일한 방법이지만 게시물 수가 늘어 나면 실제로 느려집니다. – Kasumi

+0

감사합니다! "$ posttags = get_the_tags()"줄을 세미콜론으로 끝내십시오. Executable PHP 위젯으로 작업하고 으로 모든 것을 처리했습니다. 예 : http://www.priestessastrology.com/ – Zade

+0

@Zade 세미콜론을 추가했습니다. 사용 권한에 대한 적절한 카르마가 있으면 스택 오버플로에서 구문 오류가있는 대답을 편집하십시오! – artlung

0

난 당신이 플러그인의 일부를보고 당신은 당신이 필요 같은 플러그인이 있는지 확인 할 수 있다고 생각

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> 
관련 문제