the_post_thumbnail scalare fără croșetare dură

16 apr. 2014, 10:11:05
Vizualizări: 17.5K
Voturi: 4

Recent am dorit să îmbunătățesc blogul meu cu imagini în evidență/thumbnail-uri pentru postări. Folosesc o temă personalizată construită pe tema roots (nu cred că este o problemă specifică temei roots). Imaginea pe care o încărc are dimensiunile 1024x768 și ar trebui să fie croșetată în format letterbox 1024x512.

Acesta este codul pe care îl folosesc în fișierul temei:

<?php
    if ( has_post_thumbnail() ) {
    the_post_thumbnail(array(1024, 512), array('class' => 'img-responsive')); // adaugă thumbnail-ul postării
        }
    ?>

Problema este că pe serverul meu local XAMPP funcționează perfect. Dar pe serverul web imaginile nu sunt croșetate și nu acoperă întreaga lățime a zonei de conținut principal, așa cum se întâmplă pe instalarea locală. Verificând codul cu Firebug, imaginea are 682px lățime și 512px înălțime (față de 1024 x 512px pe XAMPP). Ceea ce se întâmplă este că imaginea este scalată, nu croșetată.

Am reîncărcat tema și am dezactivat toate pluginurile. Bineînțeles că am căutat subiecte legate, am încercat alte mostre de cod, am verificat dacă GD este activat - este și am regenerat thumbnail-urile. Niciuna dintre acestea nu a rezolvat problema.

Orice sugestie este binevenită.

0
Toate răspunsurile la întrebare 3
0

Conform intrării din Codex pentru the_post_thumbnail(), transmiterea unui array nu a funcționat începând cu WordPress 3.0:

ATENȚIE: Decuparea nu funcționează în WP 3.0+. Tot ce este necesar pentru WP 3.0+ este apelul pentru a afișa miniatura articolului. Apoi mergeți la Media în panoul de administrare și setați miniatura să fie decupată la dimensiunea dorită.

Implementarea corectă este crearea unei dimensiuni personalizate pentru imagini cu valorile din array, folosind add_image_size() în cadrul funcției de inițializare a temei (sau orice alt callback legat la after_setup_theme):

add_image_size( 'custom-size', 1024, 512, true );

...apoi apelați acea dimensiune direct:

the_post_thumbnail( 'custom-size' );
18 apr. 2014 15:56:05
0

În mod normal, dacă dorești să tai o miniatură, trebuie să specifici acest lucru folosind "true" ca al treilea parametru.

array(1024, 512, true)

Cel puțin așa faci dacă ai definit o dimensiune pentru miniaturi în fișierul functions.php. Deci, presupun că ar trebui să funcționeze și în array-ul the_post_thumbnail :) Și dacă nu funcționează, poți oricând să definești o dimensiune pentru miniaturi în functions.php și să o folosești pe aceea...

Iată o referință: http://codex.wordpress.org/Function_Reference/set_post_thumbnail_size

17 apr. 2014 13:53:32
0

Iată ce a rezolvat problema (poate nu cea mai elegantă soluție, dar funcționează pentru moment):

În custom.php (functions.php din tema Roots) am adăugat acest cod:

 if ( function_exists( 'add_theme_support' ) ) {
add_theme_support( 'post-thumbnails' );
    set_post_thumbnail_size(1024, 512, true);

}

În fișierul temei unde ar trebui să apară imaginea reprezentativă, am adăugat acest cod:

    if ( has_post_thumbnail() ) {
the_post_thumbnail(array(1024, 512, true), array('class' => 'img-responsive')); // adaugă imaginea reprezentativă
    }
?>

Ceea ce nu înțeleg este că niciuna dintre ele nu funcționează fără cealaltă. Oricum, rezolvă problema pentru moment.

18 apr. 2014 15:49:45