将链接列表类别包含为css类


inclue link list category as css class

我想在wordpress链接列表中呈现一些额外的css类,特别是我想将链接类别呈现为css类,例如:

link       : http://www.foobar.com/
gategories : friends, colleagues
name       : Foo Bar

Currentyly渲染为:

<a href="http://www.foobar.com/" target="_blank">Foo Bar</a>

但我希望它呈现为:

<a href="http://www.foobar.com/" target="_blank" class="friends colleagues">Foo Bar</a>

我知道你使用以下功能来构建链接列表,但我不知道如何修改它来做我需要的事情:

function wp_list_bookmarks($args = '') {
    $defaults = array(
        'orderby' => 'name', 'order' => 'ASC',
        'limit' => -1, 'category' => '', 'exclude_category' => '',
        'category_name' => '', 'hide_invisible' => 1,
        'show_updated' => 0, 'echo' => 1,
        'categorize' => 1, 'title_li' => __('Bookmarks'),
        'title_before' => '<h2>', 'title_after' => '</h2>',
        'category_orderby' => 'name', 'category_order' => 'ASC',
        'class' => 'linkcat', 'category_before' => '<li id="%id" class="%class">',
        'category_after' => '</li>'
    );
    $r = wp_parse_args( $args, $defaults );
    extract( $r, EXTR_SKIP );
    $output = '';
    if(1) {
        //output one single list using title_li for the title
        $bookmarks = get_bookmarks($r);
        if ( !empty($bookmarks) ) {
            if ( !empty( $title_li ) ){
                $output .= str_replace(array('%id', '%class'), array("linkcat-$category", $class), $category_before);
                $output .= "$title_before$title_li$title_after'n't<ul class='"xoxo blogroll $category'">'n";
                $output .= _walk_bookmarks($bookmarks, $r);
                $output .= "'n't</ul>'n$category_after'n";
            } else {
                $output .= _walk_bookmarks($bookmarks, $r);
            }
        }
    }
    $output = apply_filters( 'wp_list_bookmarks', $output );
    if ( !$echo )
        return $output;
    echo $output;
}
?>

谢谢!

首先,您不应该修改Wordpress Core函数。然而,就书签而言,我并不是真的责怪你想要。它们有点痛苦。

我会使用get_bookmarks()从头开始构建它。下面是一个工作示例:

foreach(get_bookmarks() as $bm)
{
    $terms = get_the_terms($bm->link_id, 'link_category');
    $classes = array('wp_link');
    if($terms)
    foreach($terms as $term)
        $classes[] = $term->slug;
    echo '<a class="'.implode(' ', $classes).'" href="'.$bm->link_url.'"'.($bm->link_target ? 'target="'.$bm->link_target.'"' : '').'>'.$bm->link_name.'</a><br/>';
}

只需将其放在模板中要生成书签的任何位置即可。或者,您可以将其封装在自定义函数调用中,然后从模板中调用该函数。