it-swarm.com.de

entferne Links von Bildern mit functions.php

Ich suche nach einer Möglichkeit, den Anhang-Link von Bildern im Beitragsinhalt zu entfernen.

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

Danke, Bart

8
digitalbart
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;
}

Der reguläre Ausdruck könnte einfacher sein, und dies entzieht Ihnen leider auch die eindeutige Klasse wp-image-xxx (wobei xxx die Anhangs-ID ist) des Tags <img>, aber es ist die sicherste, die ich mir vorstellen kann, um nur Links um Anhangsbilder entfernen und In-Text-Links sowie Links um Nicht-Anhangsbilder intakt lassen.

Wenn Sie sich nicht um angehängte Bilder kümmern und möchten, dass alle Bilder im Post-Inhalt 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 es jedoch brechen sehen, wenn die Innenseite eines Ankers in einem anderen selbstschließenden Element endet, z. B. einem <br />-Tag. Das wäre natürlich selten, aber ich würde empfehlen, die erste, wenn auch längere Version zu verwenden.

5
Johannes Pille