Woocommerce ph 코드 get_price_html()
WordPress와 WooCommerce는 처음이라 변경하고자 하는 출력을 생성하는 코드 라인을 파악했다고 생각합니다.
저는 WooCommerce의 무료 제작자 테마를 사용하고 있으며 index.php에는 다음과 같은 줄이 있습니다.
<h3>
<?php the_title(); ?>
<span class="price">
<?php echo $_product->get_price_html(); ?>
</span>
</h3>
이를 통해 "Black Stone - $43"(제품 제목 - 가격)과 같은 효과를 얻을 수 있습니다.
'블랙 스톤' 같은 걸 원해요
$43"
(제품 타이틀 가격)
"get_price_html()" 함수에는 몇 가지 필터가 있는 것 같습니다만, 설명서가 그다지 좋지 않거나, 어떻게 조작하는지를 알 수 없습니다.
어떤 방향이든 상관없습니다.
감사해요.
모든.$product->get_price_html();
다음과 같은 것이 생성됩니다.
<del><span class="amount">£8.00</span>–<span class="amount">£9.00</span></del>
<ins><span class="amount">£7.00</span>–<span class="amount">£8.00</span></ins>
이 데이터를 조작하려면 이 문자열에서 데이터를 추출해야 합니다.
WP 필터를 사용하는 경우 - 변경됩니다.get_price_html()
모든 장소에 출력하고 변경할 필요가 있는 경우get_price_html()
출력을 한 곳에서만 수행할 수 있습니다.
global $product;
$price_html = $product->get_price_html();
$price_html_array = price_array($price_html);
function price_array($price){
$del = array('<span class="amount">', '</span>','<del>','<ins>');
$price = str_replace($del, '', $price);
$price = str_replace('</del>', '|', $price);
$price = str_replace('</ins>', '|', $price);
$price_arr = explode('|', $price);
$price_arr = array_filter($price_arr);
return $price_arr;
}
이제 어레이에 동일한 데이터가 있습니다.
Array ( [0] => £8.00–£9.00 [1] => £7.00–£8.00 )
네가 원하는 건 뭐든지 할 수 있어
글로벌 필터를 적용하려면 , 다음의 항목을 추가해야 합니다.
add_filter( 'woocommerce_get_price_html', 'price_array', 100, 2 );
이것은 아마 당신이 찾고 있는 필터일 것입니다.
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price( $price, $product ) {
$price = '';
$price .= woocommerce_price($product->min_variation_price);
return $price;
}
포맷/스타일링이 불분명하기 때문에 최소가격이 표시되도록 변경할 뿐입니다.$product 객체를 통해 다양한 세부 정보에 액세스하여 출력을 맞춤화할 수 있습니다.기능 내에서 사용하세요.php 파일.
위의 행을 수정하고 테마에 작은 css 코드를 추가함으로써 이를 달성할 수 있습니다.custom.css
파일.
지정된 코드를 다음과 같이 바꿉니다.
<h3>
<?php the_title(); ?>
<br/>
<span class="price">
<?php echo $_product->get_price_html(); ?>
</span>
</h3>
그리고 다음 css 코드를 추가합니다.custom.css
(권장) 파일 또는 테마의 마지막 줄에 있습니다.style.css
파일.
ul.featured-products li h3 .price::before{
content : '' !important;
}
주의사항:위 코드는 아티퍼 버전 1.3.16(2016년 5월 5일 출시)에서 테스트되었으며 정상적으로 작동합니다.
이게 도움이 됐으면 좋겠네요!
이 기능은 소스코드로 만들었습니다.
function extractPrices($product, $currency = "BRL")
{
if($product->is_type( 'simple' )) {
return (object) ["regular_price" => $product->regular_price, "sale_price" => $product->sale_price];
}
$prices = $product->get_variation_prices( true );
if (!empty( $prices['price'])) {
$min_price = current( $prices['price'] );
$max_price = end( $prices['price'] );
$min_reg_price = current( $prices['regular_price'] );
$max_reg_price = end( $prices['regular_price'] );
if ( $min_price !== $max_price ) {
return (object) ["regular_price" => $max_price, "sale_price" => $min_price];
} elseif ( $product->is_on_sale() && $min_reg_price === $max_reg_price ) {
return (object) ["regular_price" => $max_reg_price, "sale_price" => $min_price];
} else {
return (object) ["regular_price" => $max_price, "sale_price" => $min_price];
}
}
return (object) ["regular_price" => null, "sale_price" => null];
}
할인혜택을 받을 수 있는 또 다른 기능
function calculeOff($prices): ?int
{
if(!empty($prices->sale_price) && !empty($prices->regular_price)) {
return round(100 - ($prices->sale_price / $prices->regular_price * 100));
}
return null;
}
언급URL : https://stackoverflow.com/questions/19346067/woocommerce-php-code-get-price-html
'programing' 카테고리의 다른 글
Ui-Router $state.go()가 데이터를 새로 고치지 않음 (0) | 2023.02.26 |
---|---|
Oracle 테이블 또는 보기 이름 변경 (0) | 2023.02.26 |
요소가 표시되지 않음 오류(요소를 클릭할 수 없음) (0) | 2023.02.26 |
역직렬화 중 JSON.Net 무시 속성 (0) | 2023.02.26 |
Moment.js 와 ReactJS (ES6) (0) | 2023.02.26 |