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 å-ä-ö.

Copyright 2024 Jon Täng
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram