Ok, also habe ich ein paar benutzerdefinierte Beitragstypen und ein paar Taxonomien registriert. Jetzt kann ich den Code, den ich zum Hinzufügen eines benutzerdefinierten Felds zu meinem benutzerdefinierten Beitragstyp benötige, für mein Leben nicht herausfinden.
Ich brauche ein Dropdown-Menü und einen einzeiligen Textbereich. Ich muss aber auch separate Felder für Beitragstypen haben. Angenommen, der erste Beitragstyp hat 3 Felder und der zweite Beitragstyp hat 4 Felder, aber die Felder sind unterschiedlich.
Alle Tipps helfen mir, den Codex zu lesen und etwas zu finden, aber ich kann nicht verstehen, was ich meiner functions.php
-Datei hinzufügen muss
Dies ist wahrscheinlich komplizierter als Sie denken. Ich würde die Verwendung eines Frameworks untersuchen:
Wenn Sie selbst schreiben möchten, finden Sie hier einige anständige Tutorials:
Fügen Sie das Argument supports
hinzu bzw. bearbeiten Sie es (während Sie register_post_type
verwenden), um den Bildschirm custom-fields
für die Nachbearbeitung Ihres benutzerdefinierten Beitragstyps einzuschließen:
'supports' => array(
'title',
'editor',
'excerpt',
'thumbnail',
'custom-fields',
'revisions'
)
Quelle: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields
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:
Diese Schritte werden hier global beschrieben: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
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 Hook add_meta_boxes_{custom_post_type}
ausgelöst. Siehe http://codex.wordpress.org/Function_Reference/add_meta_box für die Funktion add_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 Hook save_post_{custom_post_type}
ausgelöst (seit v 3.7, siehe: https://stackoverflow.com/questions/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' );
Es gibt verschiedene Plugins für benutzerdefinierte Meta-Boxen und benutzerdefinierte Felder. Wenn Sie sich ein Plugin ansehen, das sich auf Entwickler konzentriert, sollten Sie Meta Box ausprobieren. Es ist leicht und sehr leistungsstark.
Wenn Sie nach einem Tutorial zum Schreiben von Code für eine Meta-Box/benutzerdefinierte Felder suchen, ist dies ein guter Anfang. Dies ist der erste Teil einer Reihe, der Ihnen dabei helfen kann, den Code zu verfeinern, um die Erweiterung zu vereinfachen.