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; if not tagged, use .untagged if ( get_the_tags() == null ) { $c[] = 'untagged'; } else { 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 == 'comment' ) { $c[] = "c$sandbox_comment_alt"; } else { $c[] = "t$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 )); } // Produces an avatar image with the hCard-compliant photo class function sandbox_commenter_link() { if (function_exists('get_avatar')) { $commenter = get_comment_author_link(); if ( ereg( ']* class=[^>]+>', $commenter ) ) { $commenter = ereg_replace( '(]* class=[\'"]?)', '\\1url ' , $commenter ); } else { $commenter = ereg_replace( '(' . $commenter . ''; } else { //alternate gravatar code for < 2.5 $email = get_comment_author_email(); $grav_url = "http://www.gravatar.com/avatar.php?gravatar_id=" . md5($email) ."&size=32"; $commenter = get_comment_author_link(); if ( ereg( ']* class=[^>]+>', $commenter ) ) { $commenter = ereg_replace( '(]* class=[\'"]?)', '\\1url ' , $commenter ); } else { $commenter = ereg_replace( '(" ); echo "
".$avatar . '
' . $commenter . ''; } } // Sandbox gallery short code; styles used in style.css file function sandbox_gallery($attr) { global $post; // Sets our defaults for the Sandbox gallery short code extract( shortcode_atts( array( 'orderby' => 'menu_order ASC, ID ASC', 'id' => $post->ID, 'itemtag' => 'dl', 'icontag' => 'dt', 'captiontag' => 'dd', 'columns' => 3, 'size' => 'thumbnail', ), $attr ) ); $id = intval($id); $orderby = addslashes($orderby); $attachments = get_children("post_parent=$id&post_type=attachment&post_mime_type=image&orderby=\"{$orderby}\""); // If we have nothing, show nothing if ( empty($attachments) ) return ''; // Shows simple image links when viewed in a feed if ( is_feed() ) { $output = "\n"; foreach ( $attachments as $id => $attachment ) $output .= wp_get_attachment_link( $id, $size, true ) . "\n"; return $output; } $listtag = tag_escape($listtag); $itemtag = tag_escape($itemtag); $captiontag = tag_escape($captiontag); $columns = intval($columns); // Divides number of columns for even widths $itemwidth = $columns > 0 ? floor(100/$columns) : 100; // Let's begin our gallery $output = apply_filters( "gallery_style", "\n\n"; // And spits out the chewed up code return $output; } // Widget: Search; to match the Sandbox style and replace Widget plugin default function widget_sandbox_search($args) { extract($args); $options = get_option('widget_sandbox_search'); $title = empty($options['title']) ? __( 'Search', 'sandbox' ) : $options['title']; $button = empty($options['button']) ? __( 'Find', 'sandbox' ) : $options['button']; ?>

"\n\t\t\t" . '
  • ', 'after_widget' => "\n\t\t\t
  • \n", 'before_title' => "\n\t\t\t\t". '

    ', '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; first, Sandbox search widget $widget_ops = array( 'classname' => 'widget_search', 'description' => __( "A search form for your blog (Sandbox)", "sandbox" ) ); wp_register_sidebar_widget( 'search', __( 'Search', 'sandbox' ), 'widget_sandbox_search', $widget_ops ); unregister_widget_control('search'); wp_register_widget_control( 'search', __( 'Search', 'sandbox' ), 'widget_sandbox_search_control' ); // Sandbox Meta widget $widget_ops = array( 'classname' => 'widget_meta', 'description' => __( "Log in/out and administration links (Sandbox)", "sandbox" ) ); wp_register_sidebar_widget( 'meta', __( 'Meta', 'sandbox' ), 'widget_sandbox_meta', $widget_ops ); unregister_widget_control('meta'); wp_register_widget_control( 'meta', __('Meta'), 'wp_widget_meta_control' ); //Sandbox RSS Links widget $widget_ops = array( 'classname' => 'widget_rss_links', 'description' => __( "RSS links for both posts and comments (Sandbox)", "sandbox" ) ); wp_register_sidebar_widget( 'rss_links', __( 'RSS Links', 'sandbox' ), 'widget_sandbox_rsslinks', $widget_ops ); wp_register_widget_control( 'rss_links', __( 'RSS Links', 'sandbox' ), 'widget_sandbox_rsslinks_control' ); } // 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' ); // Add Sandbox function to gallery short code //add_shortcode( 'gallery', 'sandbox_gallery' ); // 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. ?>