WooC Commerce: Cách chỉnh sửa get_price_html


13

Tôi đang cố gắng chỉnh sửa giá trị giá cho một sản phẩm.

Trong single-product/price.phpđó có một cuộc gọi mẫu đến $product->get_price_html. Làm cách nào tôi có thể chỉnh sửa chức năng / phương thức đó để thay đổi cách trình bày HTML?

Hiện tại ngay cả khi tôi xóa tất cả nội dung của chức năng nằm trong class-wc-productnó vẫn hiển thị một cách kỳ diệu? Có ai biết tại sao không?

Câu trả lời:


17

Các tệp lõi và plugin không bao giờ được chỉnh sửa trực tiếp, vì mọi cập nhật có thể ghi đè lên các thay đổi của bạn. Nếu bạn tìm trong nguồn WooC Commerce theo get_price_htmlphương thức, có một số bộ lọc có sẵn để sửa đổi đầu ra của hàm.

Xem add_filtertrong Codex để biết thêm thông tin về cách thêm bộ lọc vào apply_filterscuộc gọi.

Từ get_price_htmltrong class-wc-product:

return apply_filters('woocommerce_get_price_html', $price, $this);

Vì vậy, để thêm bộ lọc của riêng bạn:

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 );
}

Cảm ơn câu trả lời, nhân tiện tại sao khi tôi xóa nội dung của chức năng chính, nó vẫn trả lại đầu ra như bình thường
Lucky Luke

1
Vì vậy, hãy nói nếu có một đợt giảm giá và nó trả lại cho tôi <del>£2</del><ins>£1</ins>, làm thế nào tôi có thể thay đổi nó thành Was:<del>£2</del> Now:<ins>£1</ins>một bộ lọc?
Luke may mắn

không chắc chắn, không quá quen thuộc với WooC Commerce, có lẽ một lớp khác mở rộng nó. xem chỉnh sửa ở trên cho câu hỏi thứ hai của bạn.
Milo

Brill ,;), sự giúp đỡ tuyệt vời
Lucky Luke

Tôi đang cố gắng để biết rằng những gì xảy ra trong woocommerce_get_price_htmlbộ lọc mặc định cho $price. Trong trang web của tôi, thương mại điện tử hiển thị 0 đô la cho các sản phẩm miễn phí thay thếFree!
SKMohammadi

5
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>';
   }
}

5
Ngay cả khi mã của bạn có thể hoạt động (và tôi không có lý do gì để nghĩ rằng nó không hoạt động) thì đây là trang web Q / A, không phải là kho lưu trữ mã để chia sẻ kiến ​​thức và kiến ​​thức giải thích mã của bạn tốt hơn, thay vì chỉ viết mã mà không cần giải thích cũng không bình luận nội tuyến ...
gmazzap

mã này cũng sử dụng các thuộc tính đối tượng không tốt.
Svetoslav Marinov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.