it-swarm.com.de

Hinzufügen eines benutzerdefinierten Feldes zur Taxonomie-Eingabe: Bedienfeld

Ich versuche, etwas zu erreichen, von dem ich dachte, dass es ziemlich einfach zu erreichen wäre, aber es scheint, dass es keine wirklichen Beispiele gibt, um meine Bedürfnisse zu erfüllen.

Grundsätzlich habe ich einen benutzerdefinierten Beitragstyp "Artikel" für diesen benutzerdefinierten Beitragstyp. Ich habe eine neue Taxonomie, die ich registriert habe und die erstellt wurde, damit Quellveröffentlichungen hinzugefügt werden können.

Mein Ziel war es, einen Artikel über diesen benutzerdefinierten Beitragstyp hinzuzufügen und dann die entsprechende "Quellveröffentlichung" aus der Begriffsliste auszuwählen, damit ich anzeigen kann, woher der Artikel stammt.

Nun scheint das Problem, das ich habe, einfach zu sein ... Alles, was ich versuche, ist, der Seite einige zusätzliche Felder hinzuzufügen, auf denen Sie jeden Taxonomiebegriff eingeben können. In diesem Fall möchte ich ein Feld für "URL" hinzufügen und für jede Quelle ein Bild einfügen, damit ich ein Logo hinzufügen kann.

Die Frage hier ist also ... wie füge ich jedem Begriff ein zusätzliches Feld hinzu?

Ich gehe davon aus, wenn WordPress diese Funktionalität nicht naiv zulässt, dass das Feld "description" irgendwie als eine Art benutzerdefinierten Feldbereich verwendet werden könnte und somit die Daten dort gespeichert werden können.

Dann versuche ich natürlich die Daten herauszuholen und anzuzeigen.

Ich konnte die Taxonomie-Spaltentitel anpassen, falls jemand daran interessiert ist, wie Spalten für benutzerdefinierte Beitragstypen wie folgt geändert werden können:

// CUSTOM TAXONOMY COLUMNS FOR CONTENT SOURCES
   add_filter("manage_edit-content_sources_columns", 'content_sources_columns');    
   function content_sources_columns($content_sources_columns) {
    $new_columns = array(
        'cb' => '<input type="checkbox" />',
        'name' => __('Name'),
//      'source_image' => '',
        'description' => __('URL'),
        'slug' => __('Slug'),
        'posts' => __('Posts')
        );
    return $new_columns;
   }
4

Hallo @ NetConstructor.com :

Ich habe diesen letzten Monat für jemanden geschrieben, und er könnte das ansprechen, wonach Sie suchen. Dies ist ein Beispiel, das Sie modifizieren würden, und keine fertige Komplettlösung:

<?php
/*
 * Example code showing how to hook WordPress to add fields to the taxonomny term edit screen.
 * 
 * This example is meant to show how, not to be a drop in example.
 *
 * This example was written in response to this question:
 *
 *    http://lists.automattic.com/pipermail/wp-hackers/2010-August/033671.html
 *
 * By:
 *
 *    Mike Schinkel (http://mikeschinkel.com/custom-wordpress-plugins/)
 *
 * NOTE:
 *
 *    This could easily become a plugin if it were fleshed out.
 *    A class with static methods was used to minimize the variables & functions added to the global namespace.
 *    wp_options was uses with one option be tax/term instead of via a serialize array because it aids in retrival
 *    if there get to be a large number of tax/terms types. A taxonomy/term meta would be the prefered but WordPress
 *    does not have one.
 *
 * This example is licensed GPLv2.
 *
 */

// These are helper functions you can use elsewhere to access this info
function get_taxonomy_term_type($taxonomy,$term_id) {
  return get_option("_term_type_{$taxonomy}_{$term->term_id}");
}
function update_taxonomy_term_type($taxonomy,$term_id,$value) {
  update_option("_term_type_{$taxonomy}_{$term_id}",$value);
}

//This initializes the class.
TaxonomyTermTypes::on_load();

//This should be called in your own code. This example uses two taxonomies: 'region' & 'opportunity'
TaxonomyTermTypes::register_taxonomy(array('region','opportunity'));

class TaxonomyTermTypes {
  //This initializes the hooks to allow saving of the
  static function on_load() {
    add_action('created_term',array(__CLASS__,'term_type_update'),10,3);
    add_action('edit_term',array(__CLASS__,'term_type_update'),10,3);
  }
  //This initializes the hooks to allow adding the dropdown to the form fields
  static function register_taxonomy($taxonomy) {
    if (!is_array($taxonomy))
      $taxonomy = array($taxonomy);
    foreach($taxonomy as $tax_name) {
      add_action("{$tax_name}_add_form_fields",array(__CLASS__,"add_form_fields"));
      add_action("{$tax_name}_edit_form_fields",array(__CLASS__,"edit_form_fields"),10,2);
    }
  }
  // This displays the selections. Edit it to retrieve
  static function add_form_fields($taxonomy) {
    echo "Type " . self::get_select_html('text');
  }
  // This displays the selections. Edit it to retrieve your own terms however you retrieve them.
  static function get_select_html($selected) {
    $selected_attr = array('text'=>'','user'=>'','date'=>'','etc'=>'');
    $selected_attr[$selected] = ' selected="selected"';
    $html =<<<HTML
<select id="tag-type" name="tag-type">
  <option value="text"{$selected_attr['text']}>Text</option>
  <option value="user"{$selected_attr['user']}>User</option>
  <option value="date"{$selected_attr['date']}>Date</option>
  <option value="etc" {$selected_attr['etc']}>Etc.</option>
</select>
HTML;
    return $html;
  }
    // This a table row with the drop down for an edit screen
    static function edit_form_fields($term, $taxonomy) {
    $selected = get_option("_term_type_{$taxonomy}_{$term->term_id}");
    $select = self::get_select_html($selected);
    $html =<<<HTML
<tr class="form-field form-required">
  <th scope="row" valign="top"><label for="tag-type">Type</label></th>
  <td>$select</td>
</tr>
HTML;
    echo $html;
  }
  // These hooks are called after adding and editing to save $_POST['tag-term']
  static function term_type_update($term_id, $tt_id, $taxonomy) {
    if (isset($_POST['tag-type'])) {
      update_taxonomy_term_type($taxonomy,$term_id,$_POST['tag-type']);
    }
  }
}

Ich hoffe es hilft.

5
MikeSchinkel

Ich denke, dass das Speichern von benutzerdefinierten Taxonomie-Meta-/Zusatzfeldern/benutzerdefinierten Feldern in der Optionstabelle die Leistung Ihrer Website beeinträchtigt. Wenn Ihre Site stark gewichtet ist (viele Besucher, viele Zugriffe), ist die Optionstabelle für eine große Anzahl benutzerdefinierter Taxonomien sehr groß. und es wird die Ladezeit für get_option () - Abfragen für andere Plugins erhöhen, oder ich denke, dies wird die Leistung stark beeinträchtigen. Wir sollten unnötige Dinge in der Optionstabelle speichern oder die Zeilen in der Optionstabelle erhöhen.

2
Manchumahara

Kam über diesen Beitrag in meiner Suche nach wahrscheinlich das gleiche, und nicht lange danach stieß auf dieses Plug-in: Ultimate Taxonomy Manager . Ich unterstütze es noch nicht, aber ich habe es in einer Testumgebung ausprobiert und denke, es macht das, wonach Sie suchen. Es fühlt sich ein bisschen unbeholfen beim Abrufen der Daten an, aber das könnte nur an mir und meinem Verständnis der Dokumentation liegen.

2
jageo
1
Bainternet

Sie versuchen, die Taxonomie zu ändern, indem Sie etwas hinzufügen, das keine Taxonomie ist, was Sie nur verwirren wird.

Stattdessen müssen Sie dem Artikelposttyp ein benutzerdefiniertes Meta-Feld hinzufügen und die URLs und Bild-URLs in benutzerdefinierten Feldern speichern. Dann würden Sie den Code verwenden, um Spalten in functions.php hinzuzufügen und diese benutzerdefinierten Felder im entsprechenden Beitrag mit get_meta nachzuschlagen.

1
Tom J Nowell