¿Cómo agregar un nuevo tipo de producto en los tipos de productos de WooCommerce?

27 oct 2013, 01:19:35
Vistas: 20.3K
Votos: 7

Quiero agregar un nuevo "tipo de producto" personalizado al plugin de WooCommerce:

menú desplegable de tipos de producto en WooCommerce

Intenté duplicar uno de los archivos de tipo de producto existentes (estructura de plantillas de WooCommerce) como un nuevo archivo (nombre del archivo y nombre comentado dentro) ¡pero no funcionó!

estructura de archivos de tipos de producto de WooCommerce

0
Todas las respuestas a la pregunta 1
4
20

La plantilla de añadir al carrito es solo una de las muchas cosas que necesitarás hacer. Cada tipo de producto tiene su propia clase en la carpeta /includes/. Cada una extiende la clase WC_Product.

Para añadir elementos a la lista que has capturado (que está en el lado del administrador y no en el front-end, a diferencia de la plantilla add-to-cart.php), necesitarás filtrar product_type_selector.

add_filter( 'product_type_selector', 'wpa_120215_add_product_type' );
function wpa_120215_add_product_type( $types ){
    $types[ 'your_type' ] = __( 'Tu Tipo de Producto' );
    return $types;
}

Luego necesitarás declarar tu clase de producto. El sistema de nomenclatura estándar es WC_Product_Type_Class, así que en este ejemplo sería:

class WC_Product_Your_Type extends WC_Product{
    /**
     * Función __construct.
     *
     * @access public
     * @param mixed $product
     */
    public function __construct( $product ) {
        $this->product_type = 'your_type'; // Obsoleto desde WC3.0 ver método get_type()
        parent::__construct( $product );
    }

     /**
     * Obtener tipo interno.
     * Necesario para compatibilidad con WooCommerce 3.0
     * @return string
     */
    public function get_type() {
        return 'your_type';
    }
}

Estás haciendo una pregunta muy complicada y no puedo proporcionar una respuesta más completa. Espero que esto te ponga en el camino correcto. Te animo encarecidamente a leer el código en WooCommerce. Está muy bien comentado y puedes ver cómo manejan los diferentes tipos de productos.

Edición Añadida compatibilidad con WC3.0 a la clase de tipo de producto.

27 oct 2013 02:41:29
Comentarios

Para las personas del ✨ futuro ✨ que encuentren esto, aquí hay una publicación de blog que podría proporcionar información adicional útil: http://jeroensormani.com/adding-a-custom-woocommerce-product-type/

Travis Northcutt Travis Northcutt
29 dic 2016 19:49:30

¡Me encanta! Pero para las personas del futuro, el $this->product_type no será preciso para WC2.7+.

helgatheviking helgatheviking
29 dic 2016 21:11:00

@helgatheviking ¿Algún punto sobre dónde encontrar información más actualizada en particular sobre el product_type? Sigo encontrándome con esos tutoriales "antiguos" que usan solo esa sintaxis.

kontur kontur
1 sept 2017 09:53:04

@kontur necesitarás agregar un método get_type() a tu clase. Debería devolver el tipo de producto. Ejemplo: public function get_type() { return 'tu_tipo'; } Mira mi edición.

helgatheviking helgatheviking
1 sept 2017 22:41:01