web-dev-qa-db-fra.com

Woocommerce - Comment vérifier le type de produit dans le plugin

Je suis assez nouveau sur wordpress/woocommerce et je viens de commencer à jouer avec la création d'un plugin personnalisé.

Jusqu'à présent, j'ai ajouté mes paramètres de woocommerce personnalisés via l'API.

J'ai rencontré un problème où je veux ajouter un champ personnalisé sur un seul produit dans l'onglet des données du produit.

J'ai réussi à l'afficher en utilisant le code suivant:

add_action( 'woocommerce_product_options_general_product_data', array( $this, 'cuzd_general_fields' ) );
add_action( 'woocommerce_process_product_meta', array( $this, 'cuzd_general_fields_save') );

Cependant, je dois maintenant vérifier si le type de produit est simple ou variable. J'ai essayé ce qui suit:

$product = new WC_Product( get_the_ID() );
        if( $product->is_type( 'simple' ) ) {
          //
}

Cependant, j'obtiens une erreur:

 Fatal error: Class 'WC_Product' not found in ....

J'ai le sentiment que j'essaie de lancer la classe de produit avant qu'elle ne soit appelée. J'ai très probablement le format entier du plugin de classe incorrect. Tout matériel de lecture avec de bonnes instructions/bonnes pratiques serait apprécié.

Sinon, si ce qui précède est une solution simple, veuillez me le faire savoir.

16
Cloud_Ratha

Le problème est probable que get_the_ID() ne renvoie pas l'ID d'un produit.

$product_id = 10; // the ID of the product to check
$_product = wc_get_product( $product_id );
if( $_product->is_type( 'simple' ) ) {
// do stuff for simple products
} else {
// do stuff for everything else
}

Si $product_id est l'ID d'une variante puis le type renvoyé pour $_product serait variation.

De plus, vous pouvez vérifier global $product que WooCommerce configure. Bien que ce ne soit jamais l'ID de variation et l'ID du produit de la variable parent.

19
helgatheviking