投稿一覧に独自リンクを追加する

投稿一覧に独自リンクを追加する - カスタム投稿タイプにも対応

説明

管理者ページの「投稿一覧」や「固定ページ一覧」の各投稿記事はマウスポインタを移動すると、「編集」や「クイック編集」といったリンクが表示される。このリンクに独自のリンクを追加する方法を調べてみた。

実際にリンクを追加する部分は次に示すところになる。

投稿と固定ページでフィルター名が違う

「投稿一覧」や「固定ページ一覧」を表示しているのは、/wp-admin/includes/class-wp-posts-list-table.phpである。さらにソースコードを読んでいくと、リンクを表示する部分では次に示すフィルターが呼び出されている。

/* 投稿タイプが「投稿」の場合 */
add_filter( 'post_row_actions', 'mytheme_post_row_actions', 10, 2 );

/* 投稿タイプが「固定ページ」の場合 */
add_filter( 'page_row_actions', 'mytheme_page_row_actions', 10, 2 );

これらのフィルター関数では、連想配列と投稿情報をパラメータとして渡し、適宜更新した連想配列を返す。次の例は、フィルター関数のひな形である。

function mytheme_post_row_actions( $actions, $post ) {
	/* 「新リンク」を追加 */
	$actions['newlink'] = '$post->ID.'">新リンク';
	return $actions;
}

パラメータ$actionsは連想配列なので、既存のものと重複しない適当な名前のキーの値として、Aタグのリンクテキストを指定すればいい。

標準のリンクは次のキーに格納されている。キーの値は、そのままリンクを囲むSPANタグのclass属性の値として適用される。もし標準のリンク内容を変更する場合は、これらの配列の値を書き換えればいい。

キー名リンク表記
'edit'編集
'inline hide-if-no-js'クイック編集
'trash'ゴミ箱
'view'表示

投稿情報を拡張するケースで、投稿画面のウィジェットで登録しにくい場合は、独自のメニューリンクを追加すればいい。

まとめ

一連のソースコードは次の通りである。上記の投稿一覧のリンク追加のほかにグローバルメニューへの追加も行っている。

/* 独自リンクを追加 */
add_action( 'admin_init', 'mytheme_admin_init' );
function mytheme_admin_init() {
	add_filter( 'post_row_actions', 'mytheme_post_row_actions', 10, 2 );
}

/* グローバルメニューに独自リンクページを追加 */
add_action( 'admin_menu', 'mytheme_admin_menu' );
function mytheme_admin_menu() {
	add_submenu_page( 'edit.php', '新リンク', '新リンク', 10, 'mytheme_newlink_page', 'mytheme_newlink_page' );
}

/* 投稿一覧のリンクを追加 */
function mytheme_post_row_actions( $actions, $post ) {
	/* 「新リンク」を追加 */
	$actions['newlink'] = '$post->ID.'">新リンク';
	return $actions;
}
/* 「新リンク」ページの表示内容 */
function mytheme_newlink_page() {
	/* ここに表示内容を記述 */
}

適用した画面がこちら。「表示」のあとに「新リンク」が追加されている。

この機能、利用シーンはそれほど多くないと思うが、忘れないようにメモしておく。

関連

  • add_action - アクション関数を追加する
  • add_filter - フィルター関数を追加する

お勧めコンテンツ

has_excerpt(2011年4月22日 登録)

bool has_excerpt( [ int $id = 0 ] )
投稿情報に抜粋が含まれている(入力されている)か調べる。

get_attachment_link(2013年4月4日 登録)

string get_attachment_link( [ mixed $post = null [ , bool $leavename = false ] ] )
添付データのパーマリンクURLを取得する。

wp_nonce_field(2014年5月19日 登録)

string wp_nonce_field( [ mixed $action = -1 [ , string $name = "_wpnonce" [ , bool $referer = true [ , bool $echo = true ] ] ] ] )
nonce用フォームパラメータ(HTMLタグ)を表示する。

the_title_attribute(2009年11月12日 登録)

string the_title_attribute ( [ mixed $args = '' ] )
投稿情報のタイトルをパラメータ$argsのecho要素がtrue(デフォルト)ならば表示する。echo要素がfalseの場合は表示せず、取得する。なお、タイトルおよびパラメータ$argsのbefore、after要素にHTMLタグが含まれる場合はそれらを除去される。

dynamic_sidebar(2010年6月4日 登録)

bool dynamic_sidebar( [ mixed $index = 1 ] )
ダイナミックサイドバーを表示する。

最終更新日時 : 2013-10-16 11:35