Dimensiune personalizată pentru imagini în Woocommerce
Woocommerce are trei dimensiuni predefinite pentru imagini. Dar pentru că există mai mult de trei dimensiuni diferite de containere, unele imagini sunt întotdeauna întinse sau comprimate. Prin urmare, calitatea imaginii și viteza paginii au de suferit. Woocommerce folosește, de exemplu, dimensiunea de catalog pentru imaginile din catalog și imaginile produselor asociate. WordPress oferă o metodă simplă pentru a genera dimensiuni personalizate pentru imagini. Am încercat să generez o dimensiune pentru produsele mele asociate:
add_action( 'after_setup_theme', 'jmt_theme_setup' );
function jmt_theme_setup() {
add_image_size( 'related-thumb', 274, 274, true );
}
Există vreo modalitate de a introduce această dimensiune în imaginile produselor asociate din Woocommerce?
Mulțumesc pentru interes.
Cu respect, theo

Puteți suprascrie CSS-ul WooCommerce prin acest fragment de cod, Remi Corson:
<?php
add_filter( 'wp_head' , 'related_products_style' );
function related_products_style() {
if( is_product() ) :
?>
<style>
.woocommerce .related ul.products li.product img, .woocommerce .related ul li.product img, .woocommerce .upsells.products ul.products li.product img, .woocommerce .upsells.products ul li.product img, .woocommerce-page .related ul.products li.product img, .woocommerce-page .related ul li.product img, .woocommerce-page .upsells.products ul.products li.product img, .woocommerce-page .upsells.products ul li.product img
{
width: 274px !important;
height: 274px !important;
}
</style>
<?php
endif;
}

Mulțumesc pentru cod, dar suprascrierea CSS-ului nu aplică dimensiunile corecte ale imaginilor. Aceasta stabilește doar dimensiunea containerului.

Există câteva opțiuni pe care le poți alege atunci când modifici dimensiunile imaginilor. Schimbarea imaginilor implicite WooCommerce este mai dificilă decât într-o instalare WordPress obișnuită, deoarece acestea sunt integrate în plugin.
Modificarea dimensiunilor imaginilor pentru produsele similare:
Am testat acest lucru și pare să funcționeze doar pentru produsele similare (deși sunt sigur că poate fi extins și în alte zone). Poate fi necesar să folosești Regenerate Thumbnails pentru a obține dimensiunile corecte.
Trebuie să includem totul într-un filtru wp
:
function woo_init() {
// Funcțiile de mai jos vor fi aici...
}
add_action( 'wp', 'woo_init' );
Am reușit să omit prima parte, setarea variabilei de interogare, și totuși să funcționeze, dar deoarece folosește un șablon generic content-product.php
, nu aș avea încredere în această abordare. Așadar, vom seta o variabilă de interogare pentru a ne asigura că modificăm dimensiunea imaginii doar pentru produsele similare:
if( is_singular( 'product' ) ) {
add_filter( 'woocommerce_related_products_args', function( $query_args ) {
if( ! empty( $query_args ) ) {
set_query_var( 'related_products', true );
}
return $query_args;
} );
}
În continuare, trebuie să eliminăm acțiunea implicită loop_product_thumbnail
și să o înlocuim cu una personalizată. Testăm dacă variabila de interogare related_products
este setată și este TRUE
înainte de a afișa noua imagine, altfel afișăm imaginea implicită.
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
add_action( 'woocommerce_before_shop_loop_item_title',
function() {
$related = get_query_var( 'related_products' );
if( TRUE == $related ) {
echo woocommerce_get_product_thumbnail( 'related-thumb', 274, 274 ); // Noua dimensiune a imaginii
} else {
echo woocommerce_get_product_thumbnail(); // Dimensiunea implicită a imaginii
}
},
10
);
CSS
WooCommerce folosește width: 100%; height: auto;
pentru toate imaginile. Poți modifica acest lucru în max-width: 100%; width: auto; height: auto;
și să ajustezi marginile / numărul de coloane pentru a obține aspectul dorit.
Modificarea dimensiunilor inițiale ale imaginilor
Poți modifica dimensiunile reale ale imaginilor folosite de WooCommerce urmând pașii de mai jos:
- Autentifică-te în WordPress
- Navighează la
WooCommerce -> Produse -> Afișare (submeniu)
- În partea de jos poți seta dimensiunile imaginilor pentru:
- Imagini din catalog
- Imaginea produsului individual
- Miniaturile produselor
- În final, poți instala Regenerate Thumbnails pentru a obține dimensiunile modificate.
O altă metodă este să setezi aceste dimensiuni la instalare:
function yourtheme_woocommerce_image_dimensions() {
global $pagenow;
if ( ! isset( $_GET['activated'] ) || $pagenow != 'themes.php' ) {
return;
}
$catalog = array(
'width' => '400', // px
'height' => '400', // px
'crop' => 1 // true
);
$single = array(
'width' => '600', // px
'height' => '600', // px
'crop' => 1 // true
);
$thumbnail = array(
'width' => '120', // px
'height' => '120', // px
'crop' => 0 // false
);
// Dimensiunile imaginilor
update_option( 'shop_catalog_image_size', $catalog ); // Miniaturi pentru categoriile de produse
update_option( 'shop_single_image_size', $single ); // Imaginea produsului individual
update_option( 'shop_thumbnail_image_size', $thumbnail ); // Miniaturi pentru galeria de imagini
}
add_action( 'after_switch_theme', 'yourtheme_woocommerce_image_dimensions', 1 );
Link-uri de referință WooCommerce:

Mulțumesc. Am încercat toate acestea. Dar se pare că singura soluție este să fac un compromis. Asta înseamnă o singură dimensiune pentru imaginile conexe și pentru cele din catalog. Mă întrebam doar dacă există o modalitate ușoară de a adăuga a patra dimensiune pentru imagini. Salutări, Theo

@theo - Din păcate, nu cunosc nicio metodă. Teoretic, ai putea suprascrie Șablonul WooCommerce cu unul personalizat, să-ți creezi propria WP_Query și să generezi aceeași buclă, dar să apelezi imaginea personalizată în acest fel. S-ar putea să existe o altă metodă pe care nu am încercat-o niciodată, dar voi edita întrebarea mea cu ea și poate vei avea noroc.

Ok, am încercat și nu am reușit. Cred că va trebui să mă mulțumesc cu această limitare. Dar mulțumesc pentru toate indiciile.

@timholz Nu am o instalație WooCommerce activă pentru a experimenta cu asta. De îndată ce am ocazia, voi încerca și voi vedea la ce mă gândesc. Dacă descopăr ceva, te voi menționa și voi anunța sau dacă găsești tu o soluție mai bună, posteaz-o aici! Mult succes!

Bună Howdy Mc Gee, mulțumesc pentru răspuns. Pentru moment am atribuit cea mai mare dimensiune pentru imaginile înrudite și cele din catalog. Arată ok, dar pierd puțin din viteză, deoarece imaginile din catalog trebuie redimensionate. Dar oricum, mulțumesc pentru grijă. :)theo

@timholz Am găsit o soluție și am modificat răspunsul meu, adăugând soluția la început. Am luat teoria originală și am testat-o, ar trebui să funcționeze pentru produsele înrudite și probabil ai putea să o faci să funcționeze și pentru alte produse. Dacă ai constatat că a funcționat pentru tine, nu uita să apeși pe bifă pentru a arăta cititorilor viitori că a funcționat pentru tine!

– Mulțumesc pentru efortul tău. Acum este prea târziu. Dar mâine voi testa codul și voi raporta.

Salut Howdy McGee – nu am putut aștepta până mâine. Codul tău funcționează excelent. Condiționalul face magia. Mulțumesc foarte mult pentru timpul și efortul tău. Site-ul la care lucrez este în modul de dezvoltare, dar imediat ce va fi gata, îți voi trimite un link (doar în caz că ești interesat). Mulțumesc foarte mult. Cu stimă, Theo PS: Am încercat să te votez în sus, dar din păcate, reputația mea este insuficientă. Așadar, te votez în sus aici. Răspuns de top.

@timholz Mă bucur că a funcționat pentru tine! Te rog să te asiguri că apeși bifa, astfel încât viitorii cititori să știe că acest răspuns a rezolvat întrebarea ta (comentariile sunt ascunse după un anumit timp). Aș sugera, de asemenea, să revii la orice alte întrebări pe care le-ai pus în trecut și să faci la fel (chiar dacă tu le-ai răspuns). Este o modalitate excelentă și ușoară de a câștiga reputație, precum și de a-ți arăta recunoștința!

acesta este linkul:www.j-m-t.ch Acum am dimensiunile corecte ale imaginilor pentru produsele din catalog și cele similare. mulțumesc
