A WordPress-centric search engine for devs and theme authors



wp_list_bookmarks ›

Since2.1.0
Deprecatedn/a
wp_list_bookmarks ( $args = '' )
Parameters:
  • (string|array) $args { Optional. String or array of arguments to list bookmarks. @type string $orderby How to order the links by. Accepts post fields. Default 'name'. @type string $order Whether to order bookmarks in ascending or descending order. Accepts 'ASC' (ascending) or 'DESC' (descending). Default 'ASC'. @type int $limit Amount of bookmarks to display. Accepts 1+ or -1 for all. Default -1. @type string $category Comma-separated list of category ids to include links from. Default empty. @type string $category_name Category to retrieve links for by name. Default empty. @type int|bool $hide_invisible Whether to show or hide links marked as 'invisible'. Accepts 1|true or 0|false. Default 1|true. @type int|bool $show_updated Whether to display the time the bookmark was last updated. Accepts 1|true or 0|false. Default 0|false. @type int|bool $echo Whether to echo or return the formatted bookmarks. Accepts 1|true (echo) or 0|false (return). Default 1|true. @type int|bool $categorize 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. @type int|bool $show_description Whether to show the bookmark descriptions. Accepts 1|true or 0|false. Default 0|false. @type string $title_li What to show before the links appear. Default 'Bookmarks'. @type string $title_before The HTML or text to prepend to the $title_li string. Default '<h2>'. @type string $title_after The HTML or text to append to the $title_li string. Default '</h2>'. @type string $class The CSS class to use for the $title_li. Default 'linkcat'. @type string $category_before 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">'. @type string $category_after The HTML or text to append to $title_after if $categorize is true. Default '</li>'. @type string $category_orderby How to order the bookmark category based on term scheme if $categorize is true. Default 'name'. @type string $category_order Whether to order categories in ascending or descending order if $categorize is true. Accepts 'ASC' (ascending) or 'DESC' (descending). Default 'ASC'. }
    Required: No
    Default: (empty)
See:
Returns:
  • (void|string) Void if 'echo' argument is true, HTML list of bookmarks if 'echo' is false.
Defined at:
Codex:

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.


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( join( ' ', $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;
	}
}