2012-03-12 2 views
1

나는 15 일 (기장으로 전환) 후에도 자동으로 내 워드 프레스 게시물이 만료되기를 원했지만 일부 카테고리에서는 게시물을 보호하기를 원했습니다. 이것에 대한 몇 가지 주제를 읽고 테마 기능에 다음 코드를 추가했지만 작동하지 않습니다. 여기서 내가 뭘 잘못하고 있니? 도와주세요!자동 유효 기한이 만료 된 워드 프레스

function expire_posts() { 
global $wpdb; 
$daystogo = "15"; 
$protcats = array(9,10); 
$sql = "UPDATE wp_posts SET `post_status` = 'draft' WHERE `post_type` = 'post' AND `post_category` != '$protcats' AND DATEDIFF(NOW(), `post_date`) > '$daystogo')"; 
$wpdb->query($sql); 
} 

add_action('wp_head', 'expire_posts'); 

답변

2

이 일을 할 수있는 post expirator 플러그인이있다. 요구 사항을 구성하기 만하면됩니다. 설치 프로세스 및 기타 세부 사항은 플러그인과 함께 제공됩니다. 그리고 그것의 확실하게 congiguration 선택권이 있습니다.

+0

그래, 난이 일에 대해 알고 있지만,이 범주에 대한 옵션을 제공하지 않습니다
이보십시오. 나는 wp_post 데이터베이스에 "post_category"컬럼이 없기 때문에 카테고리를 인식하고 있다는 것을 짐작할 수있다. 나는 그것을 검색하는 방법이나 할당 된 위치를 모른다. : – Ado

1

문자열에 배열 ($ protcats)을 넣습니다.
echo $sql;을 시도하면 고양이 ID가 쿼리에 포함되지 않지만 array이 표시됩니다.

$protcats = array(9,10); 

$excludeCats = ''; 
foreach($protcats as $cat){ 
    $excludeCats .= " AND `post_category` != '$cat' "; //add each category to it's own exclude 
} 
$sql = "UPDATE wp_posts SET `post_status` = 'draft' WHERE `post_type` = 'post' ". $excludeCats ." AND DATEDIFF(NOW(), `post_date`) > '$daystogo')"; 
+0

감사합니다. janw는 코딩이 잘되어있어. . 하지만 그것은 작동하지 않습니다 : wp_post 데이터베이스에 더 이상 post_category 열이 없기 때문에 데이터를 가져 오는 방법을 찾아야하지만 아직 찾을 수 없습니다 : BTW는 카테고리를 추가하지 않고 시도하더라도 BTW는 실행하지 않습니다. 't 일, 나는 분명히 뭔가 잘못하고있다. ... – Ado

+0

오, 그래, 나는 그 자체를 확인하지 않았고, 나중에 awnser와 함께 다시 올 것이다. – janw

+0

http://codex.wordpress.org/Class_Reference/WP_Query를 확인한다. 그것이 효과가 있을지 확실하지 않은 경우. 하지만 범주를 선택하기가 쉽습니다. – janw