it-swarm-es.com

Agregar campo personalizado a la entrada de taxonomía: Panel

Estoy tratando de lograr algo que pensé que sería bastante fácil de lograr, pero parece que no hay ejemplos reales disponibles para satisfacer mis necesidades.

Esencialmente, tengo un tipo de publicación personalizada de "Artículos" para este tipo de publicación personalizada. Tengo una nueva taxonomía que registré, que se creó para que se puedan agregar las publicaciones de origen.

Mi objetivo era poder agregar un artículo a través de este tipo de publicación personalizada y luego seleccionar la "publicación de origen" correspondiente de la lista de términos para poder mostrar de dónde proviene el artículo.

Ahora, el problema que tengo parece ser simple ... Todo lo que estoy tratando de hacer es agregar algunos campos adicionales a la página donde puede ingresar cada término de taxonomía. En este caso, me gustaría agregar un campo para "URL" e incluir una imagen para cada fuente para poder agregar un logotipo.

Entonces, la pregunta aquí es ... ¿cómo podría agregar un campo adicional a cada término?

Supongo que si wordpress no permite esta funcionalidad ingenuamente, de alguna manera el campo "descripción" podría utilizarse como un tipo de área de campos personalizados y, por lo tanto, los datos se pueden almacenar allí.

Entonces, por supuesto, estoy tratando de extraer los datos y mostrarlos.

Pude personalizar los títulos de las columnas de taxonomía en caso de que alguien esté interesado de la misma manera que las columnas se pueden modificar para tipos de publicaciones personalizadas como esta:

// 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

Hola @ NetConstructor.com :

Escribí este último mes para alguien y puede abordar lo que estás buscando. Es un ejemplo que modificaría, no una solución completa lista para usar:

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

Espero eso ayude.

5
MikeSchinkel

Creo que guardar metatas/campos adicionales/campos personalizados de taxonomía en la tabla de opciones es algo que mata el rendimiento de su sitio. Como si su sitio tiene una gran ponderación (muchos visitantes, muchos visitas), para una gran cantidad de taxonomía personalizada, la tabla de opciones será enorme. y aumentará el tiempo de carga de la consulta get_option () para otros complementos o creo que esto dificultará mucho el rendimiento. debemos guardar cosas innecesarias en la tabla de opciones o aumentar las filas en la tabla de opciones.

2
Manchumahara

Encontré este post en mi búsqueda de lo mismo, y poco después me encontré con este complemento: Ultimate Taxonomy Manager . Todavía no lo estoy respaldando, pero lo probé en un entorno de prueba y creo que hace lo que estás buscando. Se siente un poco torpe al recuperar los datos, pero eso podría ser solo yo y mi comprensión de la documentación.

2
jageo
1
Bainternet

Está intentando modificar la taxonomía agregando algo que no es una taxonomía, que solo confundirá.

En su lugar, deberá agregar un meta cuadro personalizado al tipo de publicación del artículo y guardar las URL y las URL de imagen en los campos personalizados. Luego usaría el código para agregar columnas en functions.php para buscar esos campos personalizados en la publicación relevante usando get_meta

1
Tom J Nowell