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です。