it-swarm.com.de

So erhöhen Sie die Bildgröße von Flickr oEmbed im Twenty Twelve-Design

Ich verwende seit einiger Zeit das hervorragende Flickr Gallery Plugin, bin aber beim Upgrade einer Site auf WP3.5 und das Twenty Twelve Theme auf oEmbeds gestoßen und beachten Sie, dass Flickr nativ unterstützt wird.

Ich habe einen kurzen Test gemacht und zwar, indem ich einfach die URL zu einer Flickr-Bildseite platziert habe, wurde ein Bild in dem Beitrag erstellt - aber es ist winzig klein, 320 Pixel breit. Angesichts des Inhaltsbereichs, der ungefähr 625 Pixel breit zu sein scheint, wäre es viel besser, das 500-Pixel-Bild zurückzusenden.

Ich habe erwähnt, dass die Einstellung für die maximale Breite, die jetzt angezeigt wird, in der Administrationsoberfläche von WP3.5 nicht vorhanden ist. Der einzige Grund, warum ich überlegte, auf die native Funktion umzusteigen, war das Entfernen von Anpassungen (das Plugin, das ich habe, ist kinderleicht zu verwenden). Muss ich ein untergeordnetes Thema erstellen, um diese Breite festzulegen? Oder vermisse ich etwas?

Alle Tipps geschätzt.

3
zkarj

Es hat nichts mit dem Thema zu tun.

Flickr oEmbed gibt eine Bilddatei zurück, deren Name mit _n.jpg endet und die effektiv eine Breite von 320px hat. Die größere Version endet mit _b.jpg

Der zu verwendende Filter-Hook ist embed_oembed_html .

Der folgende Code manipuliert das Ergebnis des zurückgegebenen HTML-Codes, um die Bildgröße zu erhöhen. Überprüfen Sie die Kommentare:

add_filter( 'embed_oembed_html', 'wpse_77745_flickr', 10, 4 );

function wpse_77745_flickr( $html, $url, $attr, $post_ID )
{
    // Check if oEmbedding from Flicker
    $provider = parse_url( $url ); 
    if( 'www.flickr.com' != $provider['Host'] )
        return $html;

    // Get the image attributes from $html
    // http://stackoverflow.com/q/138313/1287812
    preg_match_all( '/(alt|title|src)=("[^"]*")/i', $html, $img );

    // Change small for big
    $src = str_replace( '_n.jpg', '_b.jpg', $img[2][0] );

    // Build output
    // SRC and ALT vars already contain quotes
    $big_flick = "<a href='{$url}'><img src={$src} alt={$img[2][4]} width='{$attr["width"]}' height='{$attr["width"]}'></a>";

    return $big_flick;
}

Als Referenz die Parameterwerte:

$html => '<a href="http://www.flickr.com/photos/maheshguild/8299345724/"><img src="https://i.stack.imgur.com/f31ow.jpg" alt="Flamingos !!!" width="320" height="213" /></a>'
$url  => 'http://www.flickr.com/photos/maheshguild/8299345724/'
$attr => array(
    ['width'] => 625
    ['height'] => 938
    )
$post_ID => 143

Es ist einfacher, alle unsere Manipulationen mithilfe der FirePHP Bibliothek und des Add-Ons ).

2
brasofilo

Ich habe festgestellt, dass das von mir verwendete Plugin unter Wordpress 3.5 nicht funktioniert hat, und bin daher gezwungen, eine Umgehung mit minimalem Aufwand zu prüfen. Hier ist was funktioniert.

Ich habe mein bestehendes Kindermotiv von Twenty Eleven (ich habe die Seite noch nicht in Twenty Eleven geändert) durch Hinzufügen des Folgenden in functions.php geändert

if ( ! isset( $content_width ) ) $content_width = 640;

Dies veranlasste Flickr, 640 Pixel breite Bilder zurückzugeben, was zu meinem aktuellen Thema passt. Beachten Sie, dass beim Festlegen der Breite auf 639 das 320 Pixel breite Bild erneut zurückgegeben wird, sodass das genaue Verhalten noch genauer ermittelt werden muss. Für Twenty Twelve ist die Standardbreite 625, daher muss ich noch herausfinden, wie man 500 Pixel breite Bilder zurückgibt.

0
zkarj