This repository has been archived on 2023-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
Omphaloskepsis/plugins/jetpack/modules/minileven/theme/pub/minileven/functions.php
2018-03-21 18:19:20 +00:00

263 lines
8.3 KiB
PHP

<?php
/**
* Minileven 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 to change core functionality.
*
* The first function, minileven_setup(), sets up the theme by registering support
* for various features in WordPress, such as post thumbnails, navigation menus, and the like.
*
* @package Minileven
*/
/**
* Set the content width based on the theme's design and stylesheet.
*/
if ( ! isset( $content_width ) )
$content_width = 584;
/**
* Tell WordPress to run minileven_setup() when the 'after_setup_theme' hook is run.
*/
add_action( 'after_setup_theme', 'minileven_setup' );
if ( ! function_exists( 'minileven_setup' ) ):
/**
* Sets up theme defaults and registers support for various WordPress features.
*/
function minileven_setup() {
global $wp_version;
/**
* Custom template tags for this theme.
*/
require( get_template_directory() . '/inc/template-tags.php' );
/**
* Custom functions that act independently of the theme templates
*/
require( get_template_directory() . '/inc/tweaks.php' );
/**
* Implement the Custom Header functions
*/
require( get_template_directory() . '/inc/custom-header.php' );
/* Make Minileven available for translation.
* Translations can be added to the /languages/ directory.
* If you're building a theme based on Minileven, use a find and replace
* to change 'minileven' to the name of your theme in all the template files.
*/
/* Don't load a minileven textdomain, as it uses the Jetpack textdomain.
load_theme_textdomain( 'minileven', get_template_directory() . '/languages' );
*/
// Add default posts and comments RSS feed links to <head>.
add_theme_support( 'automatic-feed-links' );
// This theme uses wp_nav_menu() in one location.
register_nav_menu( 'primary', __( 'Primary Menu', 'jetpack' ) );
// Add support for a variety of post formats
add_theme_support( 'post-formats', array( 'gallery' ) );
// Add support for custom backgrounds
add_theme_support( 'custom-background' );
// Add support for post thumbnails
add_theme_support( 'post-thumbnails' );
}
endif; // minileven_setup
/**
* Enqueue scripts and styles
*/
function minileven_scripts() {
global $post;
wp_enqueue_style( 'style', get_stylesheet_uri() );
wp_enqueue_script( 'small-menu', get_template_directory_uri() . '/js/small-menu.js', array( 'jquery' ), '20120206', true );
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'minileven_scripts' );
function minileven_fonts() {
/* translators: If there are characters in your language that are not supported
by Open Sans, translate this to 'off'. Do not translate into your own language. */
if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'jetpack' ) ) {
$opensans_subsets = 'latin,latin-ext';
/* translators: To add an additional Open Sans character subset specific to your language, translate
this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. */
$opensans_subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'jetpack' );
if ( 'cyrillic' == $opensans_subset )
$opensans_subsets .= ',cyrillic,cyrillic-ext';
elseif ( 'greek' == $opensans_subset )
$opensans_subsets .= ',greek,greek-ext';
elseif ( 'vietnamese' == $opensans_subset )
$opensans_subsets .= ',vietnamese';
$opensans_query_args = array(
'family' => 'Open+Sans:200,200italic,300,300italic,400,400italic,600,600italic,700,700italic',
'subset' => $opensans_subsets,
);
wp_register_style( 'minileven-open-sans', add_query_arg( $opensans_query_args, "//fonts.googleapis.com/css" ), array(), null );
}
}
add_action( 'init', 'minileven_fonts' );
/**
* Register our sidebars and widgetized areas.
* @since Minileven 1.0
*/
function minileven_widgets_init() {
register_sidebar( array(
'name' => __( 'Main Sidebar', 'jetpack' ),
'id' => 'sidebar-1',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => "</aside>",
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
}
add_action( 'widgets_init', 'minileven_widgets_init' );
function minileven_posts_per_page() {
return 5;
}
add_filter('pre_option_posts_per_page', 'minileven_posts_per_page');
/**
* Determine the currently active theme.
*/
function minileven_actual_current_theme() {
$removed = remove_action( 'option_stylesheet', 'jetpack_mobile_stylesheet' );
$stylesheet = get_option( 'stylesheet' );
if ( $removed )
add_action( 'option_stylesheet', 'jetpack_mobile_stylesheet' );
return $stylesheet;
}
/* This function grabs the location of the custom menus from the current theme. If no menu is set in a location
* it will return a boolean "false". This function helps Minileven know which custom menu to display. */
function minileven_get_menu_location() {
$theme_slug = minileven_actual_current_theme();
$mods = get_option( "theme_mods_{$theme_slug}" );
if ( has_filter( 'jetpack_mobile_theme_menu' ) ) {
/**
* Filter the menu displayed in the Mobile Theme.
*
* @module minileven
*
* @since 3.4.0
*
* @param int $menu_id ID of the menu to display.
*/
return array( 'primary' => apply_filters( 'jetpack_mobile_theme_menu', $menu_id ) );
}
if ( isset( $mods['nav_menu_locations'] ) && ! empty( $mods['nav_menu_locations'] ) )
return $mods['nav_menu_locations'];
return false;
}
/* This function grabs the custom background image from the user's current theme so that Minileven can display it. */
function minileven_get_background() {
$theme_slug = minileven_actual_current_theme();
$mods = get_option( "theme_mods_$theme_slug" );
if ( ! empty( $mods ) ) {
return array(
'color' => isset( $mods['background_color'] ) ? $mods['background_color'] : null,
'image' => isset( $mods['background_image'] ) ? $mods['background_image'] : null,
'repeat' => isset( $mods['background_repeat'] ) ? $mods['background_repeat'] : null,
'position' => isset( $mods['background_position_x'] ) ? $mods['background_position_x'] : null,
'attachment' => isset( $mods['attachment'] ) ? $mods['attachment'] : null,
);
}
return false;
}
/**
* If the user has set a static front page, show all posts on the front page, instead of a static page.
*/
if ( '1' == get_option( 'wp_mobile_static_front_page' ) )
add_filter( 'pre_option_page_on_front', '__return_zero' );
/**
* Retrieves the IDs for images in a gallery.
*
* @uses get_post_galleries() first, if available. Falls back to shortcode parsing,
* then as last option uses a get_posts() call.
*
* @return array List of image IDs from the post gallery.
*/
function minileven_get_gallery_images() {
$images = array();
if ( function_exists( 'get_post_galleries' ) ) {
$galleries = get_post_galleries( get_the_ID(), false );
if ( isset( $galleries[0]['ids'] ) )
$images = explode( ',', $galleries[0]['ids'] );
} else {
$pattern = get_shortcode_regex();
preg_match( "/$pattern/s", get_the_content(), $match );
$atts = shortcode_parse_atts( $match[3] );
if ( isset( $atts['ids'] ) )
$images = explode( ',', $atts['ids'] );
}
if ( ! $images ) {
$images = get_posts( array(
'fields' => 'ids',
'numberposts' => 999,
'order' => 'ASC',
'orderby' => 'menu_order',
'post_mime_type' => 'image',
'post_parent' => get_the_ID(),
'post_type' => 'attachment',
) );
}
return $images;
}
/**
* Allow plugins to filter where Featured Images are displayed.
* Default has Featured Images disabled on single view and pages.
*
* @uses is_search()
* @uses apply_filters()
* @return bool
*/
function minileven_show_featured_images() {
$enabled = ( is_home() || is_search() || is_archive() ) ? true : false;
/**
* Filter where featured images are displayed in the Mobile Theme.
*
* By setting $enabled to true or false using functions like is_home() or
* is_archive(), you can control where featured images are be displayed.
*
* @module minileven
*
* @since 3.2.0
*
* @param bool $enabled True if featured images should be displayed, false if not.
*/
return (bool) apply_filters( 'minileven_show_featured_images', $enabled );
}