Add filter to blogroll widget

Filter the arguments for the blogroll:

add_filter( 'widget_links_args', 'wpse_76521_filter_blogroll' );

function wpse_76521_filter_blogroll( $args )
{
    $li_start = isset ( $args['before'] ) ? $args['before'] : '<li>';
    $args['before'] = $li_start . '<i class="icon-ok"></i>';
    return $args;
}

Explanation

  1. The blogroll is created by the widget class WP_Widget_Links.
  2. This class calls wp_list_bookmarks() with some prepared widget arguments which we can filter with widget_links_args.
  3. wp_list_bookmarks() calls _walk_bookmarks() and passes the original arguments through.
  4. _walk_bookmarks() accepts an argument 'before' that defaults to <li>.
  5. So we add that argument to widget_links_args in (2.) and let it fall through until it arrives in _walk_bookmarks() (4.).

Alternative

You could use CSS instead:

.widget_links li
{
    padding-left: 20px;
    background:   url(path/to/icon.png) 0% 50% no-repeat transparent;
}

Leave a Comment