Frage

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

Im Wesentlichen habe ich einen benutzerdefinierten Beitragstyp "Artikel" für diesen benutzerdefinierten Beitragstyp Ich habe eine neue Taxonomie, die ich registriert habe, die erstellt wurde, damit Quellpublikationen hinzugefügt werden können.

Mein Ziel war es, einen Artikel über diesen benutzerdefinierten Beitragstyp hinzufügen zu können und dann die anwendbare "Quellpublikation" aus der Termliste auszuwählen, damit ich anzeigen kann, woher der Artikel stammt.

Das Problem, das ich habe, scheint einfach zu sein ... Ich versuche nur einige zusätzliche Felder zu der Seite, auf der Sie jede Taxonomie -Laufzeit eingeben können. In diesem Fall möchte ich ein Feld für "URL" hinzufügen und ein Bild für jede Quelle einfügen, damit ich ein Logo hinzufügen kann.

Die Frage hier ist also ... wie würde ich jedem Begriff ein zusätzliches Feld hinzufügen?

Ich gehe davon aus, dass WordPress diese Funktionalität naiv nicht zulässt, dass das Feld "Beschreibung" irgendwie als eine Art benutzerdefinierte Felderbereich verwendet werden kann und dass die Daten dort gespeichert werden können.

Dann versuche ich natürlich, die Daten zu extrahieren und sie anzuzeigen.

Ich konnte die Taxonomie -Spalten -Titel anpassen, falls jemand das Interesse hat, wie Spalten für benutzerdefinierte Post -Typen 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;
   }
War es hilfreich?

Lösung

Hi @Netconstructor.com:

Ich habe diesen letzten Monat für jemanden geschrieben und es kann sich angehen, wonach Sie suchen. Es ist ein Beispiel, das Sie ändern würden, keine vollständige laufende Lö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.

Andere Tipps

Stieß auf diesen Beitrag in meiner Suche nach wahrscheinlichem Ding, und nicht lange danach stieß auf diesen Stecker:Ultimate Taxonomy Manager . Ich unterstütze es noch nicht, aber ich habe es in einer Testumgebung ausprobiert und ich denke, es tut das, wonach Sie suchen. Es fühlt sich beim Abrufen der Daten etwas ungeschickt an, aber das könnte nur ich und mein Verständnis der Dokumentation sein.

Ich denke, das Speichern von maßgefertigten Taxonomie -Meta/zusätzlichen Feldern/benutzerdefinierten Feldern in der Optionstabelle ist etwas, das Ihre Website -Leistung tötet. Zum Beispiel, wenn Ihre Website stark gewichtet ist (viel Besucher, viele Hits), ist die Optionstabelle für eine große Anzahl von benutzerdefinierten Taxonomie enorm. Und es erhöht die Ladezeit für Get_Option () -Anfrage für andere Plugins, oder ich denke, dies wird die Leistung stark behindern. Wir sollten unnötige Dinge in der Optionstabelle sparen oder die Zeilen in der Optionstabelle erhöhen.

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

Stattdessen müssen Sie dem Artikel -Post -Typ ein benutzerdefiniertes Meta -Feld hinzufügen und die URLs und Bild -URLs in benutzerdefinierten Feldern speichern. Anschließend würden Sie den Code verwenden, um Spalten in Funktionen in Funktionen hinzuzufügen.Php, um diese benutzerdefinierten Felder auf dem entsprechenden Beitrag mithilfe der Verwendung zu suchen get_meta

Ein einfacherer und einfacherer Weg wäre:

WordPress Taxonomies Extra Fields the easy way - Bainternet

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top