【WordPress】管理画面のサイドバーにショートカットを追加

Pocket
LINEで送る

WordPressの管理画面のサイドバーにショートカットを追加する方法を調べてみました。
今回は自分の投稿一覧へのリンクをサイドバーの一番上に表示して、アイコンはアバターのアイコンにしてみました。

2014/02/01追記
httpとhttpsをどちらとも使える方法に変更しました。

add_action( 'admin_menu', 'register_menu_page' );

function get_avatar_url($id_or_email, $size = null, $default = null, $alt = null){
    $image = get_avatar($id_or_email, $size, $default, $alt);
    if(preg_match("/src='(.*?)'/", $image, $match)) {
        if(isset($match[1])) {
            return $match[1];
        } else {
            return false;
        }
    } else {
        return false;
    }
}

function register_menu_page(){
	//管理画面のサイドバーに追加:add_menu_page( ページのタイトル, メニーのタイトル, ,メニューページのコンテンツを表示するPHPファイル, メニューページにコンテンツを表示する関数 )
	//ユーザのアイコンを取得する:get_avatar( IDもしくはメールアドレス, 画像のサイズ, デフォルトで表示するもの, ALT )
	add_menu_page('タイトル', '自分の投稿ページ', 'manage_options', 'page_redirect','redirect_url',get_avatar_url(get_current_user_id(), 16),1);
}

$current_pageURL = $current_protocol.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

function redirect_url() {
	$redirect_url = get_bloginfo('url').'/wp-admin/admin.php?page=page_redirect';
	if( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
		$current_protocol = 'https://';
	} else {
		$current_protocol = 'http://';
	}
	$pageURL = $current_protocol.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
	$external_redirect_url = admin_url( 'edit.php?post_type=post&author='.get_current_user_id(), 'admin' );

	if ($pageURL == $redirect_url) {
		wp_redirect( $external_redirect_url, 302 );
	}
}

add_action( 'admin_menu', 'redirect_url' );