Facebook にシェア
[`evernote` not found]
LINEで送る

微妙に不評なwordpress3.1の新機能の管理バーを少しでも便利にできないかと
個人的好みでカスタマイズしました。


・$_POSTの中身を表示
プラグインを開発したりしていて時々$_POSTの中身を確認したくなります。
デバッグ時は適当にprint_rでそのあたりに出力してたのですが、管理バーに値が表示されたら便利かな?とおもいカスタマイズ

add_action( 'admin_bar_menu', 'add_admin_menu_view_post', 1000,3);
function add_admin_menu_view_post(){
	if($_POST){
		list($bar,$parent,$data) = func_get_args();
			global $wp_admin_bar;
			if(!$data){$data=$_POST;}
			if(!$parent){
				$wp_admin_bar->add_menu(array('id'=>'view_post','title'=>'$_POST','href'=>"#"));
				add_admin_menu_view_post($bar,'view_post',$data);
			}else{
				foreach($data as $key => $value){
					if(is_array($value)){
						add_admin_menu_view_post($bar,$key,$value);
					}else{
						$wp_admin_bar->add_menu(array('parent'=>$parent,'id'=>$key,'title'=>$key,'href'=>'#'));
						$wp_admin_bar->add_menu(array('parent'=>$key,'title'=>$value,'href'=>'#'));
					}
				}
			}
	}
}

・カスタムフィールドを管理バーから確認&編集
結構カスタムフィールドを使ったページを作るわけですが、編集ページではなく通常ページからカスタムフィールドを変更できると便利かな?と思いカスタマイズしてみました。

add_action( 'admin_bar_menu', 'add_admin_menu_view_meta', 15);
add_action( 'init', 'add_admin_menu_view_meta_post' );
function add_admin_menu_view_meta(){
	if(is_single() && current_user_can('edit_post')){
		global $wp_admin_bar;
		$meta = get_post_custom();
		$wp_admin_bar->add_menu(array('id'=>'view_cfield','title'=>'カスタムフィールド','href'=>"#"));
		foreach($meta as $key => $value){
			if(preg_match("/^[^_]/",$key)){
				$wp_admin_bar->add_menu(array('parent'=>'view_cfield','id'=>$key,'title'=>$key,'href'=>'#'));
				print_r($value);
					$cnt=0;
					foreach($value as $val){
						if($val){
							$cid=$key . "_edit" . $cnt;
							$wp_admin_bar->add_menu(array('parent'=>$key,'id'=>$cid,'title'=>$val,'href'=>'#'));
						}else{
							$cid=$key;
						}
							$html  = '<form method="post">';
							$html .= '<input type="hidden" name="cf_menu_action" value="post">';
							$html .= '<input type="hidden" name="cf_key" value="' . $key . '">';
							$html .= '<input type="hidden" name="cf_prev" value="' . $val . '">';
							$html .= '<input type="hidden" name="cf_id" value="' . get_the_ID() . '">';
							$html .= '<input type="text" name="cf_value" value="' . $val . '">';
							$html .= '<br><input type="submit"></form>';
							$cnt++;
							$wp_admin_bar->add_menu(array('parent'=>$cid,'title'=>'編集','href'=>'#','meta'=>array('html'=>$html)));
					}
			}
		}
	}
}

function add_admin_menu_view_meta_post(){
	if($_POST['cf_menu_action']=='post'){
		update_post_meta($_POST['cf_id'],$_POST['cf_key'],$_POST['cf_value'],$_POST['cf_prev']);
	}
}

・Welcartの拡張
Welcartもよく使うプラグインなのですが、せっかくなので管理バーにWelcartのリンクがあると便利かと思って追加しました。
ついでにskuを展開して、編集、更新が可能なようにカスタマイズ

add_action( 'admin_bar_menu', 'add_admin_menu_welcart', 110 );
function add_admin_menu_welcart(){
	if (function_exists('usces_is_item') && current_user_can('edit_post')) {
		global $wp_admin_bar;
		$href= admin_url() . "admin.php?page=usc-e-shop/usc-e-shop.php";
		$wp_admin_bar->add_menu(array('id'=>'welcart_top','title'=>'Welcart','href'=>$href));

		//サブメニューの追加

		//新規追加
		$href = admin_url() . "admin.php?page=usces_itemnew";
		$wp_admin_bar->add_menu(array('parent'=>'welcart_top','title'=>'商品の新規追加','href'=>$href));

		//投稿編集
		$current_object = get_queried_object();
		if ( ! empty( $current_object->post_type ) && ( $post_type_object = get_post_type_object( $current_object->post_type ) ) && current_user_can( $post_type_object->cap->edit_post, $current_object->ID ) && $post_type_object->show_ui ) {
			$href = admin_url() . "admin.php?page=usces_itemedit&action=edit&post=" . $current_object->ID;
			$wp_admin_bar->add_menu( array( 'id' => 'edit', 'title' => $post_type_object->labels->edit_item,  'href' => get_edit_post_link( $current_object->ID ) ) );
			$wp_admin_bar->add_menu(array('parent'=>'welcart_top','title'=>'商品の編集','href'=>$href));
		}	  

		//基本設定
		$href = admin_url() . "admin.php?page=usces_initial";
		$wp_admin_bar->add_menu(array('parent'=>'welcart_top','title'=>'基本設定','href'=>$href));
		
		//skuの簡易編集
		$wp_admin_bar->add_menu(array('id'=>'sku_edit','parent'=>'welcart_top','title'=>'skuの簡易編集'));
		global $usces;
		usces_the_item();
		$meta = has_item_sku_meta($current_object->ID);		
		foreach ($meta as $entry){
			$value = unserialize($entry['meta_value']);
			$key = esc_attr(substr($entry['meta_key'],6));
			$item_menu = "item_" .  $key;
			$itemedit_menu = "item_edit_" . $key;
			$sku_name=$value['disp'];
			$wp_admin_bar->add_menu(array('id'=>$item_menu,'parent'=>'sku_edit','href'=>'#','title'=>$sku_name));
			$html  = '<form method="post">';
			$html .= '<input type="hidden" name="skumetaid" value="' . $entry['meta_id'] . '">';
			$html .= '<input type="hidden" name="menu_action" value="post">';
			$html .= "<input type='hidden' name='post_id' value='{$current_object->ID}'>";
			$html .= 'SKUコード<br><input type="text" name="skuname" value="' . $key . '"><br>';
			$html .= 'SKU表示名<br><input type="text" name="skudisp" value="' . $value['disp'] . '"><br>';
			$html .= '通常価<br><input type="text" name="skucprice" value="' . $usces->itemsku['value']['cprice'] . '"><br>';
			$html .= '単位<br><input type="text" name="skuunit" value="' . $value['unit'] . '"><br>';
			$html .= '価格<br><input type="text" name="skuprice" value="' . $value['price'] . '"><br>';
			$html .= '在庫数<br><input type="text" name="skuzaikonum" value="' . $value['zaikonum'] . '"><br>';
			$selected=array("","","","","");
			$selected[$value['zaiko']]="selected='selected'";
			$html .= '在庫状況<br><select name="skuzaiko">';
			$html .= "<option value='0' {$selected[0]}>在庫有り</option>
				<option value='1' {$selected[1]}>在庫僅少</option>
				<option value='2' {$selected[2]}>売切れ</option>
				<option value='3' {$selected[3]}>入荷待ち</option>
				<option value='4' {$selected[4]}>廃盤</option></select><br>";
			$html .= '業務用パック適用<br><select name="skugptekiyo">';
			$selected=array("","");
			$selected[$value['gptekiyo']]="selected='selected'";
			$html .= "<option value='0' {$selected[0]}>適用しない</option><option value='1' {$selected[1]}>適用する</option></select><br>";
			$html .= '<input type="submit"></form>';
			
			$wp_admin_bar->add_menu(array('id'=>$itemedit_menu,'parent'=>$item_menu,'href'=>'#','title'=>'商品編集','meta'=>array('html'=>$html)));
		}
	}
}


add_action( 'init', 'add_admin_menu_welcart_post' );
function add_admin_menu_welcart_post(){
	if($_POST['menu_action']=='post'){
	up_item_sku_meta($_POST['post_id']);
	}
}