Woocommerce Ürün Sayfasında Nitelik Kısmını HTML ile Özelleştirme
Merhaba arkadaşlar woocommerce eklektisinde functions.php dosyası ile araştıra araştıra birçok sorunumu çözdüm yanlız bir sorun varki çözemiyorum. Bu nitelik kısmı yani Ek Bilgi kısmında gösterilen tabloyu bir türlü özelleştiremiyorum aslında yapmak istediğim 2 şey var bir tanesi yerini değiştirmek bu kısa açıklama kısmı varya oraya eklemek istiyorum. Diğer sorunum ise bu nitelik kısmının html yapısını değiştirmek yani table kullanmak istemiyorum. Fikir verecek yada direkt olarka çözümü bilen arkadaşlar vardır umarım şimdiden teşekkürler.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (7)
Hm alamadık yani doğru cevap ödülünü :P
Mesela bir div içinde göstermek istediğini var sayıyorum nitelikleri, onu da şöyle yapabilirmişsin;
function attribute_stil_degistir( $product ) {
global $product;
global $post;
$attributes = $product->get_attributes();
if ( ! $attributes ) {
return;
}
foreach ( $attributes as $attribute ) {
// Get the taxonomy.
$terms = wp_get_post_terms( $product->id, $attribute[ 'name' ], 'all' );
$taxonomy = $terms[ 0 ]->taxonomy;
// Get the taxonomy object.
$taxonomy_object = get_taxonomy( $taxonomy );
// Get the attribute label.
$attribute_label = $taxonomy_object->labels->singular_name;
// Display the label followed by a clickable list of terms.
echo get_the_term_list( $post->ID, $attribute[ 'name' ] , '<div class="stilin">' . $attribute_label . ': ' , ', ', '</div>' );
}
}
add_action( 'woocommerce_single_product_summary', 'attribute_stil_degistir', 35);
Tabi bu durumda bir önceki verdiğim cevaptaki wc_custom_show_attributes_outside_tabs
fonksiyonunu kullanmaman gerekiyor.
Onu hızlıca şöyle if else ile çözersin;
//Burada attribute isimlerini yakala
if($attribute_label == "Marka"){
$icon = 'fas fa-american-sign-language-interpreting';
}else if($attribute_label == "Başka Bişi"){
$icon = 'fas baskabisi';
}
// Burayıda böyle düzenle ;)
echo get_the_term_list( $post->ID, $attribute[ 'name' ] , '<i class="'. $icon .'"></i> <div class="stilin">' . $attribute_label . ': ' , ', ', '</div>' );
Vay canına bee hocam sende baya hünerliymişsin :) peki ben her farklı niteliğin önüne bir resim veya :before ile birşey koymak istesem nasıl olur :):) aslında aklımdaki şey tam olarak şu
<div class="container">
<div class="row">
<div class="col-3">
<span>fontawesome kodu</span>
<span>Nitelik Adı</span>
<span>Nitelik Değeri</span>
</div>
<div class="col-3">
<span>fontawesome kodu</span>
<span>Nitelik Adı</span>
<span>Nitelik Değeri</span>
</div>
<div class="col-3">
<span>fontawesome kodu</span>
<span>Nitelik Adı</span>
<span>Nitelik Değeri</span>
</div>
<div class="col-3">
<span>fontawesome kodu</span>
<span>Nitelik Adı</span>
<span>Nitelik Değeri</span>
</div>
</div>
</div>
Konumunu şu şekilde değiştirebilirsin,
// Ek bilgiler tabını kaldır
add_filter( 'woocommerce_product_tabs', 'remove_additional_information_tab', 100, 1 );
function remove_additional_information_tab( $tabs ) {
unset($tabs['additional_information']);
return $tabs;
}
// Attribute alanını sepete ekle butonunun sonrasına taşı
add_action( 'woocommerce_single_product_summary', 'wc_custom_show_attributes_outside_tabs', 35 );
function wc_custom_show_attributes_outside_tabs() {
global $product;
$product->list_attributes();
}