Idag har jag färdigställt en liten funktion för att få snygga externa länkar på en WordPress-hemsida eller blogg. Funktionen kollar alla länkar i content, eller den sträng man väljer att hook:a med add_filter, ifall det är en intern eller extern länk. Den gör också en koll ifall samma länk finns i innehållet, så att det inte blir flerutskrift av markeringen i strängen. Se resultatet här: WordPress.org
/**
* Find and mark external links
* Copyright Jon Täng <contact@jontang.se>
*
* @param string $content
* @retrun string $content
*/
function find_external_links( $content ) {
$xml = new DOMDocument();
$xml->loadHTML($content);
$elements = $xml->getElementsByTagName('a');
$i = 0;
while ( $i < $elements->length ) {
$element = $elements->item($i);
$url_home = parse_url( home_url(), PHP_URL_HOST );
$url_host = parse_url( $element->attributes->item(0)->value, PHP_URL_HOST );
$anchor_text = utf8_decode($element->textContent);
if ( $url_host !== $url_home ) {
if ( strpos( $content, $anchor_text .' ' ) === false)
$content = str_replace( $anchor_text.'', $anchor_text.' ', $content );
}
$i++;
}
return $content;
}
add_filter( 'the_content', 'find_external_links' );
Denna kod lägger till ett element med en Font Awesome-ikon. Vill du lägga till något annat efter den externa länken byter du bara ut <i class="fa fa-external-link"></i> mot ett bildelement eller liknande.
Prova gärna koden och kom med feedback. Klistra bara in den i din functions.php-fil. Om du använder dig av koden ska du länka tillbaka till denna hemsida (jontang.se) med ett erkännande.
EDIT: Koden har fått en liten uppdatering för att klara länktexter med å-ä-ö.


Jag är Marketing Specialist / Webbutvecklare på Bozzanova Reklambyrå i Vänersborg. Digital Marknadsföring, Sökmotoroptimering, Google Ads, Social Ads, WordPress och Webbutveckling är min vardag.