it-swarm.com.de

Wie füge ich benutzerdefinierte Felder zu einem benutzerdefinierten Beitragstyp hinzu?

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

17
xLRDxREVENGEx

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:

16
Wyck

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

22
kubante

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:

  1. Erstellen Sie eine Metabox, die Ihr benutzerdefiniertes Feld enthält
  2. 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 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' );   
6
Bass Jobsen

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.

1
Anh Tran