array( 'width' => 1600, 'height' => 9999, 'crop' => false, 'label' => esc_html__( 'Featured', 'primer' ), ), 'primer-hero' => array( 'width' => 2400, 'height' => 1300, 'crop' => array( 'center', 'center' ), 'label' => esc_html__( 'Hero', 'primer' ), ), ) ); foreach ( $primer_image_sizes as $name => &$args ) { if ( empty( $name ) || empty( $args['width'] ) || empty( $args['height'] ) ) { unset( $primer_image_sizes[ $name ] ); continue; } $args['crop'] = ! empty( $args['crop'] ) ? $args['crop'] : false; $args['label'] = ! empty( $args['label'] ) ? $args['label'] : ucwords( str_replace( array( '-', '_' ), ' ', $name ) ); add_image_size( sanitize_key( $name ), absint( $args['width'] ), absint( $args['height'] ), $args['crop'] ); } if ( $primer_image_sizes ) { add_filter( 'image_size_names_choose', 'primer_image_size_names_choose' ); } /** * Enable support for Automatic Feed Links. * * @link https://developer.wordpress.org/reference/functions/add_theme_support/#feed-links * @since 1.0.0 */ add_theme_support( 'automatic-feed-links' ); /** * Enable support for plugins and themes to manage the document title tag. * * @link https://developer.wordpress.org/reference/functions/add_theme_support/#title-tag * @since 1.0.0 */ add_theme_support( 'title-tag' ); /** * Enable support for Post Thumbnails on posts and pages. * * @link https://developer.wordpress.org/reference/functions/add_theme_support/#post-thumbnails * @since 1.0.0 */ add_theme_support( 'post-thumbnails' ); /** * Enable support for customizer selective refresh. * * @link https://developer.wordpress.org/reference/functions/add_theme_support/#customize-selective-refresh-widgets * @since 1.0.0 */ add_theme_support( 'customize-selective-refresh-widgets' ); /** * Register custom Custom Navigation Menus. * * @link https://developer.wordpress.org/reference/functions/register_nav_menus/ * @since 1.0.0 */ register_nav_menus( /** * Filter registered nav menus. * * @since 1.0.0 * * @var array */ (array) apply_filters( 'primer_nav_menus', array( 'primary' => esc_html__( 'Primary Menu', 'primer' ), 'social' => esc_html__( 'Social Menu', 'primer' ), 'footer' => esc_html__( 'Footer Menu', 'primer' ), ) ) ); /** * Enable support for HTML5 markup. * * @link https://codex.wordpress.org/Function_Reference/add_theme_support#HTML5 * @since 1.0.0 */ add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', ) ); /** * Enable support for Post Formats. * * @link https://codex.wordpress.org/Function_Reference/add_theme_support#Post_Formats * @since 1.0.0 */ add_theme_support( 'post-formats', array( 'aside', 'image', 'video', 'quote', 'link', ) ); } add_action( 'after_setup_theme', 'primer_setup' ); /** * Register image size labels. * * @filter image_size_names_choose * @since 1.0.0 * * @param array $size_names Array of image sizes and their names. * * @return array */ function primer_image_size_names_choose( $size_names ) { global $primer_image_sizes; $labels = array_combine( array_keys( $primer_image_sizes ), wp_list_pluck( $primer_image_sizes, 'label' ) ); return array_merge( $size_names, $labels ); } /** * Sets the content width in pixels, based on the theme layout. * * Priority 0 to make it available to lower priority callbacks. * * @action after_setup_theme * @global int $content_width * @since 1.0.0 */ function primer_content_width() { $layout = primer_get_layout(); $content_width = ( 'one-column-wide' === $layout ) ? 1068 : 688; /** * Filter the content width in pixels. * * @since 1.0.0 * * @param string $layout * * @var int */ $GLOBALS['content_width'] = (int) apply_filters( 'primer_content_width', $content_width, $layout ); } add_action( 'after_setup_theme', 'primer_content_width', 0 ); /** * Enable support for custom editor style. * * @link https://developer.wordpress.org/reference/functions/add_editor_style/ * @since 1.0.0 */ add_action( 'admin_init', 'add_editor_style', 10, 0 ); /** * Register sidebar areas. * * @link http://codex.wordpress.org/Function_Reference/register_sidebar * @since 1.0.0 */ function primer_register_sidebars() { /** * Filter registered sidebars areas. * * @since 1.0.0 * * @var array */ $sidebars = (array) apply_filters( 'primer_sidebars', array( 'sidebar-1' => array( 'name' => esc_html__( 'Sidebar', 'primer' ), 'description' => esc_html__( 'The primary sidebar appears alongside the content of every page, post, archive, and search template.', 'primer' ), 'before_widget' => '', 'before_title' => '