';
$menu = wp_list_pages('title_li=&sort_column=menu_order&echo=0'); // Params for the page list in header.php
echo str_replace(array("\r", "\n", "\t"), '', $menu);
echo '
';
}
// Post Attachment image function. Image URL for CSS Background.
function the_post_image_url($size=large) {
if ( $images = get_children(array(
'post_parent' => get_the_ID(),
'post_type' => 'attachment',
'numberposts' => 1,
'post_mime_type' => 'image',)))
{
foreach( $images as $image ) {
$attachmenturl=wp_get_attachment_url($image->ID);
$attachmentimage=wp_get_attachment_image( $image->ID, $size );
echo ''.$attachmenturl.'';
}
} else {
echo '' . get_bloginfo ( 'stylesheet_directory' );
echo '/img/no-attachment.gif';
}
}
// Post Attachment image function. Direct link to file.
function the_post_image($size=thumbnail) {
if ( $images = get_children(array(
'post_parent' => get_the_ID(),
'post_type' => 'attachment',
'numberposts' => 1,
'post_mime_type' => 'image',)))
{
foreach( $images as $image ) {
$attachmenturl=wp_get_attachment_url($image->ID);
$attachmentimage=wp_get_attachment_image( $image->ID, $size );
echo ''.$attachmentimage.'';
}
} else {
echo '';
}
}
// Post Attachment image function for Attachment Pages.
function the_attachment_image($size=large) {
$attachmenturl=wp_get_attachment_url($image->ID);
$attachmentimage=wp_get_attachment_image( $image->ID, $size );
echo ''.$attachmentimage.'';
}
// Removes 'p' tags from excerpts.
remove_filter('the_excerpt', 'wpautop');
// Fixes Next and Previous ATTACHMENT links
function ps_previous_image_link( $f ) {
$i = ps_adjacent_image_link( true );
if ( $i ) {
echo str_replace("%link", $i, $f);
}
}
function ps_next_image_link( $f ) {
$i = ps_adjacent_image_link( false );
if ( $i ) {
echo str_replace("%link", $i, $f);
}
}
function ps_adjacent_image_link($prev = true) {
global $post;
$post = get_post($post);
$attachments = array_values(get_children(Array('post_parent' => $post->post_parent,
'post_type' => 'attachment',
'post_mime_type' => 'image',
'orderby' => 'menu_order ASC, ID ASC')));
foreach ( $attachments as $k => $attachment ) {
if ( $attachment->ID == $post->ID ) {
break;
}
}
$k = $prev ? $k - 1 : $k + 1;
if ( isset($attachments[$k]) ) {
return wp_get_attachment_link($attachments[$k]->ID, 'thumbnail', true);
}
else {
return false;
}
}
// Overides default FULL size images size
$GLOBALS['content_width'] = 800;
// Generates semantic classes for BODY element
function sandbox_body_class( $print = true ) {
global $wp_query, $current_user;
// It's surely a WordPress blog, right?
$c = array('wordpress');
// Applies the time- and date-based classes (below) to BODY element
sandbox_date_classes(time(), $c);
// Generic semantic classes for what type of content is displayed
is_home() ? $c[] = 'home' : null;
is_archive() ? $c[] = 'archive' : null;
is_date() ? $c[] = 'date' : null;
is_search() ? $c[] = 'search' : null;
is_paged() ? $c[] = 'paged' : null;
is_attachment() ? $c[] = 'attachment' : null;
is_404() ? $c[] = 'four04' : null; // CSS does not allow a digit as first character
// Special classes for BODY element when a single post
if ( is_single() ) {
$postID = $wp_query->post->ID;
the_post();
// Adds 'single' class and class with the post ID
$c[] = 'single postid-' . $postID;
// Adds classes for the month, day, and hour when the post was published
if ( isset($wp_query->post->post_date) )
sandbox_date_classes(mysql2date('U', $wp_query->post->post_date), $c, 's-');
// Adds category classes for each category on single posts
if ( $cats = get_the_category() )
foreach ( $cats as $cat )
$c[] = 's-category-' . $cat->slug;
// Adds tag classes for each tags on single posts
if ( $tags = get_the_tags() )
foreach ( $tags as $tag )
$c[] = 's-tag-' . $tag->slug;
// Adds MIME-specific classes for attachments
if ( is_attachment() ) {
$the_mime = get_post_mime_type();
$boring_stuff = array("application/", "image/", "text/", "audio/", "video/", "music/");
$c[] = 'attachment-' . str_replace($boring_stuff, "", "$the_mime");
}
// Adds author class for the post author
$c[] = 's-author-' . sanitize_title_with_dashes(strtolower(get_the_author_login()));
rewind_posts();
}
// Author name classes for BODY on author archives
else if ( is_author() ) {
$author = $wp_query->get_queried_object();
$c[] = 'author';
$c[] = 'author-' . $author->user_nicename;
}
// Category name classes for BODY on category archvies
else if ( is_category() ) {
$cat = $wp_query->get_queried_object();
$c[] = 'category';
$c[] = 'category-' . $cat->slug;
}
// Tag name classes for BODY on tag archives
else if ( is_tag() ) {
$tags = $wp_query->get_queried_object();
$c[] = 'tag';
$c[] = 'tag-' . $tags->slug; // Does not work; however I try to return the tag I get a false. Grrr.
}
// Page author for BODY on 'pages'
else if ( is_page() ) {
$pageID = $wp_query->post->ID;
the_post();
$c[] = 'page pageid-' . $pageID;
$c[] = 'page-author-' . sanitize_title_with_dashes(strtolower(get_the_author('login')));
rewind_posts();
}
// For when a visitor is logged in while browsing
if ( $current_user->ID )
$c[] = 'loggedin';
// Paged classes; for 'page X' classes of index, single, etc.
if ( ( ( $page = $wp_query->get("paged") ) || ( $page = $wp_query->get("page") ) ) && $page > 1 ) {
$c[] = 'paged-'.$page.'';
if ( is_single() ) {
$c[] = 'single-paged-'.$page.'';
} else if ( is_page() ) {
$c[] = 'page-paged-'.$page.'';
} else if ( is_category() ) {
$c[] = 'category-paged-'.$page.'';
} else if ( is_tag() ) {
$c[] = 'tag-paged-'.$page.'';
} else if ( is_date() ) {
$c[] = 'date-paged-'.$page.'';
} else if ( is_author() ) {
$c[] = 'author-paged-'.$page.'';
} else if ( is_search() ) {
$c[] = 'search-paged-'.$page.'';
}
}
// Separates classes with a single space, collates classes for BODY
$c = join(' ', apply_filters('body_class', $c));
// And tada!
return $print ? print($c) : $c;
}
// Generates semantic classes for each post DIV element
function sandbox_post_class( $print = true ) {
global $post, $sandbox_post_alt;
// hentry for hAtom compliace, gets 'alt' for every other post DIV, describes the post type and p[n]
$c = array('hentry', "p$sandbox_post_alt", $post->post_type, $post->post_status);
// Author for the post queried
$c[] = 'author-' . sanitize_title_with_dashes(strtolower(get_the_author('login')));
// Category for the post queried
foreach ( (array) get_the_category() as $cat )
$c[] = 'category-' . $cat->slug;
// Tags for the post queried
foreach ( (array) get_the_tags() as $tag )
$c[] = 'tag-' . $tag->slug;
// For password-protected posts
if ( $post->post_password )
$c[] = 'protected';
// Applies the time- and date-based classes (below) to post DIV
sandbox_date_classes(mysql2date('U', $post->post_date), $c);
// If it's the other to the every, then add 'alt' class
if ( ++$sandbox_post_alt % 2 )
$c[] = 'alt';
// Separates classes with a single space, collates classes for post DIV
$c = join(' ', apply_filters('post_class', $c));
// And tada!
return $print ? print($c) : $c;
}
// Define the num val for 'alt' classes (in post DIV and comment LI)
$sandbox_post_alt = 1;
// Generates semantic classes for each comment LI element
function sandbox_comment_class( $print = true ) {
global $comment, $post, $sandbox_comment_alt;
// Collects the comment type (comment, trackback),
$c = array($comment->comment_type);
// Counts trackbacks (t[n]) or comments (c[n])
if ($comment->comment_type == 'trackback') {
$c[] = "t$sandbox_comment_alt";
} else {
$c[] = "c$sandbox_comment_alt";
}
// If the comment author has an id (registered), then print the log in name
if ( $comment->user_id > 0 ) {
$user = get_userdata($comment->user_id);
// For all registered users, 'byuser'; to specificy the registered user, 'commentauthor+[log in name]'
$c[] = "byuser comment-author-" . sanitize_title_with_dashes(strtolower($user->user_login));
// For comment authors who are the author of the post
if ( $comment->user_id === $post->post_author )
$c[] = 'bypostauthor';
}
// If it's the other to the every, then add 'alt' class; collects time- and date-based classes
sandbox_date_classes(mysql2date('U', $comment->comment_date), $c, 'c-');
if ( ++$sandbox_comment_alt % 2 )
$c[] = 'alt';
// Separates classes with a single space, collates classes for comment LI
$c = join(' ', apply_filters('comment_class', $c));
// Tada again!
return $print ? print($c) : $c;
}
// Generates time- and date-based classes for BODY, post DIVs, and comment LIs; relative to GMT (UTC)
function sandbox_date_classes($t, &$c, $p = '') {
$t = $t + (get_option('gmt_offset') * 3600);
$c[] = $p . 'y' . gmdate('Y', $t); // Year
$c[] = $p . 'm' . gmdate('m', $t); // Month
$c[] = $p . 'd' . gmdate('d', $t); // Day
$c[] = $p . 'h' . gmdate('H', $t); // Hour
}
// For category lists on category archives: Returns other categories except the current one (redundant)
function sandbox_cats_meow($glue) {
$current_cat = single_cat_title('', false);
$separator = "\n";
$cats = explode($separator, get_the_category_list($separator));
foreach ( $cats as $i => $str ) {
if ( strstr($str, ">$current_cat<") ) {
unset($cats[$i]);
break;
}
}
if ( empty($cats) )
return false;
return trim(join($glue, $cats));
}
// For tag lists on tag archives: Returns other tags except the current one (redundant)
function sandbox_tag_ur_it($glue) {
$current_tag = single_tag_title('', '', false);
$separator = "\n";
$tags = explode($separator, get_the_tag_list("", "$separator", ""));
foreach ( $tags as $i => $str ) {
if ( strstr($str, ">$current_tag<") ) {
unset($tags[$i]);
break;
}
}
if ( empty($tags) )
return false;
return trim(join($glue, $tags));
}
// Nice Tag Cloud
function widget_nice_tagcloud($args) {
extract($args);
?>
"
",
'after_title' => "
\n",
);
// Table for how many? Two? This way, please.
register_sidebars(2, $p);
// Finished intializing Widgets plugin, now let's load the Sandbox default widgets
register_sidebar_widget(__('Search', 'sandbox'), 'widget_sandbox_search', null, 'search');
unregister_widget_control('search');
register_sidebar_widget(__('Meta', 'sandbox'), 'widget_sandbox_meta', null, 'meta');
unregister_widget_control('meta');
register_sidebar_widget(array(__('RSS Links', 'sandbox'), 'widgets'), 'widget_sandbox_rsslinks');
register_widget_control(array(__('RSS Links', 'sandbox'), 'widgets'), 'widget_sandbox_rsslinks_control', 300, 90);
}
// Translate, if applicable
load_theme_textdomain('sandbox');
// Runs our code at the end to check that everything needed has loaded
add_action('init', 'sandbox_widgets_init');
// Adds filters so that things run smoothly
add_filter('archive_meta', 'wptexturize');
add_filter('archive_meta', 'convert_smilies');
add_filter('archive_meta', 'convert_chars');
add_filter('archive_meta', 'wpautop');
// Remember: the Sandbox is for play.
?>
', ']]>', $text);
$text = strip_tags($text);
$words = explode(' ', $text, $excerpt_length + 1);
if (count($words) > $excerpt_length) {
array_pop($words);
array_push($words, '...');
$text = implode(' ', $words);
}
return apply_filters('the_excerpt', $text);
}
function tl_post_excerpt($post) {
$excerpt = ($post->post_excerpt == '') ? (tl_excerpt($post->post_content))
: (apply_filters('the_excerpt', $post->post_excerpt));
return $excerpt;
}
function previous_post_excerpt($in_same_cat = false, $excluded_categories = '') {
if ( is_attachment() )
$post = &get_post($GLOBALS['post']->post_parent);
else
$post = get_previous_post($in_same_cat, $excluded_categories);
if ( !$post )
return;
$post = &get_post($post->ID);
echo tl_post_excerpt($post);
}
function next_post_excerpt($in_same_cat = false, $excluded_categories = '') {
$post = get_next_post($in_same_cat, $excluded_categories);
if ( !$post )
return;
$post = &get_post($post->ID);
echo tl_post_excerpt($post);
}
?>