それで、私はいくつかのカスタム投稿タイプといくつかの分類法を登録しました。今、私の人生のために、私は私のカスタム投稿タイプにカスタムフィールドを追加するために必要なコードを把握することはできません。
ドロップダウンと単一行のテキスト領域が必要です。ただし、投稿の種類ごとに別のフィールドも必要です。したがって、投稿タイプ1に3つのフィールドがあり、投稿タイプ2に4つのフィールドがあるとしますが、フィールドは異なります。
どんなヒントでもコーデックスを見て何かを見つけたには役立ちますが、functions.php
ファイルに追加する必要があるものを理解することはできません
これはおそらくあなたが思うよりももっと複雑です、私はフレームワークを使うことになるでしょう:
あなたがあなた自身のものを書きたいなら、ここにいくつかのまともなチュートリアルがあります:
カスタム投稿タイプの投稿編集画面にregister_post_type
を含めるには、(custom-fields
の使用中に)supports
引数を追加/編集します。
'supports' => array(
'title',
'editor',
'excerpt',
'thumbnail',
'custom-fields',
'revisions'
)
ソース: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields
検証を追加する必要があるはずですが、この操作は現在のバージョンのWordPressにとって複雑ではないようです。
基本的に、カスタム投稿タイプにカスタムフィールドを追加するには2つの手順が必要です。
これらのステップはここでグローバルに説明されています: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
「機能」というカスタムフィールドを「prefix-teammembers」というカスタム投稿タイプに追加します。
まずメタボックスを追加します。
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}
フックがトリガーされます。 add_meta_box()
関数については http://codex.wordpress.org/Function_Reference/add_meta_box を参照してください。上記のadd_meta_box()
の呼び出しでは、フォームフィールドを追加するためのコールバックである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' );