web-dev-qa-db-fra.com

Ajout d'un champ personnalisé à l'entrée de taxonomie: panneau

Je cherche à réaliser quelque chose qui, à mon avis, serait assez simple à réaliser, mais il semble qu’il n’y ait pas de vrais exemples pour répondre à mes besoins.

J'ai essentiellement un type de publication personnalisé "Articles" pour ce type de publication. J'ai une nouvelle taxonomie que j'ai enregistrée et qui a été créée afin que des publications source puissent être ajoutées.

Mon objectif était de pouvoir ajouter un article via ce type d'article personnalisé, puis de sélectionner la "publication source" applicable dans la liste de termes afin de pouvoir afficher la source de l'article.

Maintenant, le problème que je rencontre semble être simple ... Tout ce que j'essaie de faire est d’ajouter à la page quelques champs supplémentaires dans lesquels vous pouvez entrer chaque terme de taxonomie. Dans ce cas, j'aimerais ajouter un champ pour "URL" et inclure une image pour chaque source afin que je puisse ajouter un logo.

La question est donc ... comment pourrais-je ajouter un champ supplémentaire à chaque terme?

Je suppose que si wordpress ne permet pas cette fonctionnalité de manière naïve, le champ "description" pourrait être utilisé comme un type de zone de champs personnalisés et donc que les données peuvent y être stockées.

Ensuite, j'essaie bien sûr d'extraire les données et de les afficher.

J'ai été en mesure de personnaliser les titres de colonne de taxonomie au cas où quelqu'un s'intéresserait de la même manière que les colonnes peuvent être modifiées pour des types de publication personnalisés comme celui-ci:

// 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
NetConstructor.com

Bonjour @ NetConstructor.com :

J'ai écrit ceci le mois dernier pour quelqu'un et cela peut répondre à ce que vous recherchez. C’est un exemple que vous voudriez modifier, pas une solution complète prête à l’emploi:

<?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']);
    }
  }
}

J'espère que ça aide.

5
MikeSchinkel

Je pense que sauver les méta/champs supplémentaires/champs personnalisés de taxonomie dans la table d'options est quelque chose qui tue les performances de votre site. Comme si votre site est très lourd (beaucoup de visiteurs, beaucoup de visites), alors pour un grand nombre de taxonomie personnalisée, la table d'options sera énorme. et cela augmentera le temps de chargement de la requête get_option () pour les autres plugins ou je pense que cela gênera beaucoup les performances. nous devrions enregistrer des éléments inutiles dans la table d'options ou augmenter les lignes dans la table d'options.

2
Manchumahara

Je suis tombé sur ce message dans ma quête de la même chose, et peu de temps après, j'ai trouvé ce plug-in: Ultimate Taxonomy Manager . Je ne l'ai pas encore approuvé, mais je l'ai essayé dans un environnement de test et je pense que c'est ce que vous recherchez. Cela semble un peu maladroit lors de la récupération des données, mais cela pourrait être juste moi et ma compréhension de la documentation.

2
jageo

Un moyen plus simple et plus simple serait:

WordPress Taxonomies Extra Fields the easy way - Bainternet

1
Bainternet

Vous essayez de modifier la taxonomie en ajoutant quelque chose qui n’est pas une taxonomie, ce qui ne fera que semer la confusion.

Au lieu de cela, vous devrez ajouter une méta-boîte personnalisée au type d'article, puis enregistrer les URL et les URL de l'image dans des champs personnalisés. Ensuite, vous utiliseriez le code pour ajouter des colonnes dans functions.php afin de rechercher ces champs personnalisés dans la publication appropriée à l'aide de get_meta.

1
Tom J Nowell