2012-03-31 10 views
1

WordPress hat eine gute Unterstützung für Bilder im Allgemeinen.PHP Wordpress dynamische benutzerdefinierte Bildgrößen

neue Bildgrößen zu erhalten, würde man einige Funktionen hinzufügen, wie:

add_theme_support('post-thumbnails'); //thumnails 
set_post_thumbnail_size(200, 120, true); // Normal post thumbnails 
add_image_size('single-post-thumbnail', 400, 300,False); // single-post-test 
add_image_size('tooltip', 100, 100, true); // Tooltips thumbnail size 
/// and so on and so on 

meine Frage ist:

Wie jemand diese Funktionen wirken sich in einer dynamischen Art und Weise machen, dass diese Größen werden Sinn beim Upload berechnet werden?

zum Beispiel - Wenn ich ein Bild von 3000x4000 Pixeln hochladen - ich würde meine Bildgrößen gerne sein:

add_image_size('half', 50%, 350%, False); // Half the original 
add_image_size('third', 30%, 30%, true); // One Third the original 

Gibt es eine Möglichkeit, das zu tun? Wo kann ich dafür haken? Diese Bildgrößen werden in vielen Funktionen registriert verwendet - Kann jemand über eine Uber-kreative Weise nachdenken, um das zu erreichen?

Antwort

1

können Sie verwenden wp_get_attachment_image_src zu verkleinerte Bilder eines attachement zu erhalten, in Ihnen nur Fall, dass add_theme_support('post-thumbnails') in Ihrer functions.php Datei angeben, dann in der Vorlage wie folgt vor:

$id = get_post_thumbnail_id($post->ID) 
$orig = wp_get_attachment_image_src($id) 
$half = wp_get_attachment_image_src($id, array($orig[1]/2, orig[2]/2)) 
$third = wp_get_attachment_image_src($id, array($orig[1]/3, orig[2]/3)) 
etc... 
+0

Dank für Deine Antwort . Erstens - Es soll in einem Plugin verwendet werden - kein Thema. Zweitens - wenn ich diese Methode verwenden werde - werden die Thumbs beim Hochladen nicht erstellt, oder liege ich hier falsch? –

+0

können Sie 'wp_get_attachment_image_src' auch in einem Plugin aufrufen. und ja, die Bilder in der Größe werden beim ersten Aufruf der Methode erstellt, aber ich denke, Sie können die Datei "add_attachment" haken und sie direkt nach dem Hochladen des Originals erstellen. –

+0

Aber es kann 1000 Original geben - jeder Beitrag kann 10 oder 20 haben ... –

2

Oder Sie den Filter verwenden könnte image_resize_dimensions.

Ich habe Setup ein neues Bild mit einer seltsamen Breite und Höhe wie so

add_image_size('half', 101, 102); 

dann die Filter auf der Hälfte des Bild nur verwendet, wenn die Halbbildgröße

Größe verändert wird
add_filter('image_resize_dimensions', 'half_image_resize_dimensions', 10, 6); 

function half_image_resize_dimensions($payload, $orig_w, $orig_h, $dest_w, $dest_h, $crop){ 
    if($dest_w === 101){ //if half image size 
     $width = $orig_w/2; 
     $height = $orig_h/2; 
     return array(0, 0, 0, 0, $width, $height, $orig_w, $orig_h); 
    } else { //do not use the filter 
     return $payload; 
    } 
} 
Verwandte Themen