Я разрабатываю интернет-магазин, где клиенты могут сами добавлять и редактировать товары на главной странице.Они могут сделать это через расширенные настраиваемые поля.
Это работало нормально, пока я вдруг не заметил, что продажная цена продукта не была показана.Это потому, что это вариация основного продукта.
В настоящее время я использую этот код для извлечения расширенного поля custum и связанного продукта:
<?php
$post_object = get_field('product_1');
if( $post_object ):
$post = $post_object;
setup_postdata( $post );
$product_id = $post->ID;
$product = wc_get_product( $product_id );
$category = get_the_terms( $post->ID, 'product_cat' );
$category_link = get_term_link( $category[0]->term_id, 'product_cat' );
$category_id = get_term_by('id', $category[0]->term_id, 'product_cat');
$category_name = $category_id->name;
?>
<?php
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );
?>
<a href="<?php the_permalink(); ?>">
<div class="badge-wrapper">
<img class="sale-badge" src="/wp-content/uploads/sale-image.png" />
<?php echo $product->get_price_html(); ?>
</div>
<img src="<?php echo $image[0]; ?>" data-id="<?php echo $post->ID; ?>">
<h6><?php the_title(); ?></h6>
</a>
<a class="more-info" href="<?php echo $category_link; ?>">View all</a>
<?php wp_reset_postdata();?>
<?php endif; ?>
Я знаю, возможно, это не таклучший способ получить всю информацию, но это работает.По крайней мере, до сих пор.Я нашел и попробовал много разных учебных пособий, но не 1 работает хорошо.Я подошел ближе к этому уроку:
functions.php
function get_variation_price_by_id($product_id, $variation_id){
$currency_symbol = get_woocommerce_currency_symbol();
$product = new WC_Product_Variable($product_id);
$variations = $product->get_available_variations();
$var_data = [];
foreach ($variations as $variation) {
if($variation['variation_id'] == $variation_id){
$display_regular_price = $variation['display_regular_price'].'<span class="currency">'. $currency_symbol .'</span>';
$display_price = $variation['display_price'].'<span class="currency">'. $currency_symbol .'</span>';
}
}
//Check if Regular price is equal with Sale price (Display price)
if ($display_regular_price == $display_price){
$display_price = false;
}
$priceArray = array(
'display_regular_price' => $display_regular_price,
'display_price' => $display_price
);
$priceObject = (object)$priceArray;
return $priceObject;
}
И с этим кодом, чтобы вернуть результаты, где "9" это post-ID и15 идентификатор варианта:
<?php
$variation_price = get_variation_price_by_id(9, 15);
echo $variation_price -> display_regular_price;
echo $variation_price -> display_price;
?>
Я уже получил $ post-> ID;но я не знаю, как получить ID варианта продукта (сообщение)
Как мне это сделать хорошим способом?