Filtering links using the WordPress ‘the_permalink’ filter
This morning I improved this theme by adding a filter to WordPress’s ‘the_permalink’ filter. The idea was to scan post content, pull out the first link in a post and then use that link as the permalink, so to speak. By doing this, I make it so that I can simply point my readers to other posts that I find particularly meaningful without them having to click onto an additional page.
Here’s my filter function, plus a few links for reference…
function elegance_first_link_in_link_posts($url){ global $post; if(get_post_format($post->ID) !== 'link') return $url; $content_to_parse = apply_filters('the_content', $post->post_content); $dom = new DOMDocument; $dom->loadHTML($content_to_parse); $anchors = $dom->getElementsByTagName('a'); if($anchors->length <= 0) return $url; return $anchors->item(0)->getAttribute('href'); } add_filter('the_permalink', 'elegance_first_link_in_link_posts');