この記事は最後に更新してから1年以上経過しています。
説明
管理者ページの「投稿一覧」や「固定ページ一覧」の各投稿記事はマウスポインタを移動すると、「編集」や「クイック編集」といったリンクが表示される。このリンクに独自のリンクを追加する方法を調べてみた。実際にリンクを追加する部分は次に示すところになる。
投稿と固定ページでフィルター名が違う
「投稿一覧」や「固定ページ一覧」を表示しているのは、/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() {
/* ここに表示内容を記述 */
}
適用した画面がこちら。「表示」のあとに「新リンク」が追加されている。
この機能、利用シーンはそれほど多くないと思うが、忘れないようにメモしておく。
最終更新 : 2013年10月16日 11:35
関連
お勧め
add_shortcode(2018年5月27日 更新)
void add_shortcode( string $tag, mixed $func )
ショートコード(独自タグ)を追加する。ショートコードは、投稿記事内でテキスト内容がない[tag]や、テキストを内包する[tag]テキスト[/tag]の書式で使用できる独自タグのこと。標準の状態では、 the_content関数によって表示する直前のフィルター処理内でパラメータ$funcで指定した関数・メソッドが実行される。
get_user_setting(2022年1月31日 更新)
mixed get_user_setting( string $name [ , string $default = false ] )
ユーザーインターフェイス設定を取得する。
have_posts(2018年5月27日 更新)
bool have_posts( )
次の投稿データが存在するかを調べる。
in_category(2018年5月27日 更新)
bool in_category( mixed $category [ , mixed $post = null ] )
投稿情報が指定したカテゴリーに属しているか調べる。
add_feed(2024年6月24日 更新)
string add_feed( string $feedname, callable $callback )
フィードを追加する。