J'essaie de modifier le prix d'un seul produit.
Dans single-product/price.php
, il existe un appel de modèle à $product->get_price_html
. Comment puis-je éditer cette fonction/méthode pour changer la façon dont le HTML est présenté?
Pour le moment, même si je supprime tout le contenu de la fonction située dans class-wc-product
, elle affiche toujours miraculeusement? Quelqu'un sait pourquoi?
Les fichiers core et plugins ne doivent jamais être modifiés directement, car toute mise à jour pourrait écraser vos modifications. Si vous regardez dans le code source de WooCommerce avec la méthode get_price_html
, il existe plusieurs filtres disponibles pour modifier le résultat de la fonction.
Voir add_filter
dans le Codex pour plus d'informations sur l'ajout de filtres à apply_filters
calls.
De get_price_html
dans class-wc-product
:
return apply_filters('woocommerce_get_price_html', $price, $this);
Donc, pour ajouter votre propre filtre:
add_filter( 'woocommerce_get_price_html', 'wpa83367_price_html', 100, 2 );
function wpa83367_price_html( $price, $product ){
return 'Was:' . str_replace( '<ins>', ' Now:<ins>', $price );
}
function wpa83368_price_html( $price,$product ){
// return $product->price;
if ( $product->price > 0 ) {
if ( $product->price && isset( $product->regular_price ) ) {
$from = $product->regular_price;
$to = $product->price;
return '<div class="old-colt"><del>'. ( ( is_numeric( $from ) ) ? woocommerce_price( $from ) : $from ) .' Retail </del> | </div><div class="live-colst">'.( ( is_numeric( $to ) ) ? woocommerce_price( $to ) : $to ) .'Our Price</div>';
} else {
$to = $product->price;
return '<div class="live-colst">' . ( ( is_numeric( $to ) ) ? woocommerce_price( $to ) : $to ) . 'Our Price</div>';
}
} else {
return '<div class="live-colst">0 Our Price</div>';
}
}