-
Notifications
You must be signed in to change notification settings - Fork 0
/
add-title-to-empty-links.php
65 lines (54 loc) · 1.8 KB
/
add-title-to-empty-links.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/**
* Add title="" to Empty Links.
*/
function auto_add_link_titles($content)
{
if (empty($content) || !class_exists('DOMDocument')) {
return $content;
}
$links = array();
$dom = new DOMDocument('1.0', 'UTF-8');
$internalErrors = libxml_use_internal_errors(true);
$dom->loadHTML(utf8_decode($content));
libxml_use_internal_errors($internalErrors);
$dom->preserveWhiteSpace = false;
foreach ($dom->getElementsByTagName('a') as $link) {
if ($link->getAttribute('title')) {
continue;
}
$link_text = $link->textContent;
if (!$link_text && !empty($link->firstChild) && $link->firstChild->hasAttributes()) {
$alt = $link->firstChild->getAttribute('alt');
$alt = $alt ? $alt : $link->firstChild->getAttribute('title');
$alt = str_replace('-', ' ', $alt);
$alt = str_replace('_', ' ', $alt);
// Return cleaned up alt
$link_text = $alt;
}
if ($link_text) {
$links[$link_text] = $link->getAttribute('href');
}
}
if (!empty($links)) {
foreach ($links as $text => $link) {
if ($link && $text) {
$text = ($text); // Sanitize
$text = ucwords($text); // Captilize words (looks better imo)
$replace = $link . '" title="' . $text . '"'; // Add title to link
$content = str_replace($link . '"', $replace, $content); // Replace post content
}
}
}
return $content;
}
add_filter('the_content', 'auto_add_link_titles');
/**
* Add title="" to Empty Nav Links.
*/
add_filter('nav_menu_link_attributes', 'add_title_to_nav', 10, 4);
function add_title_to_nav($atts, $item, $args)
{
$atts['title'] = $item->title;
return $atts;
}