The formatted output of a list of bookmarks.
Description
The $bookmarks array must contain bookmark objects and will be iterated over to retrieve the bookmark to be used in the output.
The output is formatted as HTML with no way to change that format. However, what is between, before, and after can be changed. The link itself will be HTML.
This function is used internally by wp_list_bookmarks() and should not be used by themes.
Parameters
$bookmarksarrayrequired- List of bookmarks to traverse.
$argsstring|arrayoptional- Bookmarks arguments.
show_updatedint|boolWhether to show the time the bookmark was last updated.
Accepts1|trueor0|false. Default0|false.show_descriptionint|boolWhether to show the bookmark description. Accepts1|true, Accepts1|trueor0|false. Default0|false.show_imagesint|boolWhether to show the link image if available. Accepts1|trueor0|false. Default1|true.show_nameint|boolWhether to show link name if available. Accepts1|trueor0|false. Default0|false.beforestringThe HTML or text to prepend to each bookmark. Default<li>.afterstringThe HTML or text to append to each bookmark. Default</li>.link_beforestringThe HTML or text to prepend to each bookmark inside the anchor tags.link_afterstringThe HTML or text to append to each bookmark inside the anchor tags.betweenstringThe string for use in between the link, description, and image.
Default "n".show_ratingint|boolWhether to show the link rating. Accepts1|trueor0|false.
Default0|false.
Default:
''
Source
function _walk_bookmarks( $bookmarks, $args = '' ) {
$defaults = array(
'show_updated' => 0,
'show_description' => 0,
'show_images' => 1,
'show_name' => 0,
'before' => '<li>',
'after' => '</li>',
'between' => "\n",
'show_rating' => 0,
'link_before' => '',
'link_after' => '',
);
$parsed_args = wp_parse_args( $args, $defaults );
$output = ''; // Blank string to start with.
foreach ( (array) $bookmarks as $bookmark ) {
if ( ! isset( $bookmark->recently_updated ) ) {
$bookmark->recently_updated = false;
}
$output .= $parsed_args['before'];
if ( $parsed_args['show_updated'] && $bookmark->recently_updated ) {
$output .= '<em>';
}
$the_link = '#';
if ( ! empty( $bookmark->link_url ) ) {
$the_link = esc_url( $bookmark->link_url );
}
$desc = esc_attr( sanitize_bookmark_field( 'link_description', $bookmark->link_description, $bookmark->link_id, 'display' ) );
$name = esc_attr( sanitize_bookmark_field( 'link_name', $bookmark->link_name, $bookmark->link_id, 'display' ) );
$title = $desc;
if ( $parsed_args['show_updated'] ) {
if ( ! str_starts_with( $bookmark->link_updated_f, '00' ) ) {
$title .= ' (';
$title .= sprintf(
/* translators: %s: Date and time of last update. */
__( 'Last updated: %s' ),
gmdate(
get_option( 'links_updated_date_format' ),
$bookmark->link_updated_f + (int) ( (float) get_option( 'gmt_offset' ) * HOUR_IN_SECONDS )
)
);
$title .= ')';
}
}
$alt = ' alt="' . $name . ( $parsed_args['show_description'] ? ' ' . $title : '' ) . '"';
if ( '' !== $title ) {
$title = ' title="' . $title . '"';
}
$rel = $bookmark->link_rel;
$target = $bookmark->link_target;
if ( '' !== $target ) {
$target = ' target="' . $target . '"';
}
if ( '' !== $rel ) {
$rel = ' rel="' . esc_attr( $rel ) . '"';
}
$output .= '<a href="' . $the_link . '"' . $rel . $title . $target . '>';
$output .= $parsed_args['link_before'];
if ( '' !== $bookmark->link_image && $parsed_args['show_images'] ) {
if ( str_starts_with( $bookmark->link_image, 'http' ) ) {
$output .= '<img src="' . $bookmark->link_image . '"' . $alt . $title . ' />';
} else { // If it's a relative path.
$output .= '<img src="' . get_option( 'siteurl' ) . $bookmark->link_image . '"' . $alt . $title . ' />';
}
if ( $parsed_args['show_name'] ) {
$output .= " $name";
}
} else {
$output .= $name;
}
$output .= $parsed_args['link_after'];
$output .= '</a>';
if ( $parsed_args['show_updated'] && $bookmark->recently_updated ) {
$output .= '</em>';
}
if ( $parsed_args['show_description'] && '' !== $desc ) {
$output .= $parsed_args['between'] . $desc;
}
if ( $parsed_args['show_rating'] ) {
$output .= $parsed_args['between'] . sanitize_bookmark_field(
'link_rating',
$bookmark->link_rating,
$bookmark->link_id,
'display'
);
}
$output .= $parsed_args['after'] . "\n";
} // End while.
return $output;
}
Changelog
| Version | Description |
|---|---|
| 2.1.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.