Цели:
- Настроить страницу магазина.
- Сделать товары недоступными для покупки для определенных категорий.
- Скрыть диапазоны цен для переменных. Товар и цены отображаются только при выборе.
- Изменить отображение цен на странице магазина (в связи с пунктом 1, особенно о ценах, я создал атрибут с настраиваемым значением цены — «pa_harga»)
---Код для пункта 1---
Код: Выделить всё
add_action('woocommerce_loop_add_to_cart_link','displaying_product_attributes',5);
function displaying_product_attributes () {
global $product;
$tipe_iklan_val = $product->get_attribute('pa_tipe-iklan');
$title_val = $product->get_title();
$harga_val = $product->get_attribute('pa_harga');
$harga2_val = $product->get_price_html();
$kt_val = $product->get_attribute('pa_kt');
$km_val = $product->get_attribute('pa_km');
$luas_bangunan_val = $product->get_attribute('pa_luas-bangunan');
$luas_tanah_val = $product->get_attribute('pa_luas-tanah');
$kelurahan_val = $product->get_attribute('pa_kelurahan');
$area_val = $product->get_attribute('pa_area');
$sku_val = $product->get_sku();
echo "
".str_replace(',',' atau', $product->get_attribute .$tipe_iklan_val)."
";
echo "".$title_val."";
echo "
".$harga_val."
";
echo "
".$harga2_val."
";
echo "
[i][/i] ".$kt_val." [i][/i] ".$km_val." [i][/i] ".$luas_bangunan_val."m2 [i][/i] ".$luas_tanah_val."m2
";
echo "
[i][/i] ".$kelurahan_val.", ".$area_val."
";
echo "
ID : ".$sku_val."
";
}
---Код для пункта 2---
Код: Выделить всё
add_filter('woocommerce_is_purchasable','misha_catalog_mode_on_for_category',10, 2 );
function misha_catalog_mode_on_for_category( $is_purchasable, $product {
if( has_term( 'sold', 'product_cat', $product->get_id() ) ) {
return false;
}
return $is_purchasable;
}
add_filter( 'woocommerce_variable_sale_price_html','woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'woocommerce_remove_prices', 10, 2 );
add_filter( 'woocommerce_get_price_html', 'woocommerce_remove_prices', 10, 2 );
function woocommerce_remove_prices( $price, $product ) {
if( is_product_category('sold') || has_term( 'sold', 'product_cat',$product->get_id() ) )
$price = '';
return $price;
}
add_action( 'woocommerce_single_product_summary','unavailable_product_display_message', 20 );
function unavailable_product_display_message() {
global $product;
if(! $product->is_purchasable() ){
echo '
' . __("Unit telah terjual/Disewa.") . '
';
echo '
[url=http://www.wajaraja.com/hubungi-kami/]Tinggalkan pesan di sini[/url]
';
}
}
---Код для пункта 3---
Код: Выделить всё
//Hide Price Range for WooCommerce Variable Products
add_filter('woocommerce_variable_sale_price_html','lw_variable_product_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html','lw_variable_product_price', 10, 2 );
function lw_variable_product_price( $v_price, $v_product ) {
// Product Price
$prod_prices = array( $v_product->get_variation_price( 'min', true ),
$v_product->get_variation_price( 'max', true ) );
$prod_price = $prod_prices[0]!==$prod_prices[1] ? sprintf(__('Harga terendah : %1$s', 'woocommerce'),
wc_price( $prod_prices[0] ) ) : wc_price( $prod_prices[0] );
// Regular Price
$regular_prices = array( $v_product->get_variation_regular_price( 'min',true ),
$v_product->get_variation_regular_price( 'max', true ) );
sort( $regular_prices );
$regular_price = $regular_prices[0]!==$regular_prices[1] ?
sprintf(__('Harga terendah : %1$s','woocommerce'), wc_price( $regular_prices[0] ) ) : wc_price( $regular_prices[0] );
if ( $prod_price !== $regular_price ) {
$prod_price = ''.$regular_price.$v_product->get_price_suffix() . ' ' .
$prod_price . $v_product->get_price_suffix() . '';
}
return $prod_price;
}
//Hide “From:$X”
add_filter('woocommerce_get_price_html', 'lw_hide_variation_price', 10, 2);
function lw_hide_variation_price( $v_price, $v_product ) {
$v_product_types = array( 'variable');
if ( in_array ( $v_product->product_type, $v_product_types ) && !(is_shop()) ) {
return '';
}
// return regular price
return $v_price;
}
---Код для пункта 4---
Код: Выделить всё
add_filter( 'woocommerce_get_price_html','rei_woocommerce_price_html', 9999, 2 );
function rei_woocommerce_price_html( $price, $product ) {
$currency = get_woocommerce_currency_symbol( );
$price = $currency . custom_number_format( floatval($product->get_price() ), 0 );
return $price;
}
function custom_number_format( $n, $precision = 0 ) {
if ( $n < 1000 ) {
// Default
$n_format = number_format( $n );
} elseif ( $n < 1000000 ) {
// Thousand
$n_format = number_format( $n / 1000, $precision ) . ' Ribu';
} elseif ( $n < 1000000000 ) {
// Million
$n_format = number_format( $n / 1000000, $precision ) . ' Juta';
} else if ( $n < 1000000000000 ) {
// Billion
$n_format = number_format( $n / 1000000000, $precision ) . ' M';
} else {
// Trillion
$n_format = number_format( $n / 1000000000000, $precision ) . ' T';
}
return $n_format;
}
Примечание: код работал нормально. Но у меня возникли проблемы с установкой количества отображаемых чисел, если это тысяча (Рибу), миллион (Юта), М или Т.
Смотрите результат > Пункт 4
Я хочу:
798 500 000 рупий > 798,5 рупий джута
925 799 000 рупий > 925,8 рупий джута
535 000 000 рупий > 535 рупий юта
1 000 000 000 рупий > 1 М рупий
Рп. 1 050 000 000 > 1,05 млн рупий
Рп. 2 539 000 000 > рупий. 2,54 М
Итак, я внес небольшую модификацию и вот код (Пожалуйста, поправьте меня, если я ошибаюсь)
--- Пункт кода 4 > Пересмотреть ---
Код: Выделить всё
add_filter( 'woocommerce_get_price_html','rei_woocommerce_price_html', 9999, 2 );
if (!is_shop()) return;
function rei_woocommerce_price_html( $price, $product ) {
$currency = get_woocommerce_currency_symbol( );
$price = $currency .' ' .custom_number_format( floatval( $product->get_price() ), 2 );
return $price;
}
$n = 1000000;
function custom_number_format($n) {
$n = (0+str_replace(",","",$n));
if(!is_numeric($n)) return false;
if($n>1000000000000) return round(($n/1000000000000),1).' '.'-T';
else if($n>1000000000) return round(($n/1000000000),2).' '.'M';
else if($n>1000000) return round(($n/1000000),3).' '.'Juta';
else if($n>1000) return round(($n/1000),1).' '.'Ribu';
return number_format($n);
}
$v = custom_number_format($n);
echo $v;
На этом этапе я чувствую, что достиг цели.
Но когда Я просмотрел каждый продукт и почувствовал, что что-то не так и это нужно исправить.
Точки кода 2 и 3 перестают работать должным образом. Дополнительный код из пунктов 4 и 4-пересмотра вернул цену, которая должна была быть скрыта.
Вот как это выглядит после добавления пункта 4 кода
Смотрите результат > Связано с пунктом 2 || Связано с пунктом 3.
Пожалуйста, помогите мне, чтобы цель пункта 4 могла быть достигнута без изменения того, что уже есть.
Подробнее здесь: https://stackoverflow.com/questions/694 ... ce-display
Мобильная версия