programing

Woocommerce ph 코드 get_price_html()

starjava 2023. 2. 26. 08:40
반응형

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

반응형