for posts and comments.
add_theme_support( 'automatic-feed-links' );
// Enable support for Post Thumbnails, and declare two sizes.
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 672, 372, true );
add_image_size( 'beryl-full-width', 1170 );
/*
* Switch default core markup for search form, comment form, and comments
* to output valid HTML5.
*/
add_theme_support( 'html5', array(
'search-form', 'comment-form', 'comment-list',
) );
// This theme uses wp_nav_menu() in two locations.
register_nav_menus( array(
'middle' => __( 'Middle menu', 'beryl' ),
'bottom' => __( 'Bottom menu', 'beryl' ),
) );
// This theme uses its own gallery styles.
add_filter( 'use_default_gallery_style', '__return_false' );
add_theme_support( 'title-tag' );
if ( version_compare( $wp_version, '4.5', '>=' ) ) {
add_theme_support( 'custom-logo', array( 'height' => 60, 'width' => 240, 'flex-width' => true ) );
} else {
add_theme_support( 'custom-header' );
}
}
endif; // beryl_setup
add_action( 'after_setup_theme', 'beryl_setup' );
// Admin CSS
function beryl_admin_css() {
wp_enqueue_style( 'beryl-admin-css', get_template_directory_uri() . '/css/wp-admin.css' );
}
add_action('admin_head','beryl_admin_css');
function beryl_tag_list( $post_id, $return = false ) {
$entry_utility = '';
$posttags = get_the_tags( $post_id );
if ( $posttags ) {
$entry_utility .= '
';
foreach( $posttags as $tag ) {
$entry_utility .= '
' . $tag->name . ', ';
}
$entry_utility = rtrim($entry_utility, ', ');
$entry_utility .= '
';
}
if ( $return ) {
return $entry_utility;
} else {
echo $entry_utility;
}
}
add_action( 'wp_head', 'beryl_override_toolbar_margin', 11 );
function beryl_override_toolbar_margin() { ?>
';
}
return $pagination;
}
function beryl_category_list( $post_id, $return = false ) {
$category_list = get_the_category_list( ', ', '', $post_id );
$entry_utility = '';
if ( $category_list ) {
$entry_utility .= '
' . $category_list . '
';
}
if ( $return ) {
return $entry_utility;
} else {
echo $entry_utility;
}
}
function beryl_comment_count( $post_id ) {
$comments = wp_count_comments($post_id);
return $comments->approved;
}
/**
* Register one Beryl 1.0 widget area.
*
* @since Beryl 1.0
*
* @return void
*/
function beryl_widgets_init() {
register_sidebar( array(
'name' => __( 'Footer Widget Area', 'beryl' ),
'id' => 'sidebar-1',
'description' => __( 'Appears in the post footer section of the site.', 'beryl' ),
'before_widget' => '',
'before_title' => '',
) );
}
add_action( 'widgets_init', 'beryl_widgets_init' );
/**
* Adjust content_width value for image attachment template.
*
* @since Beryl 1.0
*
* @return void
*/
function beryl_content_width() {
if ( is_attachment() && wp_attachment_is_image() ) {
$GLOBALS['content_width'] = 810;
}
}
add_action( 'template_redirect', 'beryl_content_width' );
/**
* Register Lato Google font for Beryl 1.0.
*
* @since Beryl 1.0
*
* @return string
*/
function beryl_font_url() {
$font_url = '';
/*
* Translators: If there are characters in your language that are not supported
* by Lato, translate this to 'off'. Do not translate into your own language.
*/
$font_url = add_query_arg( 'family', urlencode( 'Lato:100,300,400' ), "//fonts.googleapis.com/css" );
return $font_url;
}
function beryl_excerpt_length( $length ) {
return 15;
}
add_filter( 'excerpt_length', 'beryl_excerpt_length', 999 );
function beryl_excerpt_more( $more ) {
return '..';
}
add_filter('excerpt_more', 'beryl_excerpt_more');
/**
* Enqueue scripts and styles for the front end.
*
* @since Beryl 1.0
*
* @return void
*/
function beryl_scripts() {
wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/css/bootstrap.css', array() );
// Add Google fonts
wp_register_style('beryl-googleFonts', '//fonts.googleapis.com/css?family=Lato:100,300,400,500,600,700&subset=latin');
wp_enqueue_style( 'beryl-googleFonts');
// Add Genericons font, used in the main stylesheet.
wp_enqueue_style( 'genericons', get_template_directory_uri() . '/fonts/genericons/genericons.css', array(), '3.0.2' );
// Load our main stylesheet.
wp_enqueue_style( 'beryl-style', get_stylesheet_uri(), array( 'genericons' ) );
// Load the Internet Explorer specific stylesheet.
wp_enqueue_style( 'beryl-ie', get_template_directory_uri() . '/css/ie.css', array( 'beryl-style', 'genericons' ), '20131205' );
wp_style_add_data( 'beryl-ie', 'conditional', 'lt IE 9' );
wp_enqueue_script( 'comment-reply' );
wp_enqueue_script( 'beryl-segment', get_template_directory_uri() . '/js/segment.min.js', array() );
wp_enqueue_script( 'beryl-ease', get_template_directory_uri() . '/js/ease.min.js', array() );
wp_enqueue_script( 'beryl-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20131209', true );
wp_enqueue_script( 'bootstrap', get_template_directory_uri() . '/js/bootstrap.js', array( 'jquery' ), '20131209', true );
wp_enqueue_style( 'animate', get_template_directory_uri() . '/css/animate.min.css', array() );
wp_enqueue_script( 'jquery-ba-hashchange', get_template_directory_uri() . '/js/jquery.ba-hashchange.js', array( 'jquery' ), '', true );
wp_enqueue_script( 'jquery-ui-draggable' );
wp_localize_script(
'beryl-script',
'beryl_loc',
array(
'home_url' => home_url()
)
);
wp_add_inline_style( 'beryl-style', '.post-inner-title { background-image: url('.get_template_directory_uri().'/images/post-bg.png) !important; }' );
// Add html5
wp_enqueue_script( 'html5shiv', get_template_directory_uri() . '/js/html5.js' );
wp_script_add_data( 'html5shiv', 'conditional', 'lt IE 9' );
}
add_action( 'wp_enqueue_scripts', 'beryl_scripts' );
// Admin Javascript
add_action( 'admin_enqueue_scripts', 'beryl_admin_scripts' );
function beryl_admin_scripts() {
wp_register_script('beryl-master', get_template_directory_uri() . '/inc/js/admin-master.js', array('jquery'));
wp_enqueue_script('beryl-master');
}
if ( ! function_exists( 'beryl_the_attached_image' ) ) :
/**
* Print the attached image with a link to the next attached image.
*
* @since Beryl 1.0
*
* @return void
*/
function beryl_the_attached_image() {
$post = get_post();
/**
* Filter the default Beryl 1.0 attachment size.
*
* @since Beryl 1.0
*
* @param array $dimensions {
* An array of height and width dimensions.
*
* @type int $height Height of the image in pixels. Default 810.
* @type int $width Width of the image in pixels. Default 810.
* }
*/
$attachment_size = apply_filters( 'beryl_attachment_size', array( 810, 810 ) );
$next_attachment_url = wp_get_attachment_url();
/*
* Grab the IDs of all the image attachments in a gallery so we can get the URL
* of the next adjacent image in a gallery, or the first image (if we're
* looking at the last image in a gallery), or, in a gallery of one, just the
* link to that image file.
*/
$attachment_ids = get_posts( array(
'post_parent' => $post->post_parent,
'fields' => 'ids',
'numberposts' => -1,
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID',
) );
// If there is more than 1 attachment in a gallery...
if ( count( $attachment_ids ) > 1 ) {
foreach ( $attachment_ids as $attachment_id ) {
if ( $attachment_id == $post->ID ) {
$next_id = current( $attachment_ids );
break;
}
}
// get the URL of the next image attachment...
if ( $next_id ) {
$next_attachment_url = get_attachment_link( $next_id );
}
// or get the URL of the first image attachment.
else {
$next_attachment_url = get_attachment_link( array_shift( $attachment_ids ) );
}
}
printf( '%2$s',
esc_url( $next_attachment_url ),
wp_get_attachment_image( $post->ID, $attachment_size )
);
}
endif;
/**
* Extend the default WordPress body classes.
*
* Adds body classes to denote:
* 1. Single or multiple authors.
* 2. Presence of header image.
* 3. Index views.
* 5. Presence of footer widgets.
* 6. Single views.
* 7. Featured content layout.
*
* @since Beryl 1.0
*
* @param array $classes A list of existing body class values.
* @return array The filtered body class list.
*/
function beryl_body_classes( $classes ) {
global $post;
$beryl_layout = '';
if ( is_single() || is_page() ) {
$classes[] = 'post-shown pull-page-content';
}
return $classes;
}
add_filter( 'body_class', 'beryl_body_classes' );
/**
* Create a nicely formatted and more specific title element text for output
* in head of document, based on current view.
*
* @since Beryl 1.0
*
* @param string $title Default title text for current view.
* @param string $sep Optional separator.
* @return string The filtered title.
*/
function beryl_wp_title( $title, $sep ) {
global $paged, $page;
if ( is_feed() ) {
return $title;
}
// Add the site name.
$title .= get_bloginfo( 'name' );
// Add the site description for the home/front page.
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) ) {
$title = "$title $sep $site_description";
}
// Add a page number if necessary.
if ( $paged >= 2 || $page >= 2 ) {
$title = "$title $sep " . sprintf( __( 'Page %s', 'beryl' ), max( $paged, $page ) );
}
return $title;
}
add_filter( 'wp_title', 'beryl_wp_title', 10, 2 );
// Custom template tags for this theme.
require get_template_directory() . '/inc/template-tags.php';
// Add Theme Customizer functionality.
require get_template_directory() . '/inc/customizer.php';
/**
* Register the required plugins for this theme.
*
* In this example, we register two plugins - one included with the TGMPA library
* and one from the .org repo.
*
* The variable passed to tgmpa_register_plugins() should be an array of plugin
* arrays.
*
* This function is hooked into tgmpa_init, which is fired within the
* TGM_Plugin_Activation class constructor.
*/
function beryl_register_required_plugins() {
/**
* Array of plugin arrays. Required keys are name and slug.
* If the source is NOT from the .org repo, then source is also required.
*/
$plugins = array(
array(
'name' => 'Bootstrap 3 Shortcodes', // The plugin name
'slug' => 'bootstrap-3-shortcodes', // The plugin slug (typically the folder name)
'required' => false, // If false, the plugin is only 'recommended' instead of required
'version' => '3.3.6', // E.g. 1.0.0. If set, the active plugin must be this version or higher, otherwise a notice is presented
'force_activation' => false, // If true, plugin is activated upon theme activation and cannot be deactivated until theme switch
'force_deactivation' => false, // If true, plugin is deactivated upon theme switch, useful for theme-specific plugins
'external_url' => '', // If set, overrides default API URL and points to an external URL
)
);
/**
* Array of configuration settings. Amend each line as needed.
* If you want the default strings to be available under your own theme domain,
* leave the strings uncommented.
* Some of the strings are added into a sprintf, so see the comments at the
* end of each line for what each argument will be.
*/
$config = array(
'domain' => 'beryl', // Text domain - likely want to be the same as your theme.
'default_path' => '', // Default absolute path to pre-packaged plugins
'parent_slug' => 'themes.php', // Default parent slug
'menu' => 'install-required-plugins', // Menu slug
'has_notices' => true, // Show admin notices or not
'is_automatic' => true, // Automatically activate plugins after installation or not
'message' => '', // Message to output right before the plugins table
'strings' => array(
'page_title' => __( 'Install Required Plugins', 'beryl' ),
'menu_title' => __( 'Install Plugins', 'beryl' ),
'installing' => __( 'Installing Plugin: %s', 'beryl' ), // %1$s = plugin name
'oops' => __( 'Something went wrong with the plugin API.', 'beryl' ),
'notice_can_install_required' => _n_noop( 'This theme requires the following plugin: %1$s.', 'This theme requires the following plugins: %1$s.', 'beryl' ), // %1$s = plugin name(s)
'notice_can_install_recommended' => _n_noop( 'This theme recommends the following plugin: %1$s.', 'This theme recommends the following plugins: %1$s.', 'beryl' ), // %1$s = plugin name(s)
'notice_cannot_install' => _n_noop( 'Sorry, but you do not have the correct permissions to install the %s plugin. Contact the administrator of this site for help on getting the plugin installed.', 'Sorry, but you do not have the correct permissions to install the %s plugins. Contact the administrator of this site for help on getting the plugins installed.', 'beryl' ), // %1$s = plugin name(s)
'notice_can_activate_required' => _n_noop( 'The following required plugin is currently inactive: %1$s.', 'The following required plugins are currently inactive: %1$s.', 'beryl' ), // %1$s = plugin name(s)
'notice_can_activate_recommended' => _n_noop( 'The following recommended plugin is currently inactive: %1$s.', 'The following recommended plugins are currently inactive: %1$s.', 'beryl' ), // %1$s = plugin name(s)
'notice_cannot_activate' => _n_noop( 'Sorry, but you do not have the correct permissions to activate the %s plugin. Contact the administrator of this site for help on getting the plugin activated.', 'Sorry, but you do not have the correct permissions to activate the %s plugins. Contact the administrator of this site for help on getting the plugins activated.', 'beryl' ), // %1$s = plugin name(s)
'notice_ask_to_update' => _n_noop( 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.', 'beryl' ), // %1$s = plugin name(s)
'notice_cannot_update' => _n_noop( 'Sorry, but you do not have the correct permissions to update the %s plugin. Contact the administrator of this site for help on getting the plugin updated.', 'Sorry, but you do not have the correct permissions to update the %s plugins. Contact the administrator of this site for help on getting the plugins updated.', 'beryl' ), // %1$s = plugin name(s)
'install_link' => _n_noop( 'Begin installing plugin', 'Begin installing plugins', 'beryl' ),
'activate_link' => _n_noop( 'Activate installed plugin', 'Activate installed plugins', 'beryl' ),
'return' => __( 'Return to Required Plugins Installer', 'beryl' ),
'plugin_activated' => __( 'Plugin activated successfully.', 'beryl' ),
'complete' => __( 'All plugins installed and activated successfully. %s', 'beryl' ), // %1$s = dashboard link
'nag_type' => 'updated' // Determines admin notice type - can only be 'updated' or 'error'
)
);
tgmpa( $plugins, $config );
}
add_action( 'tgmpa_register', 'beryl_register_required_plugins' );
function beryl_admin_rating_notice() {
$user = wp_get_current_user();
?>
Hi there, data->display_name; ?>, we noticed that you've been using Beryl for a while now.
We spent many hours developing this free theme for you and we would appriciate if you supported us by rating it!
432000 ) {
add_action( 'admin_notices', 'beryl_admin_rating_notice' );
}
function beryl_dismiss_rating_notice() {
update_option('beryl_rating_notice', 'hide');
die(0);
}
add_action( 'wp_ajax_nopriv_beryl_dismiss_notice', 'beryl_dismiss_rating_notice' );
add_action( 'wp_ajax_beryl_dismiss_notice', 'beryl_dismiss_rating_notice' );
function beryl_theme_activated() {
if ( !get_option('beryl_rating_notice') ) {
update_option('beryl_rating_notice', time());
}
}
add_action('after_switch_theme', 'beryl_theme_activated');