2010-12-27 6 views
1

질량을 삭제 내가 태그 1000 년대를하고 난 단순히 X 시간 이상 사용되지 않는 모든 태그 ... 즉 5 번 삭제하고 싶습니다.질량이 인기 태그 <p></p>을 삭제 인기 태그

누구나 간단한 방법을 알고 있습니까? 심지어 곧은 SQL은 완전히 ROCK 될 것입니다!

답변

-1
$x = 5; // set this to any number 
$sql = "SELECT `name` FROM `wp_terms`"; 
$result = mysql_query($sql); 
$count = array(); 
while($row = mysql_fetch_assoc($result)) 
{ 
    $count[$name]++; 
} 
foreach($count as $key = $value) 
{ 
    if($value < $x) 
    { 
     $sql2 = "DELETE FROM `wp_terms` WHERE `name` = '". $key ."'"; 
     $result2 = mysql_query($sql2); 
    } 
} 

더 효율적인 방법이 있지만 작업을 수행합니다.

편집 : 먼저 백업하십시오. 나는 그 테이블이 태그들에 독점적이라는 것을 완전히 확신하지 못한다.

+0

놀라운, 덕분에 슈퍼 빠른 응답을 많이했다, 설치 ... 내가 지금 그들에게 시험을 줄 것이다. 다시 한 번 감사드립니다 –

+0

제이슨 맥 크레 리 (Jason McCreary)의 예제를 사용하여 코드를 변경하거나 쿼리를 실행하고 어떤 일이 발생하는지 알고 싶습니다. 하나의 데이터베이스가 아닌 3 개의 레이어에서 행을 삭제해야하는 것처럼 보입니다. – Citizen

+0

그냥'wp_terms'에서 삭제할 수 있지만 같은 이름의 다른 태그를 추가하면 데이터의 무결성과 문제가 발생할 수 있습니다. –

2

SQL 명령을 사용하는 것이 최선의 방법입니다. 테이블 wp_terms, wp_term_relationshipswp_term_taxonomy이 관심의 대상입니다. WordPress는 wp_term_taxonomy.count과 관계를 추적합니다. 이렇게하면 삶이 편하게됩니다.

-- remove terms 
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'tag' AND count <= 5;) 
-- remove all relationships 
DELETE FROM wp_term_relationships WHERE term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy = 'tag' AND count <= 5;) 
-- remove taxonomy entry 
DELETE FROM wp_term_taxonomy WHERE taxonomy = 'tag' AND count <= 5; 

참고 : 내가 강하게 위의 명령을 실행하기 전에 이러한 테이블의 백업을 제안합니다.

+0

Jason, WP 3.1.3에서도이 기능을 사용할 수 있습니까? – Riccardo

+0

@ 리카르도. 3.1.3에서 스키마 변경 사항을 인식하지 못했기 때문입니다. 어느 쪽이든 내 ** 참고 ** 참고하십시오. :) –

+0

예, 백업을 수행하고 정리를 시작했습니다. 38,000 개의 태그가 사라졌습니다. 고마워요! – Riccardo

0

Jasons 대답은 제외했다 나의 분류학의 이름은 'post_tag'하지 '태그'

+0

별도의 답변을 제공하는 대신 답변과 upvote에 의견을 제시하는 것이 좋습니다. –

관련 문제