W3cubDocs

/WordPress

wp_list_bookmarks( string|array $args = ): void|string

Retrieves or echoes all of the bookmarks.

Description

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.

See also

Parameters

$argsstring|arrayoptional
String or array of arguments to list bookmarks.
  • 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.
  • category_name string
    Category to retrieve links for by name.
  • hide_invisible int|bool
    Whether to show or hide links marked as 'invisible'. Accepts 1|true or 0|false. Default 1|true.
  • show_updated int|bool
    Whether to display the time the bookmark was last updated.
    Accepts 1|true or 0|false. Default 0|false.
  • echo int|bool
    Whether to echo or return the formatted bookmarks. Accepts 1|true (echo) or 0|false (return). Default 1|true.
  • categorize int|bool
    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|bool
    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'.

Default:''

Return

void|string Void if 'echo' argument is true, HTML list of bookmarks if 'echo' is false.

Source

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;
	}
}

Hooks

apply_filters( ‘link_category’, string $cat_name )

Filters the category name.

apply_filters( ‘wp_list_bookmarks’, string $html )

Filters the bookmarks list before it is echoed or returned.

Changelog

Version Description
2.1.0 Introduced.

© 2003–2024 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/wp_list_bookmarks