- サイトデザイン工事中です。ご意見をお寄せください。
- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
関数リファレンス/add meta box
提供:WordPress Codex 日本語版
< 関数リファレンス
目次 |
説明
add_meta_box() は、WordPress 2.5 以降で利用できる関数です。プラグイン開発者は、記事投稿、ページ投稿、リンク編集画面にセクションを追加することができます。
使い方
<?php add_meta_box( $id, $title, $callback, $page, $context, $priority ); ?>
パラメータ
- $id
- (文字列) 編集画面セクションの HTML ID
- $title
- (文字列) 編集画面セクションのタイトル、画面上に表示される
- $callback
- (文字列) 編集画面セクションに HTML 出力する関数
- $page
- (文字列) 編集画面セクションを表示する画面のタイプ ('post', 'page', 'link', またはcustom_post_type。カスタムポストタイプはスラッグを指定)
- $context
- (文字列) 編集画面セクションが表示される部分 ('normal', 'advanced' または (2.7 以降) 'side')
- $priority
- (文字列) ボックスが表示される優先度 ('high' または 'low')
用例
記事投稿画面とページ投稿画面にカスタムセクションを追加する例です。WordPress 2.5 やそれ以前のバージョン (add_meta_box が存在しない) でも動作します。
<?php
/* admin_menu アクションフックでカスタムボックスを定義 */
add_action('admin_menu', 'myplugin_add_custom_box');
/* データが入力された際 save_post アクションフックを使って何か行う */
add_action('save_post', 'myplugin_save_postdata');
/* 投稿・固定ページの "advanced" 画面にカスタムセクションを追加 */
function myplugin_add_custom_box() {
if( function_exists( 'add_meta_box' )) {
add_meta_box( 'myplugin_sectionid', __( 'My Post Section Title', 'myplugin_textdomain' ),
'myplugin_inner_custom_box', 'post', 'advanced' );
add_meta_box( 'myplugin_sectionid', __( 'My Post Section Title', 'myplugin_textdomain' ),
'myplugin_inner_custom_box', 'page', 'advanced' );
} else {
add_action('dbx_post_advanced', 'myplugin_old_custom_box' );
add_action('dbx_page_advanced', 'myplugin_old_custom_box' );
}
}
/* カスタム投稿・固定ページセクションに内側のフィールドをプリント */
function myplugin_inner_custom_box() {
// 認証に nonce を使う
echo '<input type="hidden" name="myplugin_noncename" id="myplugin_noncename" value="' .
wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
// データ入力用の実際のフォーム
echo '<label for="myplugin_new_field">' . __("Description for this field", 'myplugin_textdomain' ) . '</label> ';
echo '<input type="text" name="myplugin_new_field" value="whatever" size="25" />';
}
/* 2.5 以前の WordPress で編集フォームをプリント */
function myplugin_old_custom_box() {
echo '<div class="dbx-b-ox-wrapper">' . "\n";
echo '<fieldset id="myplugin_fieldsetid" class="dbx-box">' . "\n";
echo '<div class="dbx-h-andle-wrapper"><h3 class="dbx-handle">' .
__( '投稿セクションタイトル', 'myplugin_textdomain' ) . "</h3></div>";
echo '<div class="dbx-c-ontent-wrapper"><div class="dbx-content">';
// 編集フォームを出力
myplugin_inner_custom_box();
// ラッパー終わり
echo "</div></div></fieldset></div>\n";
}
/* 投稿を保存した際、カスタムデータも保存する */
function myplugin_save_postdata( $post_id ) {
// データが先ほど作った編集フォームのから適切な認証とともに送られてきたかどうかを確認。
// save_post は他の時にも起動する場合がある。
if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename(__FILE__) )) {
return $post_id;
}
// 自動保存ルーチンかどうかチェック。そうだった場合はフォームを送信しない(何もしない)
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $post_id;
// パーミッションチェック
if ( 'page' == $_POST['post_type'] ) {
if ( !current_user_can( 'edit_page', $post_id ) )
return $post_id;
} else {
if ( !current_user_can( 'edit_post', $post_id ) )
return $post_id;
}
// 承認ができたのでデータを探して保存
$mydata = $_POST['myplugin_new_field'];
// $mydata を使って何かを行う
// (add_post_meta()、update_post_meta()、またはカスタムテーブルを使うなど)
return $mydata;
}
?>
関連記事
- プラグインとテーマの移行
- 関数リファレンス
- プラグインを使ったテーブルの作成/en:Creating Tables with Plugins
- update_post_meta /en
- add_post_meta /en
外部リンク
- Using add_meta_box() for your plugin - How to use boxes for your plugin's administration page
- Tutorial: Creating Custom Write Panels in WordPress - Use Custom Write options to easily add any unique data to your post
最新英語版: WordPress Codex » Function_Reference/add_meta_box (最新版との差分)