web-dev-qa-db-fra.com

Woocommerce: Comment remplacer les fonctions principales dans functions.php?

Existe-t-il un moyen de remplacer les fonctions principales de woocommerce dans functions.php?

par exemple, l'emplacement du fichier dans: wp-content/plugins/woocommerce/includes/class-wc-order-item-shipping.php

il y a une fonction publique suivante

public function set_method_title( $value ) {
  $this->set_prop( 'name',  wc_clean($value) );
  $this->set_prop( 'method_title',  wc_clean($value)  );
}

Comment le changer en ceci:

public function set_method_title( $value ) {
  $this->set_prop( 'name',  $value );
  $this->set_prop( 'method_title',  $value  );
}
1
mysticalghoul

Vous ne pouvez pas remplacer n'importe quelle fonction de plugin par votre propre code, à moins que :

  1. Le plugin est encapsulé dans une vérification function_exists(). Cela rend la fonction pluggable , ce qui signifie que si vous la définissez d’abord, le plugin ne tentera plus de la définir, et le vôtre sera utilisé. Cette fonction n'est pas connectable.
  2. Il existe un filtre quelque part, indiqué par l'utilisation de la fonction apply_filters(), qui vous permet de remplacer une valeur. Cette valeur peut être la sortie d'une fonction et, en utilisant le filtre, vous pouvez remplacer la sortie par la vôtre.

La fonction spécifique que vous identifiez ne l’a pas non plus, elle ne peut donc pas être remplacée. Je pense que WooCommerce a probablement une très bonne raison d’appliquer wc_clean() à ces propriétés, et s’il n’y avait pas lieu, les choses ne fonctionneraient peut-être pas comme prévu ou pourraient poser un risque pour la sécurité.

3
Jacob Peattie

Supprimer ces fonctions est très mal avisé. Il prépare les données pour la saisie dans la base de données. Ces entrées n'acceptant que du texte simple, la fonction wc_clean exécute la fonction WordPress sanitize_text_field . Selon documentation WordPress , cette fonction:

  • Vérifications UTF-8 non valides
  • Convertit les caractères uniques <en entités
  • Enlève toutes les balises Supprime les sauts de ligne, les tabulations et les espaces supplémentaires
  • Strips octets

Même si vous pouviez les supprimer, ils pourraient ne pas être enregistrés correctement dans la base de données. Cela vous ouvrirait également la porte à d'éventuelles attaques car cela permettrait d'injecter du code potentiellement dangereux. Les données doivent toujours être nettoyées avant de les enregistrer, et les données doivent correspondre aux paramètres de colonne du tableau pour éviter que certaines ne soient coupées.

3
Erica