管理バーに機能を追加する。3種類
微妙に不評な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']); } }