WordPress Snippet

ワードプレスをカスタマイズしよう

WordPress 4.9 デザインスケジュール機能

先日、4.9のベータ版の発表がありました。

WordPress 4.9では、カスタマイザーの下書き、予約機能が追加される模様です。

例えば、日時を指定して、テキストウィジェット等で特別なメッセージを表示するといった作業が可能になりそうです。

予定している変更を、プリビューリンクで複数人で共有する事も出来そうなので、変更の承認作業が必要な場合などに便利そうです。

カスタマイザーの設定は、カスタム投稿タイプ customize_changeset に保存されます。

なので、一般の投稿を取得するような形で、カスタマイザーの設定を取得する事も可能です。

$args= array(
	'posts_per_page' => -1,
	'orderby'=> 'date',
	'order'=> 'DESC',
	'post_type' => 'customize_changeset',
	'post_status' => 'publish',
	'suppress_filters'=> true 
);
$posts_array= get_posts( $args ); 

保存されるデータは、例えばテキストウィジェットのコンテンツは、base64_encodeされて保存されていますので、以下のように取得することが出来ます。

$data= 'YTo0OntzOjU6InRpdGxlIjtzOjU6ImhlbGxvIjtzOjQ6InRleHQiO3M6MjY6ImNoYW5nZSBjb250ZW50cw0KDQpjaGFuZ2VzIjtzOjY6ImZpbHRlciI7YjoxO3M6NjoidmlzdWFsIjtiOjE7fQ==';
$serialized_data= base64_decode( $data );
var_dump( unserialize( $serialized_data ) );

結果

array(4) { ["title"]=> string(5) "hello" ["text"]=> string(26) "change contents changes" ["filter"]=> bool(true) ["visual"]=> bool(true) }

また、必要によっては、リビジョンを追加する事も可能です。

function my_post_type_object() {
 add_post_type_support( 'customize_changeset', 'revisions' );
}
add_action( 'init', 'my_post_type_object', 100 );

関連

ウィジェットの期間を指定して、表示非表示設定を追加するプラグイン

Widget Visibility Time Scheduler — WordPress Plugins