Come aggiungere un nuovo tipo di prodotto tra i tipi di prodotto WooCommerce?

27 ott 2013, 01:19:35
Visualizzazioni: 20.3K
Voti: 7

Voglio aggiungere un nuovo "tipo di prodotto" personalizzato al plugin WooCommerce:

Screenshot del menu a tendina dei tipi di prodotto in WooCommerce

Ho provato a duplicare uno dei file dei tipi di prodotto esistenti (struttura dei template di WooCommerce) come nuovo file (modificando il nome del file e il nome nei commenti) ma non ha funzionato!

Screenshot della struttura dei file dei template di WooCommerce

0
Tutte le risposte alla domanda 1
4
20

Il template per aggiungere al carrello è solo una delle molte cose che dovrai fare. Ogni tipo di prodotto ha la sua classe nella cartella /includes/. Ognuna di queste estende la classe WC_Product.

Per aggiungere elementi alla lista che hai catturato nello screenshot (che si trova nella parte amministrativa e non nel front-end, a differenza del template add-to-cart.php), dovrai filtrare product_type_selector.

add_filter( 'product_type_selector', 'wpa_120215_add_product_type' );
function wpa_120215_add_product_type( $types ){
    $types[ 'your_type' ] = __( 'Il tuo tipo di prodotto' );
    return $types;
}

Poi dovrai dichiarare la tua classe prodotto. Il sistema standard di denominazione è WC_Product_Type_Class quindi in questo esempio sarebbe:

class WC_Product_Your_Type extends WC_Product{
    /**
     * __construct function.
     *
     * @access public
     * @param mixed $product
     */
    public function __construct( $product ) {
        $this->product_type = 'your_type'; // Deprecato da WC3.0 vedere il metodo get_type()
        parent::__construct( $product );
    }

     /**
     * Get internal type.
     * Necessario per la compatibilità con WooCommerce 3.0
     * @return string
     */
    public function get_type() {
        return 'your_type';
    }
}

Stai facendo una domanda molto complessa e non posso fornire una risposta più completa. Spero che questo ti indirizzi sulla strada giusta. Ti incoraggio vivamente a leggere il codice in WooCommerce. È molto ben commentato e puoi vedere come gestiscono i diversi tipi di prodotto.

Modifica Aggiunta compatibilità con WC3.0 alla classe del tipo di prodotto.

27 ott 2013 02:41:29
Commenti

Per le persone del ✨ futuro ✨ che troveranno questo, ecco un post del blog che potrebbe fornire alcune informazioni aggiuntive utili: http://jeroensormani.com/adding-a-custom-woocommerce-product-type/

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

Fantastico! Ma per le persone del futuro, il $this->product_type non sarà più accurato per WC2.7+.

helgatheviking helgatheviking
29 dic 2016 21:11:00

@helgatheviking Hai qualche suggerimento su dove trovare informazioni più aggiornate in particolare sul product_type? Continuo a imbattermi in quei tutorial "vecchi" che usano solo quella sintassi.

kontur kontur
1 set 2017 09:53:04

@kontur dovrai aggiungere un metodo get_type() alla tua classe. Dovrebbe restituire il tipo di prodotto. Esempio: public function get_type() { return 'your_type'; } Vedi la mia modifica.

helgatheviking helgatheviking
1 set 2017 22:41:01