WordPress の管理バーの「投稿を表示」を別のタブで開く:admin_bar_menu で target=”_blank” を足す

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

記事の編集画面の上の黒いバー(管理バー)の「投稿を表示」を、別のタブで開くようにする functions.php のコード。編集画面を開いたまま公開ページを確かめられます。前のコードとの違い、作業環境で確かめた結果つき。

記事を編集しているとき、上の黒いバー(管理バー)の「投稿を表示」を押すと、同じタブで公開ページに移ってしまいます。確かめるたびに編集画面に戻るのは手間ですし、編集画面をいくつも開くと、どれが新しいか分からなくなります。

次のコードで、「投稿を表示」と「プレビュー」を別のタブで開くようにします。

functions.php
/**
 * 管理バーの「投稿を表示」「プレビュー」を、別のタブで開く
 */
add_action( 'admin_bar_menu', function ( $wp_admin_bar ) {
	foreach ( array( 'view', 'preview' ) as $id ) {
		$node = $wp_admin_bar->get_node( $id );
		if ( ! $node ) {
			continue; // その画面にないときは何もしない
		}
		$wp_admin_bar->add_node( array(
			'id'   => $id,
			'meta' => array_merge( (array) $node->meta, array(
				'target' => '_blank',
				'rel'    => 'noopener',
			) ),
		) );
	}
}, 100 );
書き方 役目
admin_bar_menu(優先度 100) WordPress が「投稿を表示」などを作ったあとに動かす
get_node( 'view' ) 今ある「投稿を表示」を取り出す。その画面になければ何もしない
array_merge で meta に足す もとから付いている設定(class など)は残して、target と rel を足す
rel => noopener 別のタブで開くときの決まりの書き方(開いたページから元のタブを操作させない)

前のコードとの違い

前はこの記事で、id を view にして、meta に target だけを入れて add_node する書き方を紹介していました。この書き方だと、「投稿を表示」がない画面(ダッシュボードなど)でも、題名も URL もない空の項目を作ってしまいます。今のコードは、今ある項目だけに足すようにしています。

確かめた結果

このサイトの作業環境(WordPress 7.1)で、管理バーに「投稿を表示」「プレビュー」を作ってから、このコードを動かしました。

見たこと 結果
題名と URL そのまま(投稿を表示・記事の URL)
別のタブで開く設定 target="_blank" と rel="noopener" が付いた
「プレビュー」がない画面 何もしない(空の項目を作らない)
前のコードを「投稿を表示」がない画面で動かす 題名も URL もない view の項目ができた

編集画面で、別のタブで開くかを確かめる

WordPress の管理バーの「投稿を表示」を別のタブで開く:admin_bar_menu で target="_blank" を足す

編集画面を開いたまま、別のタブで公開ページを確かめられるようになります。直して、更新して、別のタブを読み込み直す、の繰り返しが楽になります。

参考(WordPress の公式の説明)

関連機能

  1. Enlighter のコードにファイル名を表示する:CSS だけでラベルを重ねる方法(長い名前も 1 行)

  2. WordPress タグクラウドの最大表示件数を変更する

  3. Smart Custom Fieldsの定義をfunctions.phpで行う

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP