Entfernen Sie Links aus Bildern mit functions.php

8

Ich suche nach einer Möglichkeit, den Anhangslink aus Bildern im Beitragsinhalt zu entfernen.

Ich möchte dies der functions.php in meinem Thema hinzufügen. Ich weiß, dass Sie dies im Beitrag pro Bild deaktivieren können, aber ich möchte dies nur einmal auf meiner Datei functions.php tun. Irgendwelche Ideen?

Danke, Bart

Digitalbart
quelle

Antworten:

5
add_filter( 'the_content', 'attachment_image_link_remove_filter' );

function attachment_image_link_remove_filter( $content ) {
    $content =
        preg_replace(
            array('{<a(.*?)(wp-att|wp-content\/uploads)[^>]*><img}',
                '{ wp-image-[0-9]*" /></a>}'),
            array('<img','" />'),
            $content
        );
    return $content;
}

Die Regex könnte einfacher sein und dies beraubt Sie leider auch der eindeutigen Klasse wp-image-xxx(wobei xxx die Anhangs-ID ist) des <img>Tags, aber es ist die sicherste, die ich finden könnte, um nur Links um Anhangsbilder zu entfernen und In-Text-Links zu hinterlassen sowie Links zu Bildern ohne Anhang intakt.

Wenn Sie sich nicht für Bilder ohne Anhang interessieren und möchten, dass alle Bilder im Beitragsinhalt ohnehin nicht in Links eingeschlossen werden, sollte dies ausreichen:

function attachment_image_link_remove_filter( $content ) {
    $content =
        preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
    return $content;
}

Ich kann jedoch sehen, dass es Dinge kaputt macht, wenn das Innere eines Ankers in einem anderen selbstschließenden Element endet, beispielsweise einem <br />Tag. Das wäre natürlich selten, aber ich würde empfehlen, die erste, wenn auch längere Version zu verwenden.

Johannes Pille
quelle
Danke das hat perfekt funktioniert! Am Ende habe ich den ersten benutzt und ja, das hat mir viel Zeit gespart.
Digitalbart