Afișarea valorii unui singur atribut al produsului în pagina Magazin (Woocommerce)

2 nov. 2016, 01:22:56
Vizualizări: 53.5K
Voturi: 6

Încerc să afișez valoarea unui singur atribut ('size') în pagina de magazin. Am folosit următorul cod pentru a afișa toate valorile, am încercat să-l adaptez pentru a afișa un singur atribut, dar fără succes...

Mă puteți ajuta să adaptez codul pentru a afișa doar valorile atributului 'size'?

// Obține atributele
$attributes = $product->get_attributes();
// Începe bucla
foreach ( $attributes as $attribute ) : 
    // Verifică și afișează, adaptat din /templates/single-product/product-attributes.php
    if ( $attribute['is_taxonomy'] ) {
        $values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'names' ) );
        echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    } else {
        // Convertește barele verticale în virgule și afișează valorile
        $values = array_map( 'trim', explode( WC_DELIMITER, $attribute['value'] ) );
        echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    }
endforeach;

Puteți să-mi spuneți cum să-l modific

0
Toate răspunsurile la întrebare 2
8
11

Pur și simplu folosește global $product apoi folosește metoda get_attribute() a acelui obiect produs, ca mai jos-

$size = $product->get_attribute( 'pa_size' );

De asemenea, poți obține asta și cu următorul cod-

global $product;
$size = array_shift( wc_get_product_terms( $product->id, 'pa_size', array( 'fields' => 'names' ) ) );

Ține minte că trebuie să folosești obligatoriu global $product.

2 nov. 2016 06:35:32
Comentarii

Mulțumesc, și cum afișez apoi valorile (separate prin spațiu)?

nadyawell nadyawell
2 nov. 2016 16:06:25

Nu am înțeles la ce te referi prin "separate prin spații"!! Și dacă consideri că acest răspuns te-a ajutat, te rog să îl accepți.

CodeMascot CodeMascot
2 nov. 2016 16:36:14

Chiar m-a ajutat, mulțumesc. Pur și simplu am probleme cu afișarea corectă a valorilor în template-ul meu. Poți să-mi recomanzi cum să le afișez?

nadyawell nadyawell
2 nov. 2016 16:39:59

Poți oferi vreun link vizibil sau o imagine cum vrei să le afișezi? @user3767576

CodeMascot CodeMascot
2 nov. 2016 16:41:35

http://nadinka.webd.pl/modafirma/category/clothing/ - la hover pe imaginea produsului vei vedea o casetă cu Dimensiuni disponibile, vreau să afișez acolo toate valorile de dimensiuni atribuite produsului. Am încercat să le afișez folosind $echo, dar apare doar prima valoare (există mai multe pentru fiecare produs)

nadyawell nadyawell
2 nov. 2016 16:48:16

Am înțeles. Sunt cam ocupat acum. Dă-mi puțin timp. Mă voi întoarce la tine. Ok, prietene?

CodeMascot CodeMascot
2 nov. 2016 16:59:14

Codul care a funcționat pentru mine este $size = $product->get_attribute( 'pa_size' ); global $product; $size = array_values( wc_get_product_terms( $product->id, 'pa_size', array( 'fields' => 'names' ) ) ); $prodsizes=implode(", ",$size); echo $prodsizes;

nadyawell nadyawell
2 nov. 2016 22:01:48

Pentru a afișa un atribut specific numit "Dimensiuni produs":

add_action( 'woocommerce_single_product_summary', 'display_product_formated_dimensions_table', 25 );

function display_product_formated_dimensions_table(){ global $product;

$item_dimensions = $product->get_attribute( 'Item Dimensions' ); if ( $product->has_attributes() ) { echo '<table class="shop_attributes"><tr> <th>' . __( 'Dimensiuni produs', 'woocommerce' ) . '</th> <td class="product_dimensions">' . esc_html( $item_dimensions ) . '</td> </tr></table>'; } }

Antebios Antebios
3 dec. 2020 07:32:21
Arată celelalte 3 comentarii
1
-1
$product = wc_get_product();
echo $product->get_attribute( 'Mărime' );
16 iul. 2018 10:53:12
Comentarii

Poți să explici de ce acesta este un răspuns?

Krzysiek Dróżdż Krzysiek Dróżdż
16 iul. 2018 12:00:07