下北沢 OSS Cafe 確認スペシャルの補足
スケルトンだから、このままだと動かないよ。
<?php
new pan_pan_pan();
Class pan_pan_pan {
private $field_name = array(
'theme' => 'pan_pan_pan_theme',
'content' => 'pan_pan_pan_content',
);
CONST POST_TYPE = 'pan_pan_pan';
function __construct() {
add_action( 'in_admin_header', array(&$this, 'in_admin_header') );
}
private function is_pan_pan_pan() {
global $post_type;
if ( isset($post_type) && $post_type === self::POST_TYPE )
return TRUE;
else if ( isset($_GET['post_type']) && $_GET['post_type'] === self::POST_TYPE )
return TRUE;
else
return FALSE;
}
public function in_admin_header() {
global $post_type, $current_user;
if ( !$this->is_pan_pan_pan() )
return;
// 画面のカラム数の制御
$screen_layout_columns = get_user_option("screen_layout_$post_type");
if ( !$screen_layout_columns || $screen_layout_columns > 1 ) {
update_user_option($current_user->ID, "screen_layout_$post_type", 1);
}
// メタボックスの表示位置の制御
$meta_box_order_default = array(
'side' => '' ,
'normal' => "slugdiv,{$this->field_name['theme']},{$this->field_name['content']}",
'advanced' => "submitdiv",
);
$meta_box_order = $meta_box_order_new = get_user_option("meta-box-order_$post_type");
if ( $meta_box_order ) {
// サイド
$side = isset($meta_box_order['side'])
? explode(',', $meta_box_order['side'])
: array();
$meta_box_order_new['side'] = '';
// ノーマル
$normal = array_merge(
explode(',', isset($meta_box_order['normal']) ? $meta_box_order['normal'] : $meta_box_order_default['normal']) ,
$side
);
if ( !in_array($this->field_name['theme'], $normal) )
$normal[] = $this->field_name['theme'];
if ( !in_array($this->field_name['content'], $normal) )
$normal[] = $this->field_name['content'];
$meta_box_order_new['normal'] = implode(',', $normal);
// advanced (サブミットボックスとか置いてある)
$advanced = explode(',', isset($meta_box_order['advanced'])
? $meta_box_order['advanced']
: $meta_box_order_default['advanced']);
if ( !in_array('submitdiv', $advanced) )
$advanced[] = 'submitdiv';
$meta_box_order_new['advanced'] = implode(',', $advanced);
} else {
$meta_box_order_new = $meta_box_order_default;
}
if ( $meta_box_order !== $meta_box_order_new )
update_user_option($current_user->ID, "meta-box-order_$post_type", $meta_box_order_new);
// 隠したいメタボックスの制御
$metaboxhidden = $metaboxhidden_new = (array)get_user_option("metaboxhidden_$post_type");
if ( $metaboxhidden ) {
if ( !in_array('categorydiv', $metaboxhidden) )
$metaboxhidden_new[] = 'categorydiv';
if ( !in_array('slugdiv', $metaboxhidden) )
$metaboxhidden_new[] = 'slugdiv';
if ( !in_array('commentstatusdiv', $metaboxhidden) )
$metaboxhidden_new[] = 'commentstatusdiv';
} else {
$metaboxhidden_new = array('categorydiv','slugdiv','commentstatusdiv');
}
if ( $metaboxhidden !== $metaboxhidden_new )
update_user_option($current_user->ID, "metaboxhidden_$post_type", $metaboxhidden_new);
// 画面のカラム数の最大値を指定
add_screen_option('layout_columns', array('max' => 1) );
}
}
コメントを残す