この記事はブロックされています。続きを読みたい方はログインをして下さい。会員ではない方は新規会員登録をして下さい。


ワードプレス魔改造 オートブログ講座2 第十回目 人気記事アライバー スケジュールで実行させる

今回で人気記事アライバー編が最終回です。次回より新章突入です。
前回はカウントする仕組みを作ったので、次はスケジュールに登録して自動実行させます。
編集するファイルは例によってテーマフォルダにある「functions.php」です。

スケジュール実行についてはツイッターボットの制作でまったく同じことをしましたね。

▼ワードプレス×ツイッターによる無料でできるオートブログ 第十回目 自動フォロースクリプトをワードプレスで定期実行する スケジュールを細かく設定する方法

ワードプレス×ツイッターによる無料でできるオートブログ 第十回目 自動フォロースクリプトをワードプレスで定期実行する スケジュールを細かく設定する方法

「functions.php」に以下のスクリプトを記述します。「UTF-8」形式で保存して下さい。

//定数を定義
define( 'MY_CRON_SCHEDULE'  , 'twitter_auto_follow' ); 
define( 'MY_CRON_SCHEDULE2' , 'twitter_friend_check' ); 
define( 'MY_POPULAR_PAGE_SCHEDULE' , 'popular_page_manage' ); 

add_action( MY_POPULAR_PAGE_SCHEDULE	, 'popular_page_manage' );	//人気ページ管理
//人気ページ管理////////////////////////////////////////////////////////////////
function popular_page_manage()
{
//カスタムフィールドのページカウントと最終アクセス日をみて人気のない投稿を保留にする

//↓設定///////////////////////////////////////////////////

$TIME_INTERVAL		= 60 * 60;				//1時間ごと
$PASSED_TIME		= 60 * 60 * 24 * 30;	//1ヶ月

$MIN_LIMIT_COUNT	= 20;					//最低閲覧回数
$MIN_LIMIT_POST		= -1;					//一度に処理する件数 -1なら全件
$POST_STATUS		= 'publish';			//処理するステータス
$CHANGE_STATUS		= 'pending';			//変更するステータス
											//'publish'	公開済み
											//'pending'	保留(承認待ち)
											//'draft'	下書き
											//'private'	非公開
											//'trash'	ゴミ箱

$AUTHOR_NAME		= '';					//投稿者 複数指定はカンマ
$CATERGORY_NAME		= 'rss';				//削除するカテゴリスラッグ名 複数指定はカンマ

//↑設定///////////////////////////////////////////////////

	//パラメータを指定
	$args = array(

		'posts_per_page'=> $MIN_LIMIT_POST,		//表示件数。-1なら全件表示
		'post_status'	=> $POST_STATUS,		//取得する投稿ステータス publish=一般公開
		'orderby'		=> 'ID',				//ID順に並び替え
		'order'			=> 'DESC',				//降順
		'author_name'	=> $AUTHOR_NAME,		//投稿者
		'category_name'	=> $CATERGORY_NAME,		//カテゴリスラッグ名

	);

	$the_query = new WP_Query( $args );

	//投稿があれば
	if ( $the_query->have_posts() ) :

		//投稿を処理する
		while ( $the_query->have_posts() ) : $the_query->the_post();

			//記事ID
			$post_id	= get_the_ID();

			//記事の作成日を取得
			$post_value = get_post( $post_id ); 
			$post_date = $post_value->post_date;

			//現在時刻(9時間の時差を足す)
			$now_time = time() + 60*60*9;

			//記事作成時間を得る Unixタイムスタンプ UTC からの経過秒数への変換
			$post_date_serial = strtotime( $post_date );

			//カスタムフィールドから最終アクセス時間をゲット
			$post_last_update = get_post_meta( $post_id , 'post_last_update' , true );

			//カスタムフィールドからページカウント数をゲット
			$post_count = get_post_meta( $post_id , 'post_count' , true );

			//投稿経過時間が指定時間を過ぎていれば
			if( ( $now_time - $post_date_serial ) >= $PASSED_TIME )
			{

				//ぺージアクセスが最低閲覧回数以下で、最終アクセスが指定時間を過ぎていれば
				if( $post_count < $MIN_LIMIT_COUNT and ( $now_time - $post_last_update ) >= $PASSED_TIME )
				{

					//記事ステータスを変更する
					$my_post = array();
					$my_post[ 'ID' ]			= $post_id;
					$my_post[ 'post_status' ]	= $CHANGE_STATUS;

					//データベースの投稿情報を更新
					wp_update_post( $my_post );
				}

			}

		endwhile;

	endif;

	//クエリをリセット
	wp_reset_postdata();

	//指定時間に一回だけ実行する
	wp_schedule_single_event( time() + $TIME_INTERVAL , MY_POPULAR_PAGE_SCHEDULE );

}
///////////////////////////////////////////////////////////////////////////////

「//定数を定義」とある箇所は「MY_POPULAR_PAGE_SCHEDULE」というスケジュール名を別名として表示するための定義です。
例えば、サンプルでは英語「’popular_page_manage’」を使っていますが、日本語にして分かりやすくすることもできます。
しかし、今回は特にいじる必要はないと思います。

[note]//定数を定義
define( ‘MY_CRON_SCHEDULE’  , ‘twitter_auto_follow’ );
define( ‘MY_CRON_SCHEDULE2’ , ‘twitter_friend_check’ );
define( ‘MY_POPULAR_PAGE_SCHEDULE’ , ‘popular_page_manage’ ); [/note]

設定ですが、「設定」と書かれている箇所で行います。
コメントを見ればなにをいじればいいか分かるようになっています。

//↓設定///////////////////////////////////////////////////

$TIME_INTERVAL		= 60 * 60;				//1時間ごと
$PASSED_TIME		= 60 * 60 * 24 * 30;	//1ヶ月

$MIN_LIMIT_COUNT	= 20;					//最低閲覧回数
$MIN_LIMIT_POST		= -1;					//一度に処理する件数 -1なら全件
$POST_STATUS		= 'publish';			//処理するステータス
$CHANGE_STATUS		= 'pending';			//変更するステータス
											//'publish'	公開済み
											//'pending'	保留(承認待ち)
											//'draft'	下書き
											//'private'	非公開
											//'trash'	ゴミ箱

$AUTHOR_NAME		= '';					//投稿者 複数指定はカンマ
$CATERGORY_NAME		= 'rss';				//削除するカテゴリスラッグ名 複数指定はカンマ

//↑設定///////////////////////////////////////////////////

必ずいじらなければならない箇所は「$CATERGORY_NAME」です。
「rss」と入っていますが、これは「rss」というカテゴリのスラッグを対象にするという意味です。
「rss」のカテゴリ以外は削除しません。複数指定する場合はカンマで区切ります。
その他、投稿者別に指定することもできます。

次に「$PASSED_TIME」です。これは猶予期間です。初期値では1ヶ月となっています。記事は検索エンジンが巡回して検索にキャッシュされないとアクセスがないので、あまりにも短すぎるとユーザーが見付ける前に処理されてしまいます。最短でも2週間~4週間はとってください。

最後に「$MIN_LIMIT_COUNT」猶予期間内にアクセス数がどれだけ集まったかの判定に使います。
初期値で「20」となっているのでアクセス数が20件未満の記事はリストラされてしまいます。
多くすると残存する記事が残り、少なくすると少数精鋭となります。
また、「1000」などの極端に大きな数字になると、自動的に全ての記事が一定期間経つと自動削除できます。

「$CHANGE_STATUS」では記事の処理を指定します。いきなりゴミ箱だと間違いがある可能性があるので、初期値では「保留」となっています。

最後にスケジュール登録です。
スケジュール登録はツイッターボット編をやった人は、既に記述がされているので全く同じ通りにやっている場合は、「functions.php」に以下のスクリプトを記述します。「UTF-8」形式で保存して下さい。
ツイッターボット編をやっていない人は次に説明します。

関連記事