Crear categorías de productos mediante programación y agregar miniaturas en woocommerce

2

Estoy intentando crear categorías (sub) de productos en una instalación de WordPress. La parte (sub) de las categorías no representa ningún problema, pero parece que no encuentro la manera de agregar la imagen en miniatura a la categoría específica.

En wp-admin , el campo que quiero rellenar solicita un ID de archivo adjunto, así que intenté cargar la imagen como archivo adjunto, sin conectarlo a una publicación específica. Luego creé mi categoría y probé los nombres de campo product_cat_thumbnail_id y thumbnail_id dentro de la función wp_insert_term() , y los rellené con el ID del archivo adjunto. Al igual que lo hace la función wp-admin , excepto que wp-admin lo llena con JavaScript después de la carga, luego lo guarda todo al crear la categoría.

No estoy seguro de si lo estoy haciendo mal, me falta algo obvio o de que es simplemente un tipo de campo protegido que no puedes rellenar ... (lo que me parece una locura)

¿Alguna idea?

    
pregunta BBQ. 12.08.2015 - 14:45

1 respuesta

5

Por la presente mi respuesta a mi propia publicación. ¡Espero que esto sea útil para otros también!

Para crear la categoría, usé una matriz con los datos por categoría necesarios para la función wp_insert_term .

Luego hice un bucle a través de esa matriz y usé una función fetch_media que carga la imagen encontrada en la ruta de la imagen dada a esa función, y devuelve una ID de archivo adjunto.

Luego llamo a la función wp_insert_term , que establecí como $cid , para poder recuperar el valor term_id de la salida de la matriz devuelta.

Con el $cid['term_id'] devuelto y el $thumb_id obtenido de la función fetch_media , puedo usar la función update_woocommerce_term_meta y actualizar mi miniatura con el archivo adjunto cargado.

La función fetch_media básica que estoy usando se puede encontrar aquí:
enlace

Lo modifiqué para que no fuera necesario post_id, porque obviamente, mis términos (categorías) no son publicaciones.

$cats = array(
    array('thumb' => 'images/uploads/cat09.png','name' => 'Cat 9','description' => 'Cat 9 description','slug' => 'cat-9','parent' => 8),
    array('thumb' => 'images/uploads/cat10.png','name' => 'Cat 10','description' => 'Cat 10 description','slug' => 'cat-10','parent' => 8),
    array('thumb' => 'images/uploads/cat11.png','name' => 'Cat 11','description' => 'Cat 11 description','slug' => 'cat-11','parent' => 8),
);

foreach($cats as $data) {
    $thumb_id = fetch_media($data['thumb']);
    $cid = wp_insert_term(
        $data['name'], // the term 
        'product_cat', // the taxonomy
        array(
            'description'=> $data['description'],
            'slug' => $data['slug'],
            'parent' => $data['parent']
        )
    );

    $cat_id = isset( $cid['term_id'] ) ? $cid['term_id'] : 0;
    update_woocommerce_term_meta( $cid['term_id'], 'thumbnail_id', absint( $thumb_id ) );
}
    
respondido por el BBQ. 13.08.2015 - 09:34

Lea otras preguntas en las etiquetas