first commit
This commit is contained in:
457
wp-content/themes/Bootstrap-for-WordPress-master/functions.php
Normal file
457
wp-content/themes/Bootstrap-for-WordPress-master/functions.php
Normal file
@ -0,0 +1,457 @@
|
||||
<?php
|
||||
/**
|
||||
* Bootstrap functions and definitions
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Set the content width based on the theme's design and stylesheet.
|
||||
*
|
||||
*/
|
||||
if ( ! isset( $content_width ) )
|
||||
$content_width = 560;
|
||||
|
||||
/** Tell WordPress to run bootstrap_setup() when the 'after_setup_theme' hook is run. */
|
||||
add_action( 'after_setup_theme', 'bootstrap_setup' );
|
||||
|
||||
if ( ! function_exists( 'bootstrap_setup' ) ):
|
||||
|
||||
function bootstrap_setup() {
|
||||
|
||||
// This theme styles the visual editor with editor-style.css to match the theme style.
|
||||
add_editor_style();
|
||||
|
||||
// Post Format support. You can also use the legacy "gallery" or "asides" (note the plural) categories.
|
||||
add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
|
||||
|
||||
// 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' );
|
||||
|
||||
// Make theme available for translation
|
||||
// Translations can be filed in the /languages/ directory
|
||||
load_theme_textdomain( 'bootstrap', TEMPLATEPATH . '/languages' );
|
||||
|
||||
$locale = get_locale();
|
||||
$locale_file = TEMPLATEPATH . "/languages/$locale.php";
|
||||
if ( is_readable( $locale_file ) )
|
||||
require_once( $locale_file );
|
||||
|
||||
// This theme uses wp_nav_menu() in one location.
|
||||
register_nav_menus( array(
|
||||
'primary' => __( 'Primary Navigation', 'bootstrap' ),
|
||||
) );
|
||||
|
||||
// This theme allows users to set a custom background
|
||||
add_custom_background();
|
||||
|
||||
}
|
||||
endif;
|
||||
|
||||
/**
|
||||
* Function to add stylesheets to wp_head.
|
||||
*
|
||||
*
|
||||
*/
|
||||
function add_my_stylesheets() {
|
||||
wp_register_style( 'bootstrap-style', get_template_directory_uri() . '/css/bootstrap.css' );
|
||||
wp_enqueue_style( 'bootstrap-style' );
|
||||
wp_register_style( 'extra-styles', get_template_directory_uri() . '/style.css' );
|
||||
wp_enqueue_style( 'extra-styles' );
|
||||
wp_register_style( 'bootstrap-responsive', get_template_directory_uri() . '/css/bootstrap-responsive.css' );
|
||||
wp_enqueue_style( 'bootstrap-responsive' );
|
||||
}
|
||||
add_action('wp_enqueue_scripts', 'add_my_stylesheets');
|
||||
/**
|
||||
* Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link.
|
||||
*
|
||||
*
|
||||
*/
|
||||
function bootstrap_page_menu_args( $args ) {
|
||||
$args['show_home'] = true;
|
||||
return $args;
|
||||
}
|
||||
add_filter( 'wp_page_menu_args', 'bootstrap_page_menu_args' );
|
||||
|
||||
/**
|
||||
* Sets the post excerpt length to 40 characters.
|
||||
*
|
||||
*/
|
||||
function bootstrap_excerpt_length( $length ) {
|
||||
return 40;
|
||||
}
|
||||
add_filter( 'excerpt_length', 'bootstrap_excerpt_length' );
|
||||
|
||||
/**
|
||||
* Returns a "Continue" link for excerpts
|
||||
*
|
||||
*/
|
||||
function bootstrap_continue_reading_link() {
|
||||
return ' <a href="'. get_permalink() . '">' . __( 'Continue <span class="meta-nav">→</span>', 'bootstrap' ) . '</a>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces "[...]" (appended to automatically generated excerpts) with an ellipsis and bootstrap_continue_reading_link().
|
||||
*
|
||||
*/
|
||||
function bootstrap_auto_excerpt_more( $more ) {
|
||||
return ' …' . bootstrap_continue_reading_link();
|
||||
}
|
||||
add_filter( 'excerpt_more', 'bootstrap_auto_excerpt_more' );
|
||||
|
||||
/**
|
||||
* Adds a pretty "Continue" link to custom post excerpts.
|
||||
*
|
||||
*/
|
||||
function bootstrap_custom_excerpt_more( $output ) {
|
||||
if ( has_excerpt() && ! is_attachment() ) {
|
||||
$output .= bootstrap_continue_reading_link();
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
add_filter( 'get_the_excerpt', 'bootstrap_custom_excerpt_more' );
|
||||
|
||||
/**
|
||||
* Remove inline styles printed when the gallery shortcode is used.
|
||||
*
|
||||
*/
|
||||
add_filter( 'use_default_gallery_style', '__return_false' );
|
||||
|
||||
/**
|
||||
* Deprecated way to remove inline styles printed when the gallery shortcode is used.
|
||||
*
|
||||
* This function is no longer needed or used. Use the use_default_gallery_style
|
||||
* filter instead, as seen above.
|
||||
*
|
||||
*/
|
||||
function bootstrap_remove_gallery_css( $css ) {
|
||||
return preg_replace( "#<style type='text/css'>(.*?)</style>#s", '', $css );
|
||||
}
|
||||
// Backwards compatibility with WordPress 3.0.
|
||||
if ( version_compare( $GLOBALS['wp_version'], '3.1', '<' ) )
|
||||
add_filter( 'gallery_style', 'bootstrap_remove_gallery_css' );
|
||||
|
||||
if ( ! function_exists( 'bootstrap_comment' ) ) :
|
||||
/**
|
||||
* Template for comments and pingbacks.
|
||||
*
|
||||
*/
|
||||
function bootstrap_comment( $comment, $args, $depth ) {
|
||||
$GLOBALS['comment'] = $comment;
|
||||
switch ( $comment->comment_type ) :
|
||||
case '' :
|
||||
?>
|
||||
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
|
||||
<div id="comment-<?php comment_ID(); ?>">
|
||||
<div class="comment-author vcard">
|
||||
<?php echo get_avatar( $comment, 40 ); ?>
|
||||
<?php printf( __( '%s <span class="says">says:</span>', 'bootstrap' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?>
|
||||
</div><!-- .comment-author .vcard -->
|
||||
<?php if ( $comment->comment_approved == '0' ) : ?>
|
||||
<em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'bootstrap' ); ?></em>
|
||||
<br />
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
|
||||
<?php
|
||||
/* translators: 1: date, 2: time */
|
||||
printf( __( '%1$s at %2$s', 'bootstrap' ), get_comment_date(), get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)', 'bootstrap' ), ' ' );
|
||||
?>
|
||||
</div><!-- .comment-meta .commentmetadata -->
|
||||
|
||||
<div class="comment-body"><?php comment_text(); ?></div>
|
||||
|
||||
<div class="reply">
|
||||
<?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
|
||||
</div><!-- .reply -->
|
||||
</div><!-- #comment-## -->
|
||||
|
||||
<?php
|
||||
break;
|
||||
case 'pingback' :
|
||||
case 'trackback' :
|
||||
?>
|
||||
<li class="post pingback">
|
||||
<p><?php _e( 'Pingback:', 'bootstrap' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( '(Edit)', 'bootstrap' ), ' ' ); ?></p>
|
||||
<?php
|
||||
break;
|
||||
endswitch;
|
||||
}
|
||||
endif;
|
||||
|
||||
/**
|
||||
* Register widgetized areas, including two sidebars and four widget-ready columns in the footer.
|
||||
*
|
||||
*/
|
||||
function bootstrap_widgets_init() {
|
||||
// The sidebar widget area.
|
||||
register_sidebar( array(
|
||||
'name' => __( 'Sidebar Widget Area', 'bootstrap' ),
|
||||
'id' => 'sidebar-widget-area',
|
||||
'description' => __( 'The Sidebar widget area', 'bootstrap' ),
|
||||
'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
|
||||
'after_widget' => '</li>',
|
||||
'before_title' => '<h3 class="widget-title">',
|
||||
'after_title' => '</h3>',
|
||||
) );
|
||||
|
||||
}
|
||||
/** Register sidebars by running bootstrap_widgets_init() on the widgets_init hook. */
|
||||
add_action( 'widgets_init', 'bootstrap_widgets_init' );
|
||||
|
||||
/**
|
||||
* Removes the default styles that are packaged with the Recent Comments widget.
|
||||
*
|
||||
*/
|
||||
function bootstrap_remove_recent_comments_style() {
|
||||
add_filter( 'show_recent_comments_widget_style', '__return_false' );
|
||||
}
|
||||
add_action( 'widgets_init', 'bootstrap_remove_recent_comments_style' );
|
||||
|
||||
if ( ! function_exists( 'bootstrap_posted_on' ) ) :
|
||||
/**
|
||||
* Prints HTML with meta information for the current post-date/time and author.
|
||||
*
|
||||
*/
|
||||
function bootstrap_posted_on() {
|
||||
printf( __( '<span class="%1$s">Posted on</span> %2$s <span class="meta-sep">by</span> %3$s', 'bootstrap' ),
|
||||
'meta-prep meta-prep-author',
|
||||
sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span></a>',
|
||||
get_permalink(),
|
||||
esc_attr( get_the_time() ),
|
||||
get_the_date()
|
||||
),
|
||||
sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>',
|
||||
get_author_posts_url( get_the_author_meta( 'ID' ) ),
|
||||
sprintf( esc_attr__( 'View all posts by %s', 'bootstrap' ), get_the_author() ),
|
||||
get_the_author()
|
||||
)
|
||||
);
|
||||
}
|
||||
endif;
|
||||
|
||||
if ( ! function_exists( 'bootstrap_posted_in' ) ) :
|
||||
/**
|
||||
* Prints HTML with meta information for the current post (category, tags and permalink).
|
||||
*
|
||||
*/
|
||||
function bootstrap_posted_in() {
|
||||
// Retrieves tag list of current post, separated by commas.
|
||||
$tag_list = get_the_tag_list( '', ', ' );
|
||||
if ( $tag_list ) {
|
||||
$posted_in = __( 'This entry was posted in %1$s and tagged %2$s. Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'bootstrap' );
|
||||
} elseif ( is_object_in_taxonomy( get_post_type(), 'category' ) ) {
|
||||
$posted_in = __( 'This entry was posted in %1$s. Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'bootstrap' );
|
||||
} else {
|
||||
$posted_in = __( 'Bookmark the <a href="%3$s" title="Permalink to %4$s" rel="bookmark">permalink</a>.', 'bootstrap' );
|
||||
}
|
||||
// Prints the string, replacing the placeholders.
|
||||
printf(
|
||||
$posted_in,
|
||||
get_the_category_list( ', ' ),
|
||||
$tag_list,
|
||||
get_permalink(),
|
||||
the_title_attribute( 'echo=0' )
|
||||
);
|
||||
}
|
||||
endif;
|
||||
|
||||
/**
|
||||
* Bootstrap custom meny settings for downdrop support
|
||||
*
|
||||
*/
|
||||
class Bootstrap_Nav_Walker extends Walker_Nav_Menu {
|
||||
function check_current($val) {
|
||||
return preg_match('/(current-)/', $val);
|
||||
}
|
||||
|
||||
function start_el(&$output, $item, $depth, $args) {
|
||||
global $wp_query;
|
||||
$indent = ($depth) ? str_repeat("\t", $depth) : '';
|
||||
|
||||
$slug = sanitize_title($item->title);
|
||||
$id = apply_filters('nav_menu_item_id', 'menu-' . $slug, $item, $args);
|
||||
$id = strlen($id) ? '' . esc_attr( $id ) . '' : '';
|
||||
|
||||
$class_names = $value = '';
|
||||
$classes = empty($item->classes) ? array() : (array) $item->classes;
|
||||
|
||||
$classes = array_filter($classes, array(&$this, 'check_current'));
|
||||
|
||||
$class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item));
|
||||
$class_names = $class_names ? ' class="' . $id . ' ' . esc_attr($class_names) . '"' : ' class="' . $id . '"';
|
||||
|
||||
$output .= $indent . '<li' . $class_names . '>';
|
||||
|
||||
$attributes = ! empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) .'"' : '';
|
||||
$attributes .= ! empty($item->target) ? ' target="' . esc_attr($item->target ) .'"' : '';
|
||||
$attributes .= ! empty($item->xfn) ? ' rel="' . esc_attr($item->xfn ) .'"' : '';
|
||||
$attributes .= ! empty($item->url) ? ' href="' . esc_attr($item->url ) .'"' : '';
|
||||
|
||||
$item_output = $args->before;
|
||||
$item_output .= '<a'. $attributes .'>';
|
||||
$item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after;
|
||||
$item_output .= '</a>';
|
||||
$item_output .= $args->after;
|
||||
|
||||
$output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args);
|
||||
}
|
||||
}
|
||||
|
||||
class Bootstrap_Navbar_Nav_Walker extends Walker_Nav_Menu {
|
||||
function check_current($val) {
|
||||
return preg_match('/(current-)|active|dropdown/', $val);
|
||||
}
|
||||
|
||||
function start_lvl(&$output, $depth) {
|
||||
$output .= "\n<ul class=\"dropdown-menu\">\n";
|
||||
}
|
||||
|
||||
function start_el(&$output, $item, $depth, $args) {
|
||||
global $wp_query;
|
||||
$indent = ($depth) ? str_repeat("\t", $depth) : '';
|
||||
|
||||
$slug = sanitize_title($item->title);
|
||||
$id = apply_filters('nav_menu_item_id', 'menu-' . $slug, $item, $args);
|
||||
$id = strlen($id) ? '' . esc_attr( $id ) . '' : '';
|
||||
|
||||
$li_attributes = '';
|
||||
$class_names = $value = '';
|
||||
|
||||
$classes = empty($item->classes) ? array() : (array) $item->classes;
|
||||
if ($args->has_children) {
|
||||
$classes[] = 'dropdown';
|
||||
$li_attributes .= ' data-dropdown="dropdown"';
|
||||
}
|
||||
$classes[] = ($item->current) ? 'active' : '';
|
||||
$classes = array_filter($classes, array(&$this, 'check_current'));
|
||||
|
||||
$class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item));
|
||||
$class_names = $class_names ? ' class="' . $id . ' ' . esc_attr($class_names) . '"' : ' class="' . $id . '"';
|
||||
|
||||
$output .= $indent . '<li' . $class_names . $li_attributes . '>';
|
||||
|
||||
$attributes = ! empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) .'"' : '';
|
||||
$attributes .= ! empty($item->target) ? ' target="' . esc_attr($item->target ) .'"' : '';
|
||||
$attributes .= ! empty($item->xfn) ? ' rel="' . esc_attr($item->xfn ) .'"' : '';
|
||||
$attributes .= ! empty($item->url) ? ' href="' . esc_attr($item->url ) .'"' : '';
|
||||
$attributes .= ($args->has_children) ? ' class="dropdown-toggle" data-toggle="dropdown"' : '';
|
||||
|
||||
$item_output = $args->before;
|
||||
$item_output .= '<a'. $attributes .'>';
|
||||
$item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after;
|
||||
$item_output .= ($args->has_children) ? ' <b class="caret"></b>' : '';
|
||||
$item_output .= '</a>';
|
||||
$item_output .= $args->after;
|
||||
|
||||
$output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args);
|
||||
}
|
||||
function display_element($element, &$children_elements, $max_depth, $depth = 0, $args, &$output) {
|
||||
if (!$element) { return; }
|
||||
|
||||
$id_field = $this->db_fields['id'];
|
||||
|
||||
// display this element
|
||||
if (is_array($args[0])) {
|
||||
$args[0]['has_children'] = !empty($children_elements[$element->$id_field]);
|
||||
} elseif (is_object($args[0])) {
|
||||
$args[0]->has_children = !empty($children_elements[$element->$id_field]);
|
||||
}
|
||||
$cb_args = array_merge(array(&$output, $element, $depth), $args);
|
||||
call_user_func_array(array(&$this, 'start_el'), $cb_args);
|
||||
|
||||
$id = $element->$id_field;
|
||||
|
||||
// descend only when the depth is right and there are childrens for this element
|
||||
if (($max_depth == 0 || $max_depth > $depth+1) && isset($children_elements[$id])) {
|
||||
foreach ($children_elements[$id] as $child) {
|
||||
if (!isset($newlevel)) {
|
||||
$newlevel = true;
|
||||
// start the child delimiter
|
||||
$cb_args = array_merge(array(&$output, $depth), $args);
|
||||
call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
|
||||
}
|
||||
$this->display_element($child, $children_elements, $max_depth, $depth + 1, $args, $output);
|
||||
}
|
||||
unset($children_elements[$id]);
|
||||
}
|
||||
|
||||
if (isset($newlevel) && $newlevel) {
|
||||
// end the child delimiter
|
||||
$cb_args = array_merge(array(&$output, $depth), $args);
|
||||
call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
|
||||
}
|
||||
|
||||
// end this element
|
||||
$cb_args = array_merge(array(&$output, $element, $depth), $args);
|
||||
call_user_func_array(array(&$this, 'end_el'), $cb_args);
|
||||
}
|
||||
}
|
||||
|
||||
function bootstrap_nav_menu_args($args = '') {
|
||||
$args['container'] = false;
|
||||
$args['depth'] = 2;
|
||||
$args['items_wrap'] = '<ul class="%2$s">%3$s</ul>';
|
||||
if (!$args['walker']) {
|
||||
$args['walker'] = new Bootstrap_Nav_Walker();
|
||||
}
|
||||
return $args;
|
||||
}
|
||||
|
||||
add_filter('wp_nav_menu_args', 'bootstrap_nav_menu_args');
|
||||
|
||||
// we don't need to self-close these tags in html5:
|
||||
// <img>, <input>
|
||||
function bootstrap_remove_self_closing_tags($input) {
|
||||
return str_replace(' />', '>', $input);
|
||||
}
|
||||
|
||||
/**
|
||||
* Customize the comments fields
|
||||
*
|
||||
* Adds support for placeholder
|
||||
* required
|
||||
* type="email"
|
||||
* type="url"
|
||||
*
|
||||
*/
|
||||
function bootstrap_comments() {
|
||||
|
||||
$req = get_option('require_name_email');
|
||||
|
||||
$fields = array(
|
||||
'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name', 'bootstrap' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
|
||||
'<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' placeholder = "Name"' . ( $req ? ' required' : '' ) . '/></p>',
|
||||
|
||||
'email' => '<p class="comment-form-email"><label for="email">' . __( 'Email', 'bootstrap' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
|
||||
'<input id="email" name="email" type="email" value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' placeholder="Email"' . ( $req ? ' required' : '' ) . ' /></p>',
|
||||
|
||||
'url' => '<p class="comment-form-url"><label for="url">' . __( 'Website', 'bootstrap' ) . '</label>' .
|
||||
'<input id="url" name="url" type="url" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" placeholder="URL" /></p>'
|
||||
|
||||
);
|
||||
return $fields;
|
||||
}
|
||||
|
||||
|
||||
function bootstrap_commentfield() {
|
||||
|
||||
$commentArea = '<p class="comment-form-comment"><label for="comment">' . _x( 'Comment', 'noun' ) . '</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true" required placeholder="Comment text" ></textarea></p>';
|
||||
|
||||
return $commentArea;
|
||||
|
||||
}
|
||||
|
||||
function bootstrap_commentsubmit() {
|
||||
|
||||
$commentSubmit = '<input name="submit" type="submit" id="submit" class="btn" value="Post Comment" />';
|
||||
|
||||
return $commentSubmit;
|
||||
|
||||
}
|
||||
|
||||
add_filter('comment_form_default_fields', 'bootstrap_comments');
|
||||
add_filter('comment_form_field_comment', 'bootstrap_commentfield');
|
Reference in New Issue
Block a user