Cómo Agregar una Taxonomía Personalizada al Plugin WooCommerce

25 nov 2013, 22:34:11
Vistas: 38.9K
Votos: 12

Estoy tratando de agregar una Taxonomía Personalizada a WooCommerce apuntando al tipo de publicación product en WooCommerce. Usé el siguiente código y lo agregué en functions.php. No obtengo ningún mensaje de error, pero la taxonomía no se muestra en WooCommerce. ¿Pueden decirme cómo puedo hacer esto o qué estoy haciendo mal aquí?

<?php
// Registrar Taxonomía Personalizada
function custom_taxonomy_Item()  {

$labels = array(
    'name'                       => 'Elementos',
    'singular_name'              => 'Elemento',
    'menu_name'                  => 'Elemento',
    'all_items'                  => 'Todos los Elementos',
    'parent_item'                => 'Elemento Padre',
    'parent_item_colon'          => 'Elemento Padre:',
    'new_item_name'              => 'Nombre del Nuevo Elemento',
    'add_new_item'               => 'Agregar Nuevo Elemento',
    'edit_item'                  => 'Editar Elemento',
    'update_item'                => 'Actualizar Elemento',
    'separate_items_with_commas' => 'Separar Elementos con comas',
    'search_items'               => 'Buscar Elementos',
    'add_or_remove_items'        => 'Agregar o eliminar Elementos',
    'choose_from_most_used'      => 'Elegir entre los Elementos más usados',
);
$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => true,
    'show_tagcloud'              => true,
);
register_taxonomy( 'item', 'product', $args );
}
?>

Actualización

<?php
add_action( 'init', 'custom_taxonomy_Item' );

// Registrar Taxonomía Personalizada
function custom_taxonomy_Item()  {

$labels = array(
    'name'                       => 'Elementos',
    'singular_name'              => 'Elemento',
    'menu_name'                  => 'Elemento',
    'all_items'                  => 'Todos los Elementos',
    'parent_item'                => 'Elemento Padre',
    'parent_item_colon'          => 'Elemento Padre:',
    'new_item_name'              => 'Nombre del Nuevo Elemento',
    'add_new_item'               => 'Agregar Nuevo Elemento',
    'edit_item'                  => 'Editar Elemento',
    'update_item'                => 'Actualizar Elemento',
    'separate_items_with_commas' => 'Separar Elementos con comas',
    'search_items'               => 'Buscar Elementos',
    'add_or_remove_items'        => 'Agregar o eliminar Elementos',
    'choose_from_most_used'      => 'Elegir entre los Elementos más usados',
);
$args = array(
    'labels'                     => $labels,
    'hierarchical'               => true,
    'public'                     => true,
    'show_ui'                    => true,
    'show_admin_column'          => true,
    'show_in_nav_menus'          => true,
    'show_tagcloud'              => true,
);
register_taxonomy_for_object_type( 'item', 'product', $args );

}
?>
2
Comentarios

¿a qué acción has enganchado tu función custom_taxonomy_Item?

Milo Milo
25 nov 2013 22:39:54

Honestamente, no sabía a qué acción engancharla. ¿No pude encontrar qué parte del plugin maneja esto?

user1760110 user1760110
25 nov 2013 22:46:26
Todas las respuestas a la pregunta 1
9
19

Tienes que hacer:

add_action( 'init', 'custom_taxonomy_Item' );

Porque:

Usa la acción init para llamar a esta función. Llamarla fuera de una acción puede causar problemas.

ver página del codex register_taxonomy. Además de eso:

Mejor prevenir que lamentar al registrar taxonomías personalizadas para tipos de contenido personalizados. Usa register_taxonomy_for_object_type() justo después de la función para interconectarlos. De lo contrario podrías encontrarte con problemas donde el tipo de contenido no está adjunto dentro de los filtros que se ejecutan durante parse_request o pre_get_posts.

Así que mejor añade:

register_taxonomy_for_object_type( 'item', 'product' );

Además de leer las páginas del codex enlazadas, podrías echar un vistazo a:

Todo esto junto debería ayudarte a empezar.



**Edición:**

Como dije en el comentario, funciona para mí, este es el Código:

add_action( 'init', 'custom_taxonomy_Item' );
function custom_taxonomy_Item()  {
    $labels = array(
        'name'                       => __('Ítems'),
        'singular_name'              => __('Ítem'),
        'menu_name'                  => __('Ítems'),
        'all_items'                  => __('Todos los ítems'),
        'parent_item'                => __('Ítem padre'),
        'parent_item_colon'          => __('Ítem padre:'),
        'new_item_name'              => __('Nombre del nuevo ítem'),
        'add_new_item'               => __('Añadir nuevo ítem'),
        'edit_item'                  => __('Editar ítem'),
        'update_item'                => __('Actualizar ítem'),
        'separate_items_with_commas' => __('Separar ítems con comas'),
        'search_items'               => __('Buscar ítems'),
        'add_or_remove_items'        => __('Añadir o eliminar ítems'),
        'choose_from_most_used'      => __('Elegir entre los ítems más usados'),
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => true,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
    );
    register_taxonomy( 'item', 'product', $args );
    register_taxonomy_for_object_type( 'item', 'product' );
}
25 nov 2013 22:46:29
Comentarios

Hola ialocin, gracias por tu comentario y sugerencias. Actualicé el código como publiqué arriba pero "Item" aún no aparece en el Menú de Woocommerce

user1760110 user1760110
25 nov 2013 22:53:21

Tienes que agregar register_taxonomy_for_object_type y no reemplazar register_taxonomy. Funciona en mi entorno de desarrollo. Por cierto, los atributos de producto también son taxonomías personalizadas. @user1760110

Nicolai Grossherr Nicolai Grossherr
25 nov 2013 22:59:45

¡Eso es extraño! No funciona para mí

user1760110 user1760110
25 nov 2013 23:01:02

gracias, ahora funciona PERO no está agregando ningún Término al producto. si haces clic en el Ítem e intentas agregar un nuevo Ítem, ¡no hace nada!

user1760110 user1760110
25 nov 2013 23:09:41

No puedo confirmar esto, funciona bien para mí. @user1760110

Nicolai Grossherr Nicolai Grossherr
25 nov 2013 23:13:03

Gracias por tu ayuda, voy a aceptar tu comentario como respuesta correcta, sin embargo tengo que averiguar por qué no agrega términos.

user1760110 user1760110
25 nov 2013 23:16:57

@user1760110 Tengo el mismo problema, el código anterior no me está agregando nuevos términos, ¿encontraste una solución a tu problema?

tommyf tommyf
24 abr 2014 11:48:58

+1 para register_taxonomy_for_object_type( 'item', 'product' );

Magico Magico
5 jun 2014 17:17:41

Funcionó perfectamente después de agregar ambas líneas register_taxonomy( 'item', 'product', $args ); register_taxonomy_for_object_type( 'item', 'product' );

Ariful Haque Ariful Haque
26 oct 2016 13:42:04
Mostrar los 4 comentarios restantes