1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
|
<?php
/**
* Bookmark Template Functions for usage in Themes
*
* @package WordPress
* @subpackage Template
*/
/**
* _walk_bookmarks() - The formatted output of a list of bookmarks
*
* 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.
*
* The defaults for overwriting are:
* 'show_updated' - Default is 0 (integer). Will show the time of when the bookmark was last updated.
* 'show_description' - Default is 0 (integer). Whether to show the description of the bookmark.
* 'show_images' - Default is 1 (integer). Whether to show link image if available.
* 'before' - Default is '<li>' (string). The html or text to prepend to each bookmarks.
* 'after' - Default is '</li>' (string). The html or text to append to each bookmarks.
* 'between' - Default is '\n' (string). The string for use in between the link, description, and image.
* 'show_rating' - Default is 0 (integer). Whether to show the link rating.
*
* @since 2.1
* @access private
* @usedby wp_list_bookmarks()
*
* @param array $bookmarks List of bookmarks to traverse
* @param string|array $args Optional. Overwrite the defaults.
* @return string Formatted output in HTML
*/
function _walk_bookmarks($bookmarks, $args = '' ) {
$defaults = array(
'show_updated' => 0, 'show_description' => 0,
'show_images' => 1, 'before' => '<li>',
'after' => '</li>', 'between' => "\n",
'show_rating' => 0
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
$output = ''; // Blank string to start with.
foreach ( (array) $bookmarks as $bookmark ) {
if ( !isset($bookmark->recently_updated) )
$bookmark->recently_updated = false;
$output .= $before;
if ( $show_updated && $bookmark->recently_updated )
$output .= get_option('links_recently_updated_prepend');
$the_link = '#';
if ( !empty($bookmark->link_url) )
$the_link = clean_url($bookmark->link_url);
$rel = $bookmark->link_rel;
if ( '' != $rel )
$rel = ' rel="' . $rel . '"';
$desc = attribute_escape(sanitize_bookmark_field('link_description', $bookmark->link_description, $bookmark->link_id, 'display'));
$name = attribute_escape(sanitize_bookmark_field('link_name', $bookmark->link_name, $bookmark->link_id, 'display'));
$title = $desc;
if ( $show_updated )
if ( '00' != substr($bookmark->link_updated_f, 0, 2) ) {
$title .= ' ';
$title .= sprintf(__('Last updated: %s'), date(get_option('links_updated_date_format'), $bookmark->link_updated_f + (get_option('gmt_offset') * 3600)));
$title .= ')';
}
if ( '' != $title )
$title = ' title="' . $title . '"';
$alt = ' alt="' . $name . '"';
$target = $bookmark->link_target;
if ( '' != $target )
$target = ' target="' . $target . '"';
$output .= '<a href="' . $the_link . '"' . $rel . $title . $target. '>';
if ( $bookmark->link_image != null && $show_images ) {
if ( strpos($bookmark->link_image, 'http') !== false )
$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 />";
} else {
$output .= $name;
}
$output .= '</a>';
if ( $show_updated && $bookmark->recently_updated )
$output .= get_option('links_recently_updated_append');
if ( $show_description && '' != $desc )
$output .= $between . $desc;
if ($show_rating) {
$output .= $between . get_linkrating($bookmark);
}
$output .= "$after\n";
} // end while
return $output;
}
/**
* wp_list_bookmarks() - Retrieve or echo all of the bookmarks
*
* List of default arguments are as follows:
* 'orderby' - Default is 'name' (string). How to order the links by. String is based off of the bookmark scheme.
* 'order' - Default is 'ASC' (string). Either 'ASC' or 'DESC'. Orders in either ascending or descending order.
* 'limit' - Default is -1 (integer) or show all. The amount of bookmarks to display.
* 'category' - Default is empty string (string). Include the links in what category ID(s).
* 'category_name' - Default is empty string (string). Get links by category name.
* 'hide_invisible' - Default is 1 (integer). Whether to show (default) or hide links marked as 'invisible'.
* 'show_updated' - Default is 0 (integer). Will show the time of when the bookmark was last updated.
* 'echo' - Default is 1 (integer). Whether to echo (default) or return the formatted bookmarks.
* 'categorize' - Default is 1 (integer). Whether to show links listed by category (default) or show links in one column.
*
* 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.
* 'title_li' - Default is 'Bookmarks' (translatable string). What to show before the links appear.
* 'title_before' - Default is '<h2>' (string). The HTML or text to show before the 'title_li' string.
* 'title_after' - Default is '</h2>' (string). The HTML or text to show after the 'title_li' string.
* 'class' - Default is 'linkcat' (string). The CSS class to use for the 'title_li'.
*
* 'category_before' - Default is '<li id="%id" class="%class">'. String must contain '%id' and '%class' to get
* the id of the category and the 'class' argument. These are used for formatting in themes. Argument will be displayed
* before the 'title_before' argument.
* 'category_after' - Default is '</li>' (string). The HTML or text that will appear after the list of links.
*
* These are only used if 'categorize' is set to 1 or true.
* 'category_orderby' - Default is 'name'. How to order the bookmark category based on term scheme.
* 'category_order' - Default is 'ASC'. Set the order by either ASC (ascending) or DESC (descending).
*
* @see _walk_bookmarks() For other arguments that can be set in this function and passed to _walk_bookmarks().
* @see get_bookmarks() For other arguments that can be set in this function and passed to get_bookmarks().
*
* @since 2.1
* @uses _list_bookmarks() Used to iterate over all of the bookmarks and return the html
* @uses get_terms() Gets all of the categories that are for links.
*
* @param string|array $args Optional. Overwrite the defaults of the function
* @return string|null Will only return if echo option is set to not echo. Default is not return anything.
*/
function wp_list_bookmarks($args = '') {
$defaults = array(
'orderby' => 'name', 'order' => 'ASC',
'limit' => -1, '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>'
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
$output = '';
if ( $categorize ) {
//Split the bookmarks into ul's for each category
$cats = get_terms('link_category', "category_name=$category_name&include=$category&orderby=$category_orderby&order=$category_order&hierarchical=0");
foreach ( (array) $cats as $cat ) {
$params = array_merge($r, array('category'=>$cat->term_id));
$bookmarks = get_bookmarks($params);
if ( empty($bookmarks) )
continue;
$output .= str_replace(array('%id', '%class'), array("linkcat-$cat->term_id", $class), $category_before);
$catname = apply_filters( "link_category", $cat->name );
$output .= "$title_before$catname$title_after\n\t<ul>\n";
$output .= _walk_bookmarks($bookmarks, $r);
$output .= "\n\t</ul>\n$category_after\n";
}
} else {
//output one single list using title_li for the title
$bookmarks = get_bookmarks($r);
if ( !empty($bookmarks) ) {
if ( !empty( $title_li ) ){
$output .= str_replace(array('%id', '%class'), array("linkcat-$category", $class), $category_before);
$output .= "$title_before$title_li$title_after\n\t<ul>\n";
$output .= _walk_bookmarks($bookmarks, $r);
$output .= "\n\t</ul>\n$category_after\n";
} else {
$output .= _walk_bookmarks($bookmarks, $r);
}
}
}
$output = apply_filters( 'wp_list_bookmarks', $output );
if ( !$echo )
return $output;
echo $output;
}
?>
|