Хотя вам нужно добавить некоторую проверку, это действие не кажется сложным для текущей версии WordPress.
По сути, вам нужно два шага, чтобы добавить пользовательское поле в пользовательский тип сообщения:
- Создайте метабокс, содержащий ваше пользовательское поле
- Сохраните свое пользовательское поле в базу данных
Эти шаги глобально описаны здесь: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
Пример:
Добавьте пользовательское поле с именем «function» в пользовательский тип сообщения, называемый «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}
ловушка срабатывает. См. Http://codex.wordpress.org/Function_Reference/add_meta_box для этой 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
}
На втором шаге у вас есть настраиваемое поле для базы данных. При сохранении save_post_{custom_post_type}
ловушка запускается (начиная с версии 3.7, см .: /programming/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' );