2012-04-06 6 views
0

Ich muss eine Klasse auf die Post-Archiv-Links anwenden, die von WordPress 'get_archive_links Funktion ausgegeben werden. Ich kann dies erreichen, indem /wp-includes/general-template.php (line 842) Modifizierung, von hier:Wie kann ich dies auf die functions.php-Datei meines Themas anwenden, anstatt auf eine Kern-WordPress-Datei?

$link_html = "\t<li>$before<a href='$url' title='$title_text'>$text</a>$after</li>\n"; 

dazu:

$link_html = "\t<li>$before<a class='hello' href='$url' title='$title_text'>$text</a>$after</li>\n"; 

Ich bin ziemlich sicher, ich brauche in meinem Thema des functions.php eine Art Filter hinzuzufügen, dies zu erreichen Der schlaue Weg, ohne eine Kerndatei zu ändern, ich weiß einfach nicht wie. Jede Führung wäre großartig.

EDIT: Hier ist die gesamte, nicht modifizierte Funktion von allgemeinen template.php:

function get_archives_link($url, $text, $format = 'html', $before = '', $after = '') { 
$text = wptexturize($text); 
$title_text = esc_attr($text); 
$url = esc_url($url); 

if ('link' == $format) 
    $link_html = "\t<link rel='archives' title='$title_text' href='$url' />\n"; 
elseif ('option' == $format) 
    $link_html = "\t<option value='$url'>$before $text $after</option>\n"; 
elseif ('html' == $format) 
    $link_html = "\t<li>$before<a href='$url' title='$title_text'>$text</a>$after</li>\n"; 
else // custom 
    $link_html = "\t$before<a href='$url' title='$title_text'>$text</a>$after\n"; 

$link_html = apply_filters('get_archives_link', $link_html); 

return $link_html; 

}

Antwort

1

So habe ich herausgefunden, wie dies zu tun, dank this page.

einfach werfen diese in functions.php:

// Filter to add nofollow attribute 
function nofollow_archives($link_html) { 
return str_replace('<a href=', '<a rel="nofollow" href=', $link_html); 
} 

Dann die neue Funktion aufrufen, wo immer Sie möchten:

<?php add_filter('get_archives_link', 'nofollow_archives'); ?> 
<?php wp_get_archives('type=monthly'); ?> 

Das Beispiel offensichtlich, wie zeigt ein nofollow rel Tag hinzuzufügen, aber Sie kann es leicht ändern, um eine Verbindungsklasse oder irgendetwas anderes hinzuzufügen.

0

wie wäre es so etwas?

function new_get_archives_link ($link_html) { 
    if ('html' == $format) { 
     $link_html = "\t<li>$before<a class='hello' href='$url' title='$title_text'>$text</a>$after</li>\n"; 
     } 
     return $link_html; 
    } 
add_filter("get_archives_link", "new_get_archives_link"); 

kopieren Sie dies in Ihre functions.php und Sie sollten Core-Dateien nicht bearbeiten müssen.

nicht getestet ..

+0

Hallo Marty, danke für die Antwort. Das sieht so aus, als ob es funktionieren sollte, aber leider nicht. – rocky

Verwandte Themen