it-swarm.com.de

Bildlink ändern: wp_get_attachment_link

Kann mir jemand helfen, wp_get_attachment_link so zu filtern, dass ein bestimmtes Vorkommen davon eher mit dem "Medium" oder einem Bild anderer Größe als mit der vollen Größe verknüpft ist. Ich habe folgendes in einer Seitenvorlage:

$args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ( $attachments as $attachment ) {
    echo wp_get_attachment_link( $attachment->ID , array(150,150) ); 
    }
}

Ich kann einen Filter hinzufügen, um eine Klasse oder ein Rel hinzuzufügen, aber ich kann das Standardbild (wie ursprünglich hochgeladen) in voller Größe, das mit der Vorlage verknüpft ist, trotzdem nicht ändern Wenn ein Benutzer ein sehr großes Bild (dh 4000 x 4000 + Pixel) hochlädt, wird der Link zu langsam geladen, und ich möchte nicht, dass die Öffentlichkeit ein Bild in Druckqualität aus dem Leuchtkasten herunterladen kann.

2
Aces

Ich glaube, ich habe meine eigene Frage irgendwie beantwortet ...

Da ich ein untergeordnetes Thema von Hybrid verwendet habe, habe ich die Cleaner Gallery-Erweiterung in der Datei functions.php aktiviert: add_theme_support( 'cleaner-gallery' );

Dann habe ich basierend auf dem Thema hier meinen eigenen Filter erstellt:

add_filter( 'cleaner_gallery_image', 'my_gallery_image', 10, 4 );
function my_gallery_image( $image, $id, $attr, $instance ) {

        $post = get_post( $id );
        $image_src = wp_get_attachment_image_src( $post->ID, 'medium' );
        $image_thumb = wp_get_attachment_image_src( $post->ID, 'Custom Thumb' );
        $title = esc_attr( $post->post_title );

        $image = "<a href='{$image_src[0]}'><img src='{$image_thumb[0]}' border='0'></a>";

    return $image;
}

Es gibt immer noch Dinge, die nicht stimmen, wie der Titel, aber er beantwortet die ursprüngliche Frage, obwohl ich sicher bin, dass er verbessert werden könnte, da ich eher am Sitz meiner Hose arbeite.

1
Aces

Ich bin mir nicht sicher, ob Sie die Links innerhalb des Inhalts in PHP filtern können, aber Sie könnten jQuery verwenden, um die href der einzelnen Links zu ersetzen und sie basierend auf den von Ihnen erwähnten rel- und class-Werten auszuwählen.

0
jjeaton

Sie können die Größe, die Sie verknüpfen möchten, in der Funktion wp_get_attachment_link angeben. Funktioniert der von Ihnen veröffentlichte Code nicht?

Versuchen:

$args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ); 
$attachments = get_posts($args);
if ($attachments) {
    foreach ( $attachments as $attachment ) {
        echo wp_get_attachment_link( $attachment->ID , 'medium', false ); 
    }
}
0
Mario