Wie Hinzufügen von benutzerdefinierten Feldern zu einem benutzerdefinierten Post-Typ?

Ok, ich habe ein paar benutzerdefinierte Post-Typen und ein paar Taxonomien registriert. Jetzt, für das Leben von mir, kann ich den Code nicht herausfinden, den ich meinem Custom Post Type ein Custom Field hinzufügen muss.

Ich brauche einen Drop-Down- und einen einzeiligen Textbereich. Aber ich brauche auch separate Felder für Post-Typen. Also, sagen Post-Typ einer hat 3 Felder und Post-Typ 2 hat 4 Felder, aber die Felder sind unterschiedlich.

Irgendwelche Tipps würden mir helfen, den Codex zu betrachten und etwas zu finden, aber ich kann nicht nachvollziehen, was ich meiner functions.php Datei hinzufügen muss

Solutions Collecting From Web of "Wie Hinzufügen von benutzerdefinierten Feldern zu einem benutzerdefinierten Post-Typ?"

Dies ist wahrscheinlich komplizierter als Sie denken, ich würde in einem Framework arbeiten:

Wenn Sie Ihre eigenen schreiben möchten, hier sind ein paar anständige Tutorials:

Hinzufügen / Bearbeiten des supports (bei Verwendung von ” register_post_type ), um die custom-fields für den Post-Bearbeitungsbildschirm Ihres benutzerdefinierten Beitragstyps hinzuzufügen:

 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'custom-fields', 'revisions' ) 

Quelle: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields

Obwohl Sie etwas validation hinzufügen sollten, scheint diese Aktion für die aktuelle Version von WordPress nicht kompliziert zu sein.

Grundsätzlich benötigen Sie zwei Schritte, um ein benutzerdefiniertes Feld zu einem benutzerdefinierten Beitragstyp hinzuzufügen:

  1. Erstellen Sie eine Metabox, die Ihr benutzerdefiniertes Feld enthält
  2. Speichern Sie Ihr benutzerdefiniertes Feld in der database

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 ein benutzerdefiniertes Feld namens “function” zu einem benutzerdefinierten Posttyp mit dem Namen “prefix-teammembers” hinzu.

Fügen Sie zuerst die Metabox hinzu:

 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 einen “prefix-teammembers” hinzufügen oder bearbeiten, wird der add_meta_boxes_{custom_post_type} Hook ausgetriggers. Siehe http://codex.wordpress.org/Function_Reference/add_meta_box für die function add_meta_box() . In dem obigen Aufruf von add_meta_box() ist prefix_teammembers_metaboxes_html ein Callback zum Hinzufügen Ihres Formularfelds:

 function prefix_teammembers_metaboxes_html() { global $post; $custom = get_post_custom($post->ID); $function = isset($custom["function"][0])?$custom["function"][0]:''; ?>  < ?php } 

Im zweiten Schritt haben Sie Ihr benutzerdefiniertes Feld in der database. Beim Speichern wird der save_post_{custom_post_type} Hook ausgetriggers (seit v 3.7, siehe: https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts ). Sie können dies anhä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 Metaboxen 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 Metabox / benutzerdefinierte Felder suchen, ist dies ein guter Anfang. Es ist der erste Teil einer Serie, der Ihnen helfen kann, den Code zu verfeinern, um die Erweiterung zu vereinfachen.

// slider_metaboxes_html, function für HTML-function erstellen slider_metaboxes () {global $ wp_meta_boxes; add_meta_box (‘postfunctiondiv’, __ (‘Benutzerdefinierter Link’), ‘slider_metaboxes_html’, ‘slider’, ‘normal’, ‘high’); }

// add_meta_boxes_slider => add_meta_boxes_ {benutzerdefinierter Post-Typ} add_action (‘add_meta_boxes_slider’, ‘slider_metaboxes’);

Perfektes Wissen