Obwohl Sie eine Validierung hinzufügen müssen, scheint diese Aktion für die aktuelle Version von WordPress nicht kompliziert zu sein.
Grundsätzlich benötigen Sie zwei Schritte, um einem benutzerdefinierten Beitragstyp ein benutzerdefiniertes Feld hinzuzufügen:
- Erstellen Sie eine Metabox, die Ihr benutzerdefiniertes Feld enthält
- Speichern Sie Ihr benutzerdefiniertes Feld in der Datenbank
Diese Schritte werden hier global beschrieben: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
Beispiel:
Fügen Sie einem benutzerdefinierten Beitragstyp mit der Bezeichnung "Präfix-Teammitglieder" ein benutzerdefiniertes Feld mit der Bezeichnung "Funktion" hinzu.
Zuerst die Metabox hinzufügen:
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' );
Wenn Sie ein "Präfix-Teammitglied" hinzufügen oder bearbeiten, wird der add_meta_boxes_{custom_post_type}
Hook ausgelöst. Die Funktion finden Sie unter http://codex.wordpress.org/Function_Reference/add_meta_boxadd_meta_box()
. Im obigen Aufruf von add_meta_box()
ist prefix_teammembers_metaboxes_html
ein Rückruf, um Ihr Formularfeld hinzuzufügen:
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
}
Im zweiten Schritt haben Sie Ihr benutzerdefiniertes Feld in der Datenbank. Beim Speichern wird der save_post_{custom_post_type}
Hook ausgelöst (seit v 3.7, siehe: /programming/5151409/wordpress-save-post-action-for-custom-posts ). Sie können dies einhängen, um Ihr benutzerdefiniertes Feld zu speichern:
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' );