我希望我的wordpress帖子在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');
答案 0 :(得分:2)
有一个post expirator插件可以完成这项工作。您只需将其配置为您的要求即可。插件提供了安装过程和其他详细信息。它肯定有会议选择。
答案 1 :(得分: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')";