wp_list_bookmarks()WP 2.1.0

Retrieve or echo all of the bookmarks.

List of default arguments are as follows:

These options define how the Category name will appear before the category links are displayed, if 'categorize' is 1. If 'categorize' is 0, then it will display for only the 'title_li' string and only if 'title_li' is not empty.

Hooks from the function

Return

null|String. Void if 'echo' argument is true, HTML list of bookmarks if 'echo' is false.

Usage

wp_list_bookmarks( $args );
$args(string|array)

String or array of arguments to list bookmarks.

Default: ''

  • orderby(string)
    How to order the links by. Accepts post fields.
    Default: 'name'

  • order(string)
    Whether to order bookmarks in ascending or descending order. Accepts 'ASC' (ascending) or 'DESC' (descending).
    Default: 'ASC'

  • limit(int)
    Amount of bookmarks to display. Accepts 1+ or -1 for all.
    Default: -1

  • category(string)
    Comma-separated list of category IDs to include links from.
    Default: ''

  • category_name(string)
    Category to retrieve links for by name.
    Default: ''

  • hide_invisible(int|true|false)
    Whether to show or hide links marked as 'invisible'. Accepts
    1|true or 0|false.
    Default: 1|true

  • show_updated(int|true|false)
    Whether to display the time the bookmark was last updated. Accepts 1|true or 0|false.
    Default: 0|false

  • echo(int|true|false)
    Whether to echo or return the formatted bookmarks. Accepts
    1|true (echo) or 0|false (return).
    Default: 1|true

  • categorize(int|true|false)
    Whether to show links listed by category or in a single column. Accepts 1|true (by category) or 0|false (one column).
    Default: 1|true

  • show_description(int|true|false)
    Whether to show the bookmark descriptions. Accepts 1|true or 0|false.
    Default: 0|false

  • title_li(string)
    What to show before the links appear.
    Default: 'Bookmarks'

  • title_before(string)
    The HTML or text to prepend to the $title_li string.
    Default: '<h2>'

  • title_after(string)
    The HTML or text to append to the $title_li string.
    Default: '</h2>'

  • class(string|array)
    The CSS class or an array of classes to use for the $title_li.
    Default: 'linkcat'

  • category_before(string)
    The HTML or text to prepend to $title_before if $categorize is true. String must contain '%id' and '%class' to inherit the category ID and the $class argument used for formatting in themes.
    Default: '<li id="%id" class="%class">'

  • category_after(string)
    The HTML or text to append to $title_after if $categorize is true.
    Default: '</li>'

  • category_orderby(string)
    How to order the bookmark category based on term scheme if $categorize is true.
    Default: 'name'

  • category_order(string)
    Whether to order categories in ascending or descending order if $categorize is true. Accepts 'ASC' (ascending) or 'DESC' (descending).
    Default: 'ASC'

Examples

0

#1 List of links of bookmarks

Show a list of links, the title of which will be "Links", the list items will be "wrapped" in the tag <li>, the title in the tag <h2>.

<?php wp_list_bookmarks( 'title_li=&category_before=&category_after=' ); ?>
0

#2 Removing the header from a list of links

Example of removing a header from a list. Useful when you need to set your own header.

<?php wp_list_bookmarks( 'title_li=&categorize=0' ); ?>
0

#3 Links from this category

Example of link output from link category 2 (category=2) wrapped in span tag (before=<span>&after=</span> ), using images for each link (show_images=1), description turned off (show_description=0) and sorted by link itself (orderby=url).

<?php wp_list_bookmarks( 'categorize=0&category=2&before=<span>&after=</span>&show_images=1&show_description=0&orderby=url' ); ?>
0

#4 Replacing the header with a picture

An example of how you can replace the header of the list with a picture.

wp_list_bookmarks( [
	'categorize'   => 0,
	'title_before' => '',
	'title_after'  => '',
	'title_li'     => '<img src="' . get_bloginfo( "stylesheet_directory" ) . '/images/blogroll.gif" alt="blogroll" />',
] );
0

#5 Shows Ratings and Timestamp

Displays all bookmarks in an ordered list with descriptions on a new line, does not use images for bookmarks, sorts by bookmark id, shows ratings and last-updated timestamp (Note that the last updated timestamp does not track local modifications. It tracks when whatever the link points to is updated via remote requests to pingomatic.)

<ol>
<?php wp_list_bookmarks( 
	'between=<br />&show_images=0&orderby=id&show_rating=1&show_updated=1'
); ?>
</ol>

Notes

Changelog

Since 2.1.0 Introduced.

wp_list_bookmarks() code WP 6.5.2

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>',
	);

	$parsed_args = wp_parse_args( $args, $defaults );

	$output = '';

	if ( ! is_array( $parsed_args['class'] ) ) {
		$parsed_args['class'] = explode( ' ', $parsed_args['class'] );
	}
	$parsed_args['class'] = array_map( 'sanitize_html_class', $parsed_args['class'] );
	$parsed_args['class'] = trim( implode( ' ', $parsed_args['class'] ) );

	if ( $parsed_args['categorize'] ) {
		$cats = get_terms(
			array(
				'taxonomy'     => 'link_category',
				'name__like'   => $parsed_args['category_name'],
				'include'      => $parsed_args['category'],
				'exclude'      => $parsed_args['exclude_category'],
				'orderby'      => $parsed_args['category_orderby'],
				'order'        => $parsed_args['category_order'],
				'hierarchical' => 0,
			)
		);
		if ( empty( $cats ) ) {
			$parsed_args['categorize'] = false;
		}
	}

	if ( $parsed_args['categorize'] ) {
		// Split the bookmarks into ul's for each category.
		foreach ( (array) $cats as $cat ) {
			$params    = array_merge( $parsed_args, array( 'category' => $cat->term_id ) );
			$bookmarks = get_bookmarks( $params );
			if ( empty( $bookmarks ) ) {
				continue;
			}
			$output .= str_replace(
				array( '%id', '%class' ),
				array( "linkcat-$cat->term_id", $parsed_args['class'] ),
				$parsed_args['category_before']
			);
			/**
			 * Filters the category name.
			 *
			 * @since 2.2.0
			 *
			 * @param string $cat_name The category name.
			 */
			$catname = apply_filters( 'link_category', $cat->name );

			$output .= $parsed_args['title_before'];
			$output .= $catname;
			$output .= $parsed_args['title_after'];
			$output .= "\n\t<ul class='xoxo blogroll'>\n";
			$output .= _walk_bookmarks( $bookmarks, $parsed_args );
			$output .= "\n\t</ul>\n";
			$output .= $parsed_args['category_after'] . "\n";
		}
	} else {
		// Output one single list using title_li for the title.
		$bookmarks = get_bookmarks( $parsed_args );

		if ( ! empty( $bookmarks ) ) {
			if ( ! empty( $parsed_args['title_li'] ) ) {
				$output .= str_replace(
					array( '%id', '%class' ),
					array( 'linkcat-' . $parsed_args['category'], $parsed_args['class'] ),
					$parsed_args['category_before']
				);
				$output .= $parsed_args['title_before'];
				$output .= $parsed_args['title_li'];
				$output .= $parsed_args['title_after'];
				$output .= "\n\t<ul class='xoxo blogroll'>\n";
				$output .= _walk_bookmarks( $bookmarks, $parsed_args );
				$output .= "\n\t</ul>\n";
				$output .= $parsed_args['category_after'] . "\n";
			} else {
				$output .= _walk_bookmarks( $bookmarks, $parsed_args );
			}
		}
	}

	/**
	 * Filters the bookmarks list before it is echoed or returned.
	 *
	 * @since 2.5.0
	 *
	 * @param string $html The HTML list of bookmarks.
	 */
	$html = apply_filters( 'wp_list_bookmarks', $output );

	if ( $parsed_args['echo'] ) {
		echo $html;
	} else {
		return $html;
	}
}