web-dev-qa-db-fra.com

Comment ajouter un nouveau type de produit sur les types de produits woocommerce?

Je souhaite ajouter un nouveau "type de produit" personnalisé au plugin woocommerce:

enter image description here

J'ai essayé de dupliquer l'un des fichiers de type de produit existants (structure de modèle woocommerce) en tant que nouveau fichier (nom de fichier et nom commenté à l'intérieur), mais cela n'a pas fonctionné!

enter image description here

7
Amino

Le modèle d'ajout au panier ne représente qu'une des nombreuses tâches à effectuer. Chaque type de produit a sa propre classe dans le dossier /includes/. Chacun d'eux étend la classe WC_Product.

Pour ajouter des éléments à la liste que vous avez scannée (qui se trouve du côté de l’administrateur et non du front-end, contrairement au modèle add-to-cart.php, vous devrez filtrer product_type_selector.

add_filter( 'product_type_selector', 'wpa_120215_add_product_type' );
function wpa_120215_add_product_type( $types ){
    $types[ 'your_type' ] = __( 'Your Product Type' );
    return $types;
}

vous devrez ensuite déclarer votre classe de produits. Le système de nommage standard est WC_Product_Type_Class. Dans cet exemple, ce serait:

class WC_Product_Your_Type extends WC_Product{
    /**
     * __construct function.
     *
     * @access public
     * @param mixed $product
     */
    public function __construct( $product ) {
        $this->product_type = 'your_type'; // Deprecated as of WC3.0 see get_type() method
        parent::__construct( $product );
    }

     /**
     * Get internal type.
     * Needed for WooCommerce 3.0 Compatibility
     * @return string
     */
    public function get_type() {
        return 'your_product';
    }
}

Vous posez une question très compliquée et je ne peux fournir une réponse plus complète. J'espère que cela vous met sur la bonne voie. Je vous encourage fortement à lire le code dans WooCommerce. C'est très bien commenté et vous pouvez voir comment ils gèrent les différents types de produits.

Éditer Ajout de la compatibilité WC3.0 à la classe de type de produit.

18
helgatheviking