検証を追加する必要がありますが、このアクションはWordPressの現在のバージョンでは複雑ではないようです。
基本的に、カスタムフィールドをカスタム投稿タイプに追加するには2つの手順が必要です。
- カスタムフィールドを保持するメタボックスを作成します
- カスタムフィールドをデータベースに保存する
これらの手順は、ここでグローバルに説明されています:http : //wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
例:
「prefix-teammembers」というカスタム投稿タイプに「function」というカスタムフィールドを追加します。
最初にメタボックスを追加します。
function prefix_teammembers_metaboxes( ) {
global $wp_meta_boxes;
add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );
「prefix-teammembers」を追加または編集すると、add_meta_boxes_{custom_post_type}
フックがトリガーされます。関数については、http://codex.wordpress.org/Function_Reference/add_meta_boxを参照して くださいadd_meta_box()
。上記のadd_meta_box()
isの呼び出しではprefix_teammembers_metaboxes_html
、フォームフィールドを追加するためのコールバック:
function prefix_teammembers_metaboxes_html()
{
global $post;
$custom = get_post_custom($post->ID);
$function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
<label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}
2番目のステップでは、データベースへのカスタムフィールドがあります。保存時にsave_post_{custom_post_type}
フックがトリガーされます(v 3.7以降、https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-postsを参照)。これをフックして、カスタムフィールドを保存できます。
function prefix_teammembers_save_post()
{
if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new?
global $post;
update_post_meta($post->ID, "function", $_POST["function"]);
}
add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );