Code in header.php file in the Snazzy theme folder:
`<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="<?php bloginfo( 'html_type' ) ?>; charset=<?php bloginfo( 'charset' ) ?>" />
<title><?php wp_title( '|', true, 'right' ); bloginfo( 'name' ); ?></title>
<?php do_action( 'bp_head' ) ?>
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ) ?>" />
<?php
if ( is_singular() && bp_is_blog_page() && get_option( 'thread_comments' ) )
wp_enqueue_script( 'comment-reply' );
wp_head();
?>
</head>
<body <?php body_class() ?> id="bp-default">
<?php do_action( 'bp_before_header' ) ?>
<div id="header">
<div id="search-bar" role="search">
<div class="padder">
<h1 id="logo" role="banner"><a href="<?php echo home_url(); ?>" title="<?php _ex( 'Home', 'Home page banner link title', 'buddypress' ); ?>"><?php bp_site_name(); ?></a></h1>
<form action="<?php echo bp_search_form_action() ?>" method="post" id="search-form">
<label for="search-terms" class="accessibly-hidden"><?php _e( 'Search for:', 'buddypress' ); ?></label>
<input type="text" id="search-terms" name="search-terms" value="<?php echo isset( $_REQUEST['s'] ) ? esc_attr( $_REQUEST['s'] ) : ''; ?>" />
<?php echo bp_search_form_type_select() ?>
<input type="submit" name="search-submit" id="search-submit" value="<?php _e( 'Search', 'buddypress' ) ?>" />
<?php wp_nonce_field( 'bp_search_form' ) ?>
</form><!-- #search-form -->
<?php do_action( 'bp_search_login_bar' ) ?>
</div><!-- .padder -->
</div><!-- #search-bar -->
<div id="navigation" role="navigation">
<?php wp_nav_menu( array( 'container' => false, 'menu_id' => 'nav', 'theme_location' => 'primary', 'fallback_cb' => 'bp_dtheme_main_nav' ) ); ?>
</div>
<?php do_action( 'bp_header' ) ?>
</div><!-- #header -->
<?php do_action( 'bp_after_header' ) ?>
<?php do_action( 'bp_before_container' ) ?>
<div id="container">`
Code of functions.php in the Snazzy folder:
`<?php
if ( !function_exists( 'bp_dtheme_enqueue_styles' ) ) :
function bp_dtheme_enqueue_styles() {}
endif;
?>`
Code of header.php in the BuddyPress default folder:
`<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="<?php bloginfo( 'html_type' ) ?>; charset=<?php bloginfo( 'charset' ) ?>" />
<title><?php wp_title( '|', true, 'right' ); bloginfo( 'name' ); ?></title>
<?php do_action( 'bp_head' ) ?>
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ) ?>" />
<?php
if ( is_singular() && bp_is_blog_page() && get_option( 'thread_comments' ) )
wp_enqueue_script( 'comment-reply' );
wp_head();
?>
</head>
<body <?php body_class() ?> id="bp-default">
<?php do_action( 'bp_before_header' ) ?>
<div id="header">
<div id="search-bar" role="search">
<div class="padder">
<h1 id="logo" role="banner"><a href="<?php echo home_url(); ?>" title="<?php _ex( 'Home', 'Home page banner link title', 'buddypress' ); ?>"><?php bp_site_name(); ?></a></h1>
<form action="<?php echo bp_search_form_action() ?>" method="post" id="search-form">
<label for="search-terms" class="accessibly-hidden"><?php _e( 'Search for:', 'buddypress' ); ?></label>
<input type="text" id="search-terms" name="search-terms" value="<?php echo isset( $_REQUEST['s'] ) ? esc_attr( $_REQUEST['s'] ) : ''; ?>" />
<?php echo bp_search_form_type_select() ?>
<input type="submit" name="search-submit" id="search-submit" value="<?php _e( 'Search', 'buddypress' ) ?>" />
<?php wp_nonce_field( 'bp_search_form' ) ?>
</form><!-- #search-form -->
<?php do_action( 'bp_search_login_bar' ) ?>
</div><!-- .padder -->
</div><!-- #search-bar -->
<div id="navigation" role="navigation">
<?php wp_nav_menu( array( 'container' => false, 'menu_id' => 'nav', 'theme_location' => 'primary', 'fallback_cb' => 'bp_dtheme_main_nav' ) ); ?>
</div>
<?php do_action( 'bp_header' ) ?>
</div><!-- #header -->
<?php do_action( 'bp_after_header' ) ?>
<?php do_action( 'bp_before_container' ) ?>
<div id="container">
`
Code of functions.php in the BuddyPress default folder:
`<?php
/**
* BP-Default theme functions and definitions
*
* Sets up the theme and provides some helper functions. Some helper functions
* are used in the theme as custom template tags. Others are attached to action and
* filter hooks in WordPress and BuddyPress to change core functionality.
*
* The first function, bp_dtheme_setup(), sets up the theme by registering support
* for various features in WordPress, such as post thumbnails and navigation menus, and
* for BuddyPress, action buttons and javascript localisation.
*
* When using a child theme (see http://codex.wordpress.org/Theme_Development, http://codex.wordpress.org/Child_Themes
* and http://codex.buddypress.org/theme-development/building-a-buddypress-child-theme/), you can override
* certain functions (those wrapped in a function_exists() call) by defining them first in your
* child theme's functions.php file. The child theme's functions.php file is included before the
* parent theme's file, so the child theme functions would be used.
*
* Functions that are not pluggable (not wrapped in function_exists()) are instead attached
* to a filter or action hook. The hook can be removed by using remove_action() or
* remove_filter() and you can attach your own function to the hook.
*
* For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API.
*
* @package BuddyPress
* @subpackage BP-Default
* @since 1.2
*/
if ( !function_exists( 'bp_is_active' ) )
return;
// If BuddyPress is not activated, switch back to the default WP theme
if ( !defined( 'BP_VERSION' ) )
switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );
/**
* Set the content width based on the theme's design and stylesheet.
*
* Used to set the width of images and content. Should be equal to the width the theme
* is designed for, generally via the style.css stylesheet.
*/
if ( ! isset( $content_width ) )
$content_width = 591;
if ( !function_exists( 'bp_dtheme_setup' ) ) :
/**
* Sets up theme defaults and registers support for various WordPress and BuddyPress features.
*
* Note that this function is hooked into the after_setup_theme hook, which runs
* before the init hook. The init hook is too late for some features, such as indicating
* support post thumbnails.
*
* To override bp_dtheme_setup() in a child theme, add your own bp_dtheme_setup to your child theme's
* functions.php file.
*
* @global object $bp Global BuddyPress settings object
* @since 1.5
*/
function bp_dtheme_setup() {
global $bp;
// Load the AJAX functions for the theme
require( TEMPLATEPATH . '/_inc/ajax.php' );
// This theme styles the visual editor with editor-style.css to match the theme style.
add_editor_style();
// This theme uses post thumbnails
add_theme_support( 'post-thumbnails' );
// Add default posts and comments RSS feed links to head
add_theme_support( 'automatic-feed-links' );
// Add responsive layout support to bp-default without forcing child
// themes to inherit it if they don't want to
add_theme_support( 'bp-default-responsive' );
// This theme uses wp_nav_menu() in one location.
register_nav_menus( array(
'primary' => __( 'Primary Navigation', 'buddypress' ),
) );
// This theme allows users to set a custom background
add_custom_background( 'bp_dtheme_custom_background_style' );
// Add custom header support if allowed
if ( !defined( 'BP_DTHEME_DISABLE_CUSTOM_HEADER' ) ) {
define( 'HEADER_TEXTCOLOR', 'FFFFFF' );
// The height and width of your custom header. You can hook into the theme's own filters to change these values.
// Add a filter to bp_dtheme_header_image_width and bp_dtheme_header_image_height to change these values.
define( 'HEADER_IMAGE_WIDTH', apply_filters( 'bp_dtheme_header_image_width', 401 ) );
define( 'HEADER_IMAGE_HEIGHT', apply_filters( 'bp_dtheme_header_image_height', 80 ) );
// We'll be using post thumbnails for custom header images on posts and pages. We want them to be 1250 pixels wide by 133 pixels tall.
// Larger images will be auto-cropped to fit, smaller ones will be ignored.
set_post_thumbnail_size( HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT, true );
// Add a way for the custom header to be styled in the admin panel that controls custom headers.
add_custom_image_header( 'bp_dtheme_header_style', 'bp_dtheme_admin_header_style' );
}
if ( !is_admin() ) {
// Register buttons for the relevant component templates
// Friends button
if ( bp_is_active( 'friends' ) )
add_action( 'bp_member_header_actions', 'bp_add_friend_button' );
// Activity button
if ( bp_is_active( 'activity' ) )
add_action( 'bp_member_header_actions', 'bp_send_public_message_button' );
// Messages button
if ( bp_is_active( 'messages' ) )
add_action( 'bp_member_header_actions', 'bp_send_private_message_button' );
// Group buttons
if ( bp_is_active( 'groups' ) ) {
add_action( 'bp_group_header_actions', 'bp_group_join_button' );
add_action( 'bp_group_header_actions', 'bp_group_new_topic_button' );
add_action( 'bp_directory_groups_actions', 'bp_group_join_button' );
}
// Blog button
if ( bp_is_active( 'blogs' ) )
add_action( 'bp_directory_blogs_actions', 'bp_blogs_visit_blog_button' );
}
}
add_action( 'after_setup_theme', 'bp_dtheme_setup' );
endif;
if ( !function_exists( 'bp_dtheme_enqueue_scripts' ) ) :
/**
* Enqueue theme javascript safely
*
* @see http://codex.wordpress.org/Function_Reference/wp_enqueue_script
* @since 1.5
*/
function bp_dtheme_enqueue_scripts() {
// Bump this when changes are made to bust cache
$version = '20120110';
// Enqueue the global JS - Ajax will not work without it
wp_enqueue_script( 'dtheme-ajax-js', get_template_directory_uri() . '/_inc/global.js', array( 'jquery' ), $version );
// Add words that we need to use in JS to the end of the page so they can be translated and still used.
$params = array(
'my_favs' => __( 'My Favorites', 'buddypress' ),
'accepted' => __( 'Accepted', 'buddypress' ),
'rejected' => __( 'Rejected', 'buddypress' ),
'show_all_comments' => __( 'Show all comments for this thread', 'buddypress' ),
'show_all' => __( 'Show all', 'buddypress' ),
'comments' => __( 'comments', 'buddypress' ),
'close' => __( 'Close', 'buddypress' ),
'view' => __( 'View', 'buddypress' ),
'mark_as_fav' => __( 'Favorite', 'buddypress' ),
'remove_fav' => __( 'Remove Favorite', 'buddypress' )
);
wp_localize_script( 'dtheme-ajax-js', 'BP_DTheme', $params );
}
add_action( 'wp_enqueue_scripts', 'bp_dtheme_enqueue_scripts' );
endif;
if ( !function_exists( 'bp_dtheme_enqueue_styles' ) ) :
/**
* Enqueue theme CSS safely
*
* For maximum flexibility, BuddyPress Default's stylesheet is enqueued, using wp_enqueue_style().
* If you're building a child theme of bp-default, your stylesheet will also be enqueued,
* automatically, as dependent on bp-default's CSS. For this reason, bp-default child themes are
* not recommended to include bp-default's stylesheet using @import.
*
* If you would prefer to use @import, or would like to change the way in which stylesheets are
* enqueued, you can override bp_dtheme_enqueue_styles() in your theme's functions.php file.
*
* @see http://codex.wordpress.org/Function_Reference/wp_enqueue_style
* @see http://codex.buddypress.org/releases/1-5-developer-and-designer-information/
* @since 1.5
*/
function bp_dtheme_enqueue_styles() {
// Bump this when changes are made to bust cache
$version = '20120110';
// Register our main stylesheet
wp_register_style( 'bp-default-main', get_template_directory_uri() . '/_inc/css/default.css', array(), $version );
// If the current theme is a child of bp-default, enqueue its stylesheet
if ( is_child_theme() && 'bp-default' == get_template() ) {
wp_enqueue_style( get_stylesheet(), get_stylesheet_uri(), array( 'bp-default-main' ), $version );
}
// Enqueue the main stylesheet
wp_enqueue_style( 'bp-default-main' );
// Default CSS RTL
if ( is_rtl() )
wp_enqueue_style( 'bp-default-main-rtl', get_template_directory_uri() . '/_inc/css/default-rtl.css', array( 'bp-default-main' ), $version );
// Responsive layout
if ( current_theme_supports( 'bp-default-responsive' ) ) {
wp_enqueue_style( 'bp-default-responsive', get_template_directory_uri() . '/_inc/css/responsive.css', array( 'bp-default-main' ), $version );
if ( is_rtl() )
wp_enqueue_style( 'bp-default-responsive-rtl', get_template_directory_uri() . '/_inc/css/responsive-rtl.css', array( 'bp-default-responsive' ), $version );
}
}
add_action( 'wp_enqueue_scripts', 'bp_dtheme_enqueue_styles' );
endif;
if ( !function_exists( 'bp_dtheme_admin_header_style' ) ) :
/**
* Styles the header image displayed on the Appearance > Header admin panel.
*
* Referenced via add_custom_image_header() in bp_dtheme_setup().
*
* @since 1.2
*/
function bp_dtheme_admin_header_style() {
?>
<style type="text/css">
#headimg {
position: relative;
color: #fff;
background: url(<?php header_image() ?>);
-moz-border-radius-bottomleft: 6px;
-webkit-border-bottom-left-radius: 6px;
-moz-border-radius-bottomright: 6px;
-webkit-border-bottom-right-radius: 6px;
margin-bottom: 20px;
height: 133px;
}
#headimg h1{
position: absolute;
bottom: 15px;
left: 15px;
width: 44%;
margin: 0;
font-family: Arial, Tahoma, sans-serif;
}
#headimg h1 a{
color:#<?php header_textcolor() ?>;
text-decoration: none;
border-bottom: none;
}
#headimg #desc{
color:#<?php header_textcolor() ?>;
font-size:1em;
margin-top:-0.5em;
}
#desc {
display: none;
}
<?php if ( 'blank' == get_header_textcolor() ) { ?>
#headimg h1, #headimg #desc {
display: none;
}
#headimg h1 a, #headimg #desc {
color:#<?php echo HEADER_TEXTCOLOR ?>;
}
<?php } ?>
</style>
<?php
}
endif;
if ( !function_exists( 'bp_dtheme_custom_background_style' ) ) :
/**
* The style for the custom background image or colour.
*
* Referenced via add_custom_background() in bp_dtheme_setup().
*
* @see _custom_background_cb()
* @since 1.5
*/
function bp_dtheme_custom_background_style() {
$background = get_background_image();
$color = get_background_color();
if ( ! $background && ! $color )
return;
$style = $color ? "background-color: #$color;" : '';
if ( $style && !$background ) {
$style .= ' background-image: none;';
} elseif ( $background ) {
$image = " background-image: url('$background');";
$repeat = get_theme_mod( 'background_repeat', 'repeat' );
if ( ! in_array( $repeat, array( 'no-repeat', 'repeat-x', 'repeat-y', 'repeat' ) ) )
$repeat = 'repeat';
$repeat = " background-repeat: $repeat;";
$position = get_theme_mod( 'background_position_x', 'left' );
if ( ! in_array( $position, array( 'center', 'right', 'left' ) ) )
$position = 'left';
$position = " background-position: top $position;";
$attachment = get_theme_mod( 'background_attachment', 'scroll' );
if ( ! in_array( $attachment, array( 'fixed', 'scroll' ) ) )
$attachment = 'scroll';
$attachment = " background-attachment: $attachment;";
$style .= $image . $repeat . $position . $attachment;
}
?>
<style type="text/css">
body { <?php echo trim( $style ); ?> }
</style>
<?php
}
endif;
if ( !function_exists( 'bp_dtheme_header_style' ) ) :
/**
* The styles for the post thumbnails / custom page headers.
*
* Referenced via add_custom_image_header() in bp_dtheme_setup().
*
* @global WP_Query $post The current WP_Query object for the current post or page
* @since 1.2
*/
function bp_dtheme_header_style() {
global $post;
$header_image = '';
if ( is_singular() && current_theme_supports( 'post-thumbnails' ) && has_post_thumbnail( $post->ID ) ) {
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' );
// $src, $width, $height
if ( !empty( $image ) && $image[1] >= HEADER_IMAGE_WIDTH )
$header_image = $image[0];
} else {
$header_image = get_header_image();
}
?>
<style type="text/css">
<?php if ( !empty( $header_image ) ) : ?>
#header { background-image: url(<?php echo $header_image ?>); }
<?php endif; ?>
<?php if ( 'blank' == get_header_textcolor() ) { ?>
#header h1, #header #desc { display: none; }
<?php } else { ?>
#header h1 a, #desc { color:#<?php header_textcolor() ?>; }
<?php } ?>
</style>
<?php
}
endif;
if ( !function_exists( 'bp_dtheme_widgets_init' ) ) :
/**
* Register widgetised areas, including one sidebar and four widget-ready columns in the footer.
*
* To override bp_dtheme_widgets_init() in a child theme, remove the action hook and add your own
* function tied to the init hook.
*
* @since 1.5
*/
function bp_dtheme_widgets_init() {
// Register the widget columns
// Area 1, located in the sidebar. Empty by default.
register_sidebar( array(
'name' => 'Sidebar',
'id' => 'sidebar-1',
'description' => __( 'The sidebar widget area', 'buddypress' ),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>'
) );
// Area 2, located in the footer. Empty by default.
register_sidebar( array(
'name' => __( 'First Footer Widget Area', 'buddypress' ),
'id' => 'first-footer-widget-area',
'description' => __( 'The first footer widget area', 'buddypress' ),
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',
) );
// Area 3, located in the footer. Empty by default.
register_sidebar( array(
'name' => __( 'Second Footer Widget Area', 'buddypress' ),
'id' => 'second-footer-widget-area',
'description' => __( 'The second footer widget area', 'buddypress' ),
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',
) );
// Area 4, located in the footer. Empty by default.
register_sidebar( array(
'name' => __( 'Third Footer Widget Area', 'buddypress' ),
'id' => 'third-footer-widget-area',
'description' => __( 'The third footer widget area', 'buddypress' ),
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',
) );
// Area 5, located in the footer. Empty by default.
register_sidebar( array(
'name' => __( 'Fourth Footer Widget Area', 'buddypress' ),
'id' => 'fourth-footer-widget-area',
'description' => __( 'The fourth footer widget area', 'buddypress' ),
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h3 class="widgettitle">',
'after_title' => '</h3>',
) );
}
add_action( 'widgets_init', 'bp_dtheme_widgets_init' );
endif;
if ( !function_exists( 'bp_dtheme_blog_comments' ) ) :
/**
* Template for comments and pingbacks.
*
* To override this walker in a child theme without modifying the comments template
* simply create your own bp_dtheme_blog_comments(), and that function will be used instead.
*
* Used as a callback by wp_list_comments() for displaying the comments.
*
* @param mixed $comment Comment record from database
* @param array $args Arguments from wp_list_comments() call
* @param int $depth Comment nesting level
* @see wp_list_comments()
* @since 1.2
*/
function bp_dtheme_blog_comments( $comment, $args, $depth ) {
$GLOBALS['comment'] = $comment;
if ( 'pingback' == $comment->comment_type )
return false;
if ( 1 == $depth )
$avatar_size = 50;
else
$avatar_size = 25;
?>
<li <?php comment_class() ?> id="comment-<?php comment_ID() ?>">
<div class="comment-avatar-box">
<div class="avb">
<a href="<?php echo get_comment_author_url() ?>" rel="nofollow">
<?php if ( $comment->user_id ) : ?>
<?php echo bp_core_fetch_avatar( array( 'item_id' => $comment->user_id, 'width' => $avatar_size, 'height' => $avatar_size, 'email' => $comment->comment_author_email ) ) ?>
<?php else : ?>
<?php echo get_avatar( $comment, $avatar_size ) ?>
<?php endif; ?>
</a>
</div>
</div>
<div class="comment-content">
<div class="comment-meta">
<p>
<?php
/* translators: 1: comment author url, 2: comment author name, 3: comment permalink, 4: comment date/timestamp*/
printf( __( '<a href="%1$s" rel="nofollow">%2$s</a> said on <a href="%3$s"><span class="time-since">%4$s</span></a>', 'buddypress' ), get_comment_author_url(), get_comment_author(), get_comment_link(), get_comment_date() );
?>
</p>
</div>
<div class="comment-entry">
<?php if ( $comment->comment_approved == '0' ) : ?>
<em class="moderate"><?php _e( 'Your comment is awaiting moderation.', 'buddypress' ); ?></em>
<?php endif; ?>
<?php comment_text() ?>
</div>
<div class="comment-options">
<?php if ( comments_open() ) : ?>
<?php comment_reply_link( array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ); ?>
<?php endif; ?>
<?php if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) : ?>
<?php printf( '<a class="button comment-edit-link bp-secondary-action" href="%1$s" title="%2$s">%3$s</a> ', get_edit_comment_link( $comment->comment_ID ), esc_attr__( 'Edit comment', 'buddypress' ), __( 'Edit', 'buddypress' ) ) ?>
<?php endif; ?>
</div>
</div>
<?php
}
endif;
if ( !function_exists( 'bp_dtheme_page_on_front' ) ) :
/**
* Return the ID of a page set as the home page.
*
* @return false|int ID of page set as the home page
* @since 1.2
*/
function bp_dtheme_page_on_front() {
if ( 'page' != get_option( 'show_on_front' ) )
return false;
return apply_filters( 'bp_dtheme_page_on_front', get_option( 'page_on_front' ) );
}
endif;
if ( !function_exists( 'bp_dtheme_activity_secondary_avatars' ) ) :
/**
* Add secondary avatar image to this activity stream's record, if supported.
*
* @param string $action The text of this activity
* @param BP_Activity_Activity $activity Activity object
* @package BuddyPress Theme
* @return string
* @since 1.2.6
*/
function bp_dtheme_activity_secondary_avatars( $action, $activity ) {
switch ( $activity->component ) {
case 'groups' :
case 'friends' :
// Only insert avatar if one exists
if ( $secondary_avatar = bp_get_activity_secondary_avatar() ) {
$reverse_content = strrev( $action );
$position = strpos( $reverse_content, 'a<' );
$action = substr_replace( $action, $secondary_avatar, -$position - 2, 0 );
}
break;
}
return $action;
}
add_filter( 'bp_get_activity_action_pre_meta', 'bp_dtheme_activity_secondary_avatars', 10, 2 );
endif;
if ( !function_exists( 'bp_dtheme_show_notice' ) ) :
/**
* Show a notice when the theme is activated - workaround by Ozh (http://old.nabble.com/Activation-hook-exist-for-themes--td25211004.html)
*
* @since 1.2
*/
function bp_dtheme_show_notice() {
global $pagenow;
// Bail if bp-default theme was not just activated
if ( empty( $_GET['activated'] ) || ( 'themes.php' != $pagenow ) || !is_admin() )
return;
?>
<div id="message" class="updated fade">
<p><?php printf( __( 'Theme activated! This theme contains <a href="%s">custom header image</a> support and <a href="%s">sidebar widgets</a>.', 'buddypress' ), admin_url( 'themes.php?page=custom-header' ), admin_url( 'widgets.php' ) ) ?></p>
</div>
<style type="text/css">#message2, #message0 { display: none; }</style>
<?php
}
add_action( 'admin_notices', 'bp_dtheme_show_notice' );
endif;
if ( !function_exists( 'bp_dtheme_main_nav' ) ) :
/**
* wp_nav_menu() callback from the main navigation in header.php
*
* Used when the custom menus haven't been configured.
*
* @global object $bp Global BuddyPress settings object
* @param array Menu arguments from wp_nav_menu()
* @see wp_nav_menu()
* @since 1.5
*/
function bp_dtheme_main_nav( $args ) {
global $bp;
$pages_args = array(
'depth' => 0,
'echo' => false,
'exclude' => '',
'title_li' => ''
);
$menu = wp_page_menu( $pages_args );
$menu = str_replace( array( '<div class="menu"><ul>', '</ul></div>' ), array( '<ul id="nav">', '</ul><!-- #nav -->' ), $menu );
echo $menu;
do_action( 'bp_nav_items' );
}
endif;
if ( !function_exists( 'bp_dtheme_page_menu_args' ) ) :
/**
* Get our wp_nav_menu() fallback, bp_dtheme_main_nav(), to show a home link.
*
* @param array $args Default values for wp_page_menu()
* @see wp_page_menu()
* @since 1.5
*/
function bp_dtheme_page_menu_args( $args ) {
$args['show_home'] = true;
return $args;
}
add_filter( 'wp_page_menu_args', 'bp_dtheme_page_menu_args' );
endif;
if ( !function_exists( 'bp_dtheme_comment_form' ) ) :
/**
* Applies BuddyPress customisations to the post comment form.
*
* @global string $user_identity The display name of the user
* @param array $default_labels The default options for strings, fields etc in the form
* @see comment_form()
* @since 1.5
*/
function bp_dtheme_comment_form( $default_labels ) {
global $user_identity;
$commenter = wp_get_current_commenter();
$req = get_option( 'require_name_email' );
$aria_req = ( $req ? " aria-required='true'" : '' );
$fields = array(
'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name', 'buddypress' ) . ( $req ? '<span class="required"> *</span>' : '' ) . '</label> ' .
'<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email', 'buddypress' ) . ( $req ? '<span class="required"> *</span>' : '' ) . '</label> ' .
'<input id="email" name="email" type="text" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website', 'buddypress' ) . '</label>' .
'<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
);
$new_labels = array(
'comment_field' => '<p class="form-textarea"><textarea name="comment" id="comment" cols="60" rows="10" aria-required="true">