Maison > Questions et réponses > le corps du texte
P粉8335469532023-08-30 00:08:08
J'ai également passé trois heures hier et une heure supplémentaire aujourd'hui à essayer de résoudre un problème très similaire. Je crois avoir maintenant une solution, ou du moins vous aider à vous mettre dans la bonne direction. La documentation officielle de WooCommerce semble faire la différence entre Paramètres et Paramètres d'instance (ou je ne trouve pas de documentation sur les paramètres d'instance - plus dans le paragraphe suivant).
Ce qui suit est basé sur ce que j'ai découvert jusqu'à présent par essais et erreurs. Si quelqu'un possède une documentation "officielle" à ce sujet, j'attendrais avec impatience ses commentaires sur cette réponse.
Il est important de faire la distinction entre « paramètres » et « paramètres d'instance ». Voir cette image pour une comparaison visuelle sur le backend WooCommerce :
Paramètres
Les paramètres font référence aux « Paramètres globaux du mode d'expédition », c'est-à-dire qu'ils apparaissent dans le sous-menu global, mais pas dans la zone d'expédition. La documentation officielle de WooCommerce montre comment utiliser les paramètres et comment ajouter une nouvelle page de paramètres :
https://woocommerce.com/document/shipping-method-api/一个>
https://woocommerce.com/document/settings-api/ p>
Pour utiliser la fonction/API des paramètres, vous devez spécifier
$this->supports = array('settings'); // You may also need to include shipping-zones
Dans votre constructeur.
Les « Paramètres » sont appliqués/utilisés/stockés globalement, c'est-à-dire indépendamment des régions de livraison individuelles.
Paramètres de l'instance
Les paramètres d'instance sont des paramètres qui peuvent être enregistrés individuellement pour chaque zone d'expédition. Pour les utiliser, vous devez utiliser
$this->supports = array('shipping-zones', 'instance-settings', 'instance-settings-modal');
Dans votre constructeur.
L'exemple suivant me permet de comprendre les différences subtiles mais importantes de l'API de configuration d'instance :
https://gist.github.com/malkafly/57a5e07fd03d6fd5cab84c6182d84c86
Différences de code et concernant votre question d'origine
Veuillez noter qu'il existe des différences subtiles dans les fonctionnalités et propriétés exactes de ces deux API. En fonction de votre situation, vous devez décider d'utiliser l'une de ces API, puis utiliser strictement cette API. Vous confondez les deux API, ce qui explique probablement pourquoi vous ne parvenez pas à faire fonctionner votre méthode d'expédition personnalisée.
Si vous souhaitez utiliser l'API des paramètres (globaux) :
Si vous souhaitez utiliser l'API des paramètres d'instance (spécifique à la région de livraison) :
Assurez-vous que votre constructeur ressemble à ceci/contient le code suivant :
public function __construct( $instance_id = 0 ) { $this->instance_id = absint( $instance_id ); //... }
Utilisez $this->instance_settings['title'] pour récupérer les paramètres enregistrés
Les liens dans les catégories de paramètres/paramètres d'instance correspondantes que j'ai publiées ci-dessus contiennent de nombreux exemples de code (fonctionnels) supplémentaires pour chaque méthode.