v2.5.2
Giriş yap

Woocommerce Ürün Sayfasında Nitelik Kısmını HTML ile Özelleştirme

cuneyt
2,329 defa görüntülendi

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.

Cevap yaz
Cevaplar (7)
hakanarslan
1277 gün önce

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.

mahirizm
556 gün önce

konu açıksa eğer buna benzer bir sorunum var
niteliklerde marka oluşturdum bu markaları ana sayfada bir box içine liste olarak görüntülemek istiyorum
şimdiden tşkrler

cuneyt
1277 gün önce

hocam #005968 bunu yapamadım herhalde mantığını anlayamadım olsaydı süperdide neyse sağlık olsun artık eline sağlık öok teşekkür ederim (hep buralarda ol :D)

hakanarslan
1277 gün önce

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>' );
cuneyt
1277 gün önce

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>
cuneyt
1277 gün önce

Hakan hocam harikasın çok teşekkür ederim. Diğer soruyada doğru cevap bulma ümidiyle doğru cevap diye işaretlemiyorum yanlış anlama hocam

hakanarslan
1277 gün önce

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();
}