マルチサイトでサイト作成時に自動的に ktaisession テーブルが作られるようにする

マルチサイトだと ktaisession テーブルが作成されずに、フィーチャーフォンで管理画面にログインできない貴方に。

add_action( 'wpmu_new_blog', 'generate_ktaisession_table' );

function generate_ktaisession_table( $blog_id ) {
	global $Ktai_Style;
	
	$blog_id = (int)$blog_id;
	if ( ! is_object( $Ktai_Style ) ) { return; }
	if ( ! class_exists( 'KtaiStyle_Install' ) ) {
		$admin_dir = WP_PLUGIN_DIR . '/' . $Ktai_Style->get( 'plugin_dir' ) . '/' . KtaiStyle::ADMIN_DIR;
		require_once( $admin_dir . '/install.php' );
	}
	if ( switch_to_blog( $blog_id ) ) {
		KtaiStyle_Install::install();
		restore_current_blog();
	}
}

WordPress の疑似cronの実行時間を調整する

WordPress で定期的な処理を行うには、wp_schedule_event という関数を用いることで実現可能です。使い方は、リンク先を見ていただくとして、定期実行させる時間を調整する方法(といっても単なる引数の設定の仕方)を紹介しておきます。

プラグインの有効化した時間に関わらず、午前1時に定期処理させたい場合は、

wp_schedule_event( ceil( time() / 86400 ) * 86400 + ( 1 - get_option( 'gmt_offset' ) ) * 3600, 'daily', 'my_daily_event' );

こんな感じ。午前1時ではなくて、もっと遅い時間などに実行させたい場合は、get_option の前の1を、その時刻で設定すれば大丈夫なはずです。

ceil( time() / 86400 ) * 86400

で、世界標準時での翌日午前0時のタイムスタンプが取れるので(※ WordPress は、内部処理を世界標準時の変更しているため、time関数などの返値がGMTとなります。)、これに時差の差分と、午前1時に実行させるための1時間分を加味させるために

( 1 - get_option( 'gmt_offset' ) ) * 3600

を足しています。

get_comments で複数の投稿タイプを取得する

複数のカスタム投稿タイプのコメントをまとめて取得したい での回答した内容の備忘録(と、若干のコードリファクタリング)

get_comments で指定できるパラメーターは、文字列形式のみで、配列やカンマ区切りによる複数指定はできません。
これは、内部でSQL文を構成する際に、prepare メソッドを用いて文字列や数字にはめ込んでいるためです。
ただし、comments_clauses というフィルターフックが用意されていて、SQL文のほぼ全ての句を変更することができるようになっています。

function multi_post_type_comments_where( $clauses, $comment_query ) {
	global $wpdb;
	if ( is_array( $comment_query->query_vars['post_type'] ) ) {
		$post_types = $wpdb->_escape( $comment_query->query_vars['post_type'] );
		$search = $wpdb->prepare( " AND {$wpdb->posts}.post_type = %s", $comment_query->query_vars['post_type'] );
		$replace = " AND {$wpdb->posts}.post_type IN ( '" . implode( "','", $post_types ) . "' )";
		$clauses['where'] = str_replace( $search, $replace, $clauses['where'] );
	}
	return $clauses;
}
add_filter( 'comments_clauses', 'multi_post_type_comments_where', 10, 2 );

回答は、投稿タイプのパラメーター固定ですが、パラメーターを foreach などでループ処理させることで、他のパラメーターについても、配列での複数指定に対応させることは可能なはずです。