WordPressのbbpressで古いトピックを自動的にクローズにする方法

とても便利で有名なbbpressですが、日本での掲示板としての使い方であと一歩!といったところもありますよね。

 
その一つが、

手動でクローズにしない限り「永遠に返信ができちゃう」!

古いトピックを自動的にクローズにする
・最終更新がX日経過したものは自動でクローズ状態になる方法を紹介します。

とても簡単なのでWordPress初心者の方でも設定できると思います。

 

テキストエディタで新規作成、以下を記入して下さい。

<?php 

/*
Plugin Name: BBPress Close Old Posts
Description: Close BBPress 2.0+ posts that haven't been updated in X days. 
Author: meijiro
Version: 0.1
*/ 

register_activation_hook(__FILE__, 'bbpress_topic_scheduler');

add_action('bbpress_daily_event', 'bbpress_close_old_topics');

function bbpress_topic_scheduler() {
 wp_schedule_event(time(), 'daily', 'bbpress_daily_event');
}

function bbpress_close_old_topics() {
	// Auto close old topics
	$topics_query = array(
		'author' => 0,
		'show_stickies' => false,
		'parent_forum' => 'any',
		'post_status' => 'publish',
		'posts_per_page' => -1
	);
	if ( bbp_has_topics( $topics_query ) )
		while( bbp_topics() ) {
			bbp_the_topic();
			$topic_id = bbp_get_topic_id();
			$last_active = strtotime( get_post_meta( $topic_id, '_bbp_last_active_time', true ) );
			if ($last_active < strtotime( '-10 days') )
				bbp_close_topic( $topic_id );
		}
}
?>

デフォルトでは10日以上更新のないトピックは自動でクローズにすることになっていますので

if ($last_active < strtotime( '-10 days') )

の-10 daysを好きな日数に変更。

記入したらPHP形式で「close_old_topics.php」という名前で保存。
さらにclose_old_topicsというフォルダを作ってclose_old_topics.phpを入れる。

FTPでwp-content\plugins に入れます。
あとはWordPressダッシュボード/プラグインでclose_old_topicsを有効にすればOKです。