2012-03-12 11 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プラグインがあります。要件として構成するだけです。インストールプロセスおよびその他の詳細は、プラグインに付属しています。そして確かにそれは幸せオプションを持っています。

+0

はええ、私はこの1つを知っているが、それはカテゴリのオプションを提供していません:
はこれを試してみてください。私は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

。しかし、うまくいかない:wp_postデータベースにpost_categoryカラムがないので、そのデータを取得する方法を見つけなければならないが、まだ見つけられない:カテゴリを追加せずに試してもBTW私は明らかに何か間違ったことをしています... – Ado

+0

ああ、私は質問自体をチェックしていませんでした、私はあとでawnserに戻ってきます – janw

+0

http://codex.wordpress.org/Class_Reference/WP_Queryをチェックしてくださいそれがうまくいくかどうかは分かりません。しかし除外するカテゴリを選択するのは簡単です – janw

関連する問題