'#f4f4f4' ) ); // Actions add_action( 'wp_enqueue_scripts', 'bento_theme_styles_scripts' ); add_action( 'admin_enqueue_scripts', 'bento_admin_scripts' ); add_action( 'admin_menu', 'bento_about_page' ); add_action( 'load-themes.php', 'bento_add_welcome_message' ); add_action( 'template_redirect', 'bento_theme_adjust_content_width' ); add_action( 'init', 'bento_page_excerpt_support' ); add_action( 'get_header', 'bento_enable_threaded_comments' ); add_action( 'tgmpa_register', 'bento_register_required_plugins' ); add_action( 'wp_ajax_ajax_pagination', 'bento_ajax_pagination' ); add_action( 'wp_ajax_nopriv_ajax_pagination', 'bento_ajax_pagination' ); add_action( 'widgets_init', 'bento_register_sidebars' ); add_action( 'comment_form_defaults', 'bento_comment_form_defaults' ); add_filter( 'comment_form_fields', 'bento_rearrange_comment_fields' ); add_action( 'comment_form_default_fields', 'bento_comment_form_fields' ); add_action( 'wp_ajax_bento_migrate_customizer_options', 'bento_migrate_customizer_options' ); add_action( 'wp_ajax_nopriv_bento_migrate_customizer_options', 'bento_migrate_customizer_options' ); // Filters add_filter( 'excerpt_more', 'bento_custom_excerpt_more' ); add_filter( 'get_custom_logo', 'bento_get_custom_logo' ); add_filter( 'get_the_excerpt', 'bento_grid_excerpt' ); add_filter( 'body_class', 'bento_extra_classes' ); add_filter( 'post_class', 'bento_has_thumb_class' ); add_filter( 'get_the_archive_title', 'bento_cleaner_archive_titles' ); add_filter( 'cmb2_admin_init', 'bento_metaboxes' ); add_filter( 'dynamic_sidebar_params', 'bento_count_footer_widgets', 50 ); // Languages load_theme_textdomain( 'bento', get_template_directory() . '/languages' ); // Initialize navigation menus register_nav_menus( array( 'primary-menu' => esc_html__( 'Primary Menu', 'bento' ), 'footer-menu' => esc_html__( 'Footer Menu', 'bento' ), ) ); // Customizer options if ( file_exists( get_template_directory() . '/includes/customizer/customizer.php' ) ) { require_once( get_template_directory() . '/includes/customizer/customizer.php' ); } add_action( 'customize_register', 'bento_customize_register' ); add_action( 'customize_register', 'bento_customizer_rename_sections' ); add_action( 'customize_controls_print_styles', 'bento_customizer_stylesheet' ); add_action( 'customize_controls_enqueue_scripts', 'bento_customizer_scripts' ); add_action( 'admin_notices', 'bento_customizer_admin_notice' ); // SiteOrigin Content Builder integration add_filter('siteorigin_panels_row_attributes', 'bento_extra_row_attr', 10, 2); add_filter('siteorigin_panels_before_row', 'bento_content_builder_row_ids', 10, 3); // WooCommerce integration remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 ); remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 ); remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10); remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 ); remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20, 0 ); remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 ); add_action( 'woocommerce_before_main_content', 'bento_woo_wrapper_start', 10 ); add_action( 'woocommerce_single_product_summary', 'bento_woo_product_title', 5 ); add_action( 'woocommerce_after_main_content', 'bento_woo_wrapper_end', 10 ); add_action( 'woocommerce_before_single_product_summary', 'bento_woo_single_product_sections_start', 20 ); add_action( 'woocommerce_after_single_product_summary', 'bento_woo_single_product_sections_end', 20 ); add_filter( 'woocommerce_enqueue_styles', 'bento_woo_dequeue_styles' ); add_filter( 'woocommerce_product_add_to_cart_text', 'bento_woo_custom_cart_button_text' ); add_filter( 'get_product_search_form', 'bento_woo_custom_product_searchform' ); add_filter( 'loop_shop_columns', 'bento_woo_loop_columns' ); add_filter( 'loop_shop_per_page', 'bento_woo_loop_perpage', 20 ); } // Register and enqueue CSS and scripts function bento_theme_styles_scripts () { // Scripts wp_enqueue_script( 'jquery-isotope', get_template_directory_uri().'/includes/isotope/isotope.pkgd.min.js', array('jquery', 'imagesloaded'), false, true ); wp_enqueue_script( 'jquery-packery', get_template_directory_uri().'/includes/isotope/packery-mode.pkgd.min.js', array('jquery', 'imagesloaded'), false, true ); wp_enqueue_script( 'jquery-fitcolumns', get_template_directory_uri().'/includes/isotope/fit-columns.js', array('jquery'), false, true ); wp_enqueue_script( 'jquery-fitvids', get_template_directory_uri().'/includes/fitvids/jquery.fitvids.js', array('jquery'), false, true ); wp_enqueue_script( 'bento-theme-scripts', get_template_directory_uri().'/includes/js/theme-scripts.js', array('jquery'), false, true ); // Styles wp_enqueue_style( 'bento-theme-styles', get_template_directory_uri().'/style.css', array( 'dashicons' ), null, 'all' ); wp_enqueue_style( 'font-awesome', get_template_directory_uri().'/includes/font-awesome/css/font-awesome.min.css', array(), null, 'all' ); wp_enqueue_style( 'google-fonts', bento_google_fonts(), array(), null ); // Passing php variables to theme scripts bento_localize_scripts(); // Inline styles for customizing the theme wp_add_inline_style( 'bento-theme-styles', bento_customizer_css() ); wp_add_inline_style( 'bento-theme-styles', bento_insert_custom_styles() ); } // Admin scripts function bento_admin_scripts () { // Enqueue scripts $screen = get_current_screen(); $edit_screens = array( 'post', 'page', 'project', 'product' ); if ( in_array( $screen->id, $edit_screens ) ) { wp_enqueue_script( 'bento-admin-scripts', get_template_directory_uri().'/includes/admin/admin-scripts.js', array('jquery'), false, true ); } $old_options = get_option( 'satori_options', 'none' ); if ( $old_options != 'none' ) { wp_enqueue_script( 'bento-migrate-scripts', get_template_directory_uri().'/includes/js/migrate-scripts.js', array('jquery'), false, true ); } if ( 'appearance_page_about-bento' == $screen->id ) { wp_enqueue_style( 'bento-admin-styles', get_template_directory_uri().'/includes/admin/admin-styles.css', array(), null, 'all' ); } // Passing php variables to admin scripts bento_localize_migrate_scripts(); } // Register theme status for the Expansion Pack function bento_active() { $current_theme = wp_get_theme(); if ( $current_theme == 'Bento' ) { return true; } else { return false; } } // Welcome notice and page // Add welcome message function bento_add_welcome_message() { $screen = get_current_screen(); if ( is_admin() && ( 'themes' == $screen->id ) && isset( $_GET['activated'] ) ) { add_action( 'admin_notices', 'bento_render_welcome_message', 99 ); } } // Display welcome message function bento_render_welcome_message() { ?>

', '' ); ?>

get( 'Version' ); $theme_actions = array( array( 'name' => 'demo', 'text' => esc_html__( 'See full demonstration', 'bento' ), 'url' => esc_url( 'http://satoristudio.net/bento/' ), 'icon' => '', ), array( 'name' => 'manual', 'text' => esc_html__( 'Detailed instructions', 'bento' ), 'url' => esc_url( 'http://satoristudio.net/bento-manual/' ), 'icon' => '', ), array( 'name' => 'support', 'text' => esc_html__( 'Visit official forum', 'bento' ), 'url' => esc_url( 'https://wordpress.org/support/theme/bento/' ), 'icon' => '', ), ); $actions_html = ''; foreach ( $theme_actions as $theme_action ) { $action = '
'.$theme_action['icon'].'
'.ucfirst($theme_action['name']).'
'.$theme_action['text'].'
'; $actions_html .= $action; } $upgrade_html = ''; $ep_features = array( array ( 'title' => esc_html__( 'Footer copyright', 'bento' ), 'text' => esc_html__( 'customize or remove the copyright statement in the footer', 'bento' ), 'url' => esc_url( '' ), ), array ( 'title' => esc_html__( 'Portfolio', 'bento' ), 'text' => esc_html__( 'add stunning corporate portfolios, online storefronts, or personal showcases.', 'bento' ), 'url' => esc_url( 'http://satoristudio.net/bento/portfolio-masonry/' ), ), array ( 'title' => esc_html__( 'Pre-built layouts', 'bento' ), 'text' => esc_html__( 'simplify the process of creating new pages using ready-made layouts.', 'bento' ), 'url' => esc_url( 'http://satoristudio.net/bento/pre-built-layouts/' ), ), array ( 'title' => esc_html__( 'Video and maps headers', 'bento' ), 'text' => esc_html__( 'make your pages stand out with custom header content.', 'bento' ), 'url' => esc_url( 'http://satoristudio.net/bento/video-background-in-header/' ), ), array ( 'title' => esc_html__( 'Preloaders', 'bento' ), 'text' => esc_html__( 'show your visitors a stylish progress animation until the page is fully loaded.', 'bento' ), 'url' => esc_url( 'http://satoristudio.net/bento/preloader/' ), ), array ( 'title' => esc_html__( 'And', 'bento' ), 'text' => esc_html__( 'tons of other cool features.', 'bento' ), 'url' => esc_url( 'http://satoristudio.net/bento-free-wordpress-theme/#expansion-pack' ), ), ); foreach ( $ep_features as $ep_feature ) { $link = ''; if ( $ep_feature['url'] != '' ) { $link = ''.esc_html__( 'Preview', 'bento' ).''; } $upgrade_html .= '
  • '.$ep_feature['title'].': '.$ep_feature['text'].' '.$link.'
  • '; } ?>

    max_num_pages; $postid = get_queried_object_id(); $bento_grid_mode = 'nogrid'; $bento_grid_setting = get_post_meta( $postid, 'bento_page_grid_mode', true ); if ( get_page_template_slug($postid) == 'grid.php' ) { if ( $bento_grid_setting == 'rows' ) { $bento_grid_mode = 'fitRows'; } else { $bento_grid_mode = 'packery'; } } $bento_full_width_grid = 'off'; if ( get_post_meta( $postid, 'bento_grid_full_width', true ) == 'on' ) { $bento_full_width_grid = 'on'; } wp_localize_script( 'bento-theme-scripts', 'bentoThemeVars', array( 'menu_config' => esc_html( get_theme_mod( 'bento_menu_config' ) ), 'fixed_menu' => esc_html( get_theme_mod( 'bento_fixed_header' ) ), 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'query_vars' => wp_json_encode( $bento_query->query ), 'max_pages' => esc_html( $bento_max_pages ), 'grid_mode' => esc_html( $bento_grid_mode ), 'full_width_grid' => esc_html( $bento_full_width_grid ), )); wp_reset_postdata(); } function bento_localize_migrate_scripts() { wp_localize_script( 'bento-migrate-scripts', 'bentoMigrateVars', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), )); } // Custom styles function bento_insert_custom_styles() { $custom_css = ''; // Grid $postid = get_queried_object_id(); if ( is_singular() && get_page_template_slug( $postid ) == 'grid.php' ) { $bento_grid_gutter = 10; $bento_grid_column = 3; $bento_grid_column_width = 33.3333; if ( get_post_meta( $postid, 'bento_page_columns', true ) > 0 ) { $bento_grid_column = esc_html( get_post_meta( $postid, 'bento_page_columns', true ) ); } $bento_grid_column_width = 100 / $bento_grid_column; $bento_gutter_setting = esc_html( get_post_meta( $postid, 'bento_page_item_margins', true ) ); if ( is_numeric($bento_gutter_setting) ) { $bento_grid_gutter = $bento_gutter_setting; } if ( strpos($bento_gutter_setting, 'px') !== false ) { $bento_grid_gutter = substr($bento_gutter_setting, 0, -2); } $bento_grid_double_width = $bento_grid_column_width * 2; $custom_css .= ' @media screen and (min-width: 10em) { .grid-item, .grid-sizer { width: 100%; } } @media screen and (min-width: 48em) { .grid-item, .grid-sizer { width: '.$bento_grid_column_width.'%; } .grid-masonry .grid-item.tile-2x1, .grid-masonry .grid-item.tile-2x2 { width: '.$bento_grid_double_width.'%; } } .grid-container { margin: 0 -'.$bento_grid_gutter.'px; } .grid-item-inner { padding: '.$bento_grid_gutter.'px; } .grid-rows .grid-item { margin-bottom: '.$bento_grid_gutter.'px; padding-bottom: '.$bento_grid_gutter.'px; } '; } // Individual page/post settings if ( is_singular() ) { $custom_css .= ' .post-header-title h1, .entry-header h1 { color: '.esc_html( get_post_meta( $postid, 'bento_title_color', true ) ).'; } .post-header-subtitle { color: '.esc_html( get_post_meta( $postid, 'bento_subtitle_color', true ) ).'; } .site-content { background-color: '.esc_html( get_post_meta( $postid, 'bento_page_background_color', true ) ).'; } '; if ( get_post_meta( $postid, 'bento_hide_title', true ) == 'on' ) { $custom_css .= ' .post-header-title h1, .entry-title:not(.grid-item-header .entry-title), .post-header-subtitle { display: none; } '; } if ( get_post_meta( $postid, 'bento_title_position', true ) == 'center' ) { $custom_css .= ' .post-header-title, .post-header-subtitle { margin-left: auto; margin-right: auto; } .post-header-title h1, .entry-header h1, .post-header-subtitle, .portfolio-filter, .post-header-cta { text-align: center; } .post-header-cta { margin-left: 0; } '; } if ( get_post_meta( $postid, 'bento_uppercase_title', true ) == 'on' ) { $custom_css .= ' .post-header-title h1, .entry-header h1 { text-transform: uppercase; } '; } $postheader = ''; if ( get_post_meta( $postid, 'bento_activate_header', true ) != '' && get_post_meta( $postid, 'bento_header_image', true ) != '' ) { $postheader = esc_url( get_post_meta( $postid, 'bento_header_image', true ) ); } else if ( has_post_thumbnail( $postid ) ) { $postheader = get_the_post_thumbnail_url( $postid, 'full' ); } if ( is_front_page() && 'page' == get_option('show_on_front') ) { if ( get_theme_mod( 'bento_front_header_image' ) != '' ) { $postheader_obj = wp_get_attachment_image_src( get_theme_mod( 'bento_front_header_image' ), 'full' ); if ( $postheader_obj ) { $postheader = esc_url( $postheader_obj[0] ); } } } if ( $postheader != '' ) { $custom_css .= ' .post-header { background-image: url('.$postheader.'); } '; } if ( get_post_meta( $postid, 'bento_activate_header', true ) != '' ) { $tile_opacity_raw = esc_html( get_post_meta( $postid, 'bento_header_overlay_opacity', true ) ); if ( $tile_opacity_raw > 1 ) { $tile_opacity_raw = $tile_opacity_raw / 10; } $custom_css .= ' .post-header-overlay { background-color: '.esc_html( get_post_meta( $postid, 'bento_header_overlay', true ) ).'; opacity: '.$tile_opacity_raw.'; } .post-header-subtitle { margin-bottom: 0; } .post-header-cta a, .post-header-cta div { border-color: '.esc_html( get_post_meta( $postid, 'bento_cta_background_color', true ) ).'; } .post-header-cta .post-header-cta-primary { background-color: '.esc_html( get_post_meta( $postid, 'bento_cta_background_color', true ) ).'; color: '.esc_html( get_post_meta( $postid, 'bento_cta_text_color', true ) ).'; } .post-header-cta .post-header-cta-secondary { color: '.esc_html( get_post_meta( $postid, 'bento_cta_background_color', true ) ).'; } .post-header-cta a:hover, .post-header-cta div:hover { border-color: '.esc_html( get_post_meta( $postid, 'bento_cta_background_color_hover', true ) ).'; } .post-header-cta .post-header-cta-primary:hover { background-color: '.esc_html( get_post_meta( $postid, 'bento_cta_background_color_hover', true ) ).'; } .post-header-cta .post-header-cta-secondary:hover { color: '.esc_html( get_post_meta( $postid, 'bento_cta_background_color_hover', true ) ).'; } .post-header-cta .post-header-cta-secondary { color: '.esc_html( get_post_meta( $postid, 'bento_cta_secondary_color', true ) ).'; border-color: '.esc_html( get_post_meta( $postid, 'bento_cta_secondary_color', true ) ).'; } .post-header-cta .post-header-cta-secondary:hover { color: '.esc_html( get_post_meta( $postid, 'bento_cta_secondary_color_hover', true ) ).'; border-color: '.esc_html( get_post_meta( $postid, 'bento_cta_secondary_color_hover', true ) ).'; } @media screen and (min-width: 48em) { .post-header-title { padding-top: '.esc_html( get_post_meta( $postid, 'bento_header_image_height', true ) ).'; padding-bottom: '.esc_html( get_post_meta( $postid, 'bento_header_image_height', true ) ).'; } } '; if ( get_post_meta( $postid, 'bento_transparent_header', true ) == 'on' && get_theme_mod( 'bento_menu_config' ) != 'side' ) { $custom_css .= ' .site-header.no-fixed-header { background: transparent; position: absolute; top: 0; width: 100%; } .primary-menu > li > .sub-menu { border-top-color: transparent; } .no-fixed-header .primary-menu > li > a, .site-header .mobile-menu-trigger, .site-header .ham-menu-trigger { color: '.esc_html( get_post_meta( $postid, 'bento_menu_color', true ) ).'; } .no-fixed-header .primary-menu > li > a:hover { color: '.esc_html( get_post_meta( $postid, 'bento_menu_color_hover', true ) ).'; } '; } } if ( is_front_page() && 'page' == get_option('show_on_front') ) { $custom_css .= ' .post-header-cta a, .post-header-cta div { border-color: '.esc_html( get_theme_mod( 'bento_front_header_primary_cta_bck_color', '#ffffff' ) ).'; } .post-header-cta .post-header-cta-primary { background-color: '.esc_html( get_theme_mod( 'bento_front_header_primary_cta_bck_color', '#ffffff' ) ).'; color: '.esc_html( get_theme_mod( 'bento_front_header_primary_cta_text_color', '#333333' ) ).'; } .post-header-cta a:hover, .post-header-cta div:hover { border-color: '.esc_html( get_theme_mod( 'bento_front_header_primary_cta_bck_color_hover', '#cccccc' ) ).'; } .post-header-cta .post-header-cta-primary:hover { background-color: '.esc_html( get_theme_mod( 'bento_front_header_primary_cta_bck_color_hover', '#cccccc' ) ).'; } .post-header-cta .post-header-cta-secondary { color: '.esc_html( get_theme_mod( 'bento_front_header_secondary_cta_color', '#ffffff' ) ).'; border-color: '.esc_html( get_theme_mod( 'bento_front_header_secondary_cta_color', '#ffffff' ) ).'; } .post-header-cta .post-header-cta-secondary:hover { color: '.esc_html( get_theme_mod( 'bento_front_header_secondary_cta_color_hover', '#cccccc' ) ).'; border-color: '.esc_html( get_theme_mod( 'bento_front_header_secondary_cta_color_hover', '#cccccc' ) ).'; } '; } } return $custom_css; } // Load custom template tags if ( file_exists( get_template_directory() . '/includes/template-tags.php' ) ) { require_once get_template_directory() . '/includes/template-tags.php'; } // Set the content width $GLOBALS['content_width'] = 1440; function bento_theme_adjust_content_width() { $content_width = $GLOBALS['content_width']; $postid = get_queried_object_id(); if ( get_theme_mod( 'bento_content_width', 1080 ) > 0 ) { $content_width = get_theme_mod( 'bento_content_width', 1080 ) + 360; if ( get_theme_mod( 'bento_website_layout', 0 ) == 1 ) { $content_width = $content_width + 120; } } if ( ( is_singular() && get_post_meta( $postid, 'bento_sidebar_layout', true ) != 'full-width' ) || is_home() ) { $content_width = $content_width * 0.7; } $GLOBALS['content_width'] = apply_filters( 'bento_theme_adjust_content_width', $content_width ); } // Add excerpt support for pages function bento_page_excerpt_support() { add_post_type_support( 'page', 'excerpt' ); } // Enable threaded comments function bento_enable_threaded_comments() { if ( !is_admin() ) { if ( is_singular() AND comments_open() AND (get_option('thread_comments') == 1) ) wp_enqueue_script('comment-reply'); } } // Register sidebars function bento_register_sidebars() { register_sidebar( array( 'name' => esc_html__( 'Sidebar', 'bento' ), 'id' => 'bento_sidebar', 'before_widget' => '
    ', 'after_widget' => '
    ', 'before_title' => '

    ', 'after_title' => '

    ', )); register_sidebar( array( 'name' => esc_html__( 'Footer', 'bento' ), 'id' => 'bento_footer', 'before_widget' => '', 'before_title' => '

    ', 'after_title' => '

    ', )); if ( class_exists( 'WooCommerce' ) ) { register_sidebar( array( 'name' => esc_html__( 'WooCommerce', 'bento' ), 'id' => 'bento_woocommerce', 'before_widget' => '
    ', 'after_widget' => '
    ', 'before_title' => '

    ', 'after_title' => '

    ', ) ); } } // Comment form defaults function bento_comment_form_defaults( $defaults ) { $defaults['label_submit'] = esc_html__( 'Submit Comment', 'bento' ); $defaults['comment_notes_before'] = ''; $defaults['comment_field'] = '
    '; return $defaults; } // Move the textarea field to the bottom of comment form function bento_rearrange_comment_fields( $fields ) { $comment_field = $fields['comment']; unset( $fields['comment'] ); $fields['comment'] = $comment_field; return $fields; } // Comment form fields function bento_comment_form_fields( $fields ) { $commenter = wp_get_current_commenter(); $req = get_option( 'require_name_email' ); $aria_req = ( $req ? " aria-required='true'" : '' ); $fields['author'] = '
    '; $fields['email'] = '
    '; $fields['url'] = ''; return $fields; } // Initialize the metabox class if ( ! class_exists( 'CMB2_Bootstrap_224' ) ) { if ( file_exists( get_template_directory() . '/includes/metaboxes/init.php' ) ) { require_once ( get_template_directory().'/includes/metaboxes/init.php' ); } } // Initialize the class for activating bundled plugins if ( file_exists( get_template_directory() . '/includes/plugin-activation/class-tgm-plugin-activation.php' ) ) { require_once ( get_template_directory().'/includes/plugin-activation/class-tgm-plugin-activation.php' ); } function bento_register_required_plugins() { $plugins = array( array( 'name' => __( 'Page Builder', 'bento' ), 'slug' => 'siteorigin-panels', 'required' => false, ), array( 'name' => __( 'Page Builder: Extra Elements', 'bento' ), 'slug' => 'so-widgets-bundle', 'required' => false, ), ); // Array of configuration settings $config = array( 'id' => 'tgmpa', // Unique ID for hashing notices for multiple instances of TGMPA. 'default_path' => '', // Default absolute path to bundled plugins. 'menu' => 'bento-install-plugins', // Menu slug. 'parent_slug' => 'themes.php', // Parent menu slug. 'capability' => 'edit_theme_options', // Capability needed to view plugin install page, should be a capability associated with the parent menu used. 'has_notices' => true, // Show admin notices or not. 'dismissable' => true, // If false, a user cannot dismiss the nag message. 'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag. 'is_automatic' => false, // Automatically activate plugins after installation or not. 'message' => '', // Message to output right before the plugins table. ); tgmpa( $plugins, $config ); } // Custom excerpt ellipses function bento_custom_excerpt_more( $more ) { return esc_html__('Continue reading', 'bento').' →'; } // Custom logo markup function bento_get_custom_logo() { $logo = ''.get_bloginfo( 'name' ).''; $logo_class = 'logo-default-link'; if ( get_theme_mod( 'custom_logo' ) ) { $custom_logo_id = get_theme_mod( 'custom_logo' ); $logo_image = wp_get_attachment_image_src( $custom_logo_id , 'full' ); $logo_full_url = $logo_mobile_url = $logo_image[0]; $logo = ''.esc_attr( get_bloginfo( 'name' ) ).''; $logo_class = 'logo-image-link'; } if ( get_theme_mod( 'bento_logo_mobile' ) != '' ) { if ( ! get_theme_mod( 'custom_logo' ) ) { $logo = ''.get_bloginfo( 'name' ).''; $logo_class = 'logo-default-link'; } $mobile_logo_id = get_theme_mod( 'bento_logo_mobile' ); $mobile_logo_image = wp_get_attachment_image_src( $mobile_logo_id , 'full' ); $logo_mobile_url = $mobile_logo_image[0]; $logo .= ''.esc_attr( get_bloginfo( 'name' ) ).''; } else if ( get_theme_mod( 'custom_logo' ) ) { $logo .= ''.esc_attr( get_bloginfo( 'name' ) ).''; } $logo_html = ''.$logo.''; return $logo_html; } // Custom excerpt for grid items function bento_grid_excerpt( $excerpt ) { global $bento_parent_page_id; if ( $bento_parent_page_id && 'grid.php' == get_page_template_slug( $bento_parent_page_id ) ) { $stripped_content = wp_strip_all_tags( strip_shortcodes( get_the_content() ) ); $content = get_extended( apply_filters( 'the_content', $stripped_content ) ); $content = str_replace( ']]>', ']]>', $content ); $length = 300; if ( ! has_excerpt() ) { $content_main = $content['main']; if ( strlen($content_main) > $length ) { $pos = strpos( $content_main, ' ', $length ); if ( $pos === false ) { $excerpt = $content_main; } else { $excerpt = substr( $content_main, 0, $pos ); } } else { $excerpt = $content_main; } } $excerpt .= '.. '; if ( get_post_format() === 'link' ) { $excerpt = bento_link_format_content(); } elseif ( get_post_format() === 'quote' ) { $excerpt = bento_quote_format_content(); } return '
    '.$excerpt.'
    '; } else { return $excerpt; } } // Extra body classes function bento_extra_classes( $classes ) { $postid = get_queried_object_id(); // Sidebar configuration if ( is_singular() ) { if ( class_exists( 'WooCommerce' ) && is_woocommerce() ) { if ( ! is_active_sidebar( 'bento_woocommerce' ) || get_post_meta( $postid, 'bento_sidebar_layout', true ) == 'full-width' || is_cart() || is_checkout() ) { $classes[] = 'no-sidebar'; } else { $classes[] = 'has-sidebar'; if ( get_post_meta( $postid, 'bento_sidebar_layout', true ) == 'left-sidebar' ) { $classes[] = 'left-sidebar'; } else { $classes[] = 'right-sidebar'; } } } else { if ( ( ! is_active_sidebar( 'bento_sidebar' ) && get_post_type( $postid ) != 'project' ) || get_post_meta( $postid, 'bento_sidebar_layout', true ) == 'full-width' ) { $classes[] = 'no-sidebar'; } else { $classes[] = 'has-sidebar'; if ( get_post_meta( $postid, 'bento_sidebar_layout', true ) != '' ) { $classes[] = esc_html( get_post_meta( $postid, 'bento_sidebar_layout', true ) ); } else { $classes[] = 'right-sidebar'; } } } } else { if ( class_exists( 'WooCommerce' ) && is_woocommerce() ) { if ( is_shop() ) { $page_id = wc_get_page_id('shop'); if ( get_post_meta( $page_id, 'bento_sidebar_layout', true ) == 'full-width' ) { $classes[] = 'no-sidebar'; } else { $classes[] = esc_html( get_post_meta( $page_id, 'bento_sidebar_layout', true ) ); $classes[] = 'has-sidebar'; } } else { if ( is_active_sidebar( 'bento_woocommerce' ) ) { $classes[] = 'has-sidebar'; $classes[] = 'right-sidebar'; } else { $classes[] = 'no-sidebar'; } } } else { if ( is_active_sidebar( 'bento_sidebar' ) ) { $classes[] = 'has-sidebar'; $classes[] = 'right-sidebar'; } else { $classes[] = 'no-sidebar'; } } } // Boxed website layout if ( get_theme_mod( 'bento_website_layout' ) == 1 ) { $classes[] = 'boxed-layout'; } // Extended header if ( get_post_meta( $postid, 'bento_activate_header', true ) == 'on' ) { $classes[] = 'extended-header'; } // Header configuration if ( get_theme_mod( 'bento_menu_config' ) == 1 ) { $classes[] = 'header-centered'; } else if ( get_theme_mod( 'bento_menu_config' ) == 2 ) { $classes[] = 'header-hamburger'; } else if ( get_theme_mod( 'bento_menu_config' ) == 3 ) { $classes[] = 'header-side'; } else { $classes[] = 'header-default'; } // WooCommerce shop columns if ( class_exists( 'WooCommerce' ) && is_shop() ) { $classes[] = 'shop-columns-'.esc_html( get_theme_mod( 'bento_wc_shop_columns' ) ); } return $classes; } // Adds a class to post depending on whether it has a thumbnail function bento_has_thumb_class( $classes ) { $postid = get_queried_object_id(); if ( has_post_thumbnail( $postid ) ) { $classes[] = 'has-thumb'; } else { $classes[] = 'no-thumb'; } return $classes; } // Remove prefixes from archive page titles function bento_cleaner_archive_titles($title) { if ( is_category() ) { $title = single_cat_title( '', false ); } elseif ( is_tag() ) { $title = single_tag_title( '', false ); } elseif ( is_author() ) { $title = '' . get_the_author() . '' ; } return $title; } // Count the number of active widgets function bento_count_footer_widgets( $params ) { global $wp_registered_widgets; global $sidebars_widgets; $widget_count = 0; if ( isset ( $sidebars_widgets['bento_footer'] ) ) { foreach ( $sidebars_widgets['bento_footer'] as $widget_id ) { if ( function_exists( 'pll_current_language' ) && is_object( $wp_registered_widgets[ $widget_id ]['callback'][0] ) ) { $widget_options = get_option( 'widget_' . $wp_registered_widgets[ $widget_id ]['callback'][0]->id_base ); $widget_number = preg_replace( '/[^0-9.]+/i', '', $widget_id ); $current_widget_options = $widget_options[ $widget_number ]; if ( $current_widget_options['pll_lang'] == pll_current_language() ) { $widget_count++; } } else { $widget_count ++; } } } if ( isset( $params[0]['id'] ) && $params[0]['id'] == 'bento_footer' ) { $class = 'class="column-'.$widget_count.' '; $params[0]['before_widget'] = str_replace('class="', $class, $params[0]['before_widget']); } return $params; } // Load more posts with ajax function bento_ajax_pagination() { $url = wp_get_referer(); $post_id = url_to_postid( $url ); global $bento_parent_page_id; $bento_parent_page_id = $post_id; $query_args = bento_grid_query(); $query_args['paged'] = $_POST['page'] + 1; $post_types = get_post_meta( $post_id, 'bento_page_content_types', true ); $query_args['post_type'] = $post_types; $bento_grid_number_items = get_post_meta( $post_id, 'bento_page_number_items', true ); if ( ctype_digit($bento_grid_number_items) && ctype_digit($bento_grid_number_items) != 0 ) { $query_args['posts_per_page'] = (int)$bento_grid_number_items; } else { $query_args['posts_per_page'] = get_option('posts_per_page'); } $pagination_query = new WP_Query( $query_args ); if ( $pagination_query->have_posts() ) { while ( $pagination_query->have_posts() ) { $pagination_query->the_post(); // Include the page content if ( get_page_template_slug( $post_id ) == 'grid.php' ) { get_template_part( 'content', 'grid' ); } else { get_template_part( 'content' ); } } } wp_reset_postdata(); die(); } // Custom query for grid pages function bento_grid_query() { $post_id = get_queried_object_id(); $bento_grid_query_args = array(); $post_types = get_post_meta( $post_id, 'bento_page_content_types', true ); $bento_grid_query_args['post_type'] = $post_types; if ( is_front_page() ) { $bento_paged = ( get_query_var('page') ) ? get_query_var('page') : 1; } else { $bento_paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; } $bento_grid_query_args['paged'] = $bento_paged; $bento_grid_number_items = get_post_meta( $post_id, 'bento_page_number_items', true ); if ( ctype_digit($bento_grid_number_items) && ctype_digit($bento_grid_number_items) != 0 ) { $bento_grid_query_args['posts_per_page'] = (int)$bento_grid_number_items; } else { $bento_grid_query_args['posts_per_page'] = get_option('posts_per_page'); } return $bento_grid_query_args; } // Page settings metaboxes function bento_metaboxes() { // Define strings $bento_prefix = 'bento_'; $bento_ep_url = wp_kses( 'Expansion Pack', array( 'a' => array( 'href' => array(), 'target' => array(), ), ) ); // Callback to display a field only on single post types function bento_show_field_on_single() { $current_screen = get_current_screen(); if ( $current_screen->id == 'page' ) { return false; } else { return true; } } // Function to add a multicheck with post types add_action( 'cmb2_render_multicheck_posttype', 'bento_render_multicheck_posttype', 10, 5 ); function bento_render_multicheck_posttype( $field, $escaped_value, $object_id, $object_type, $field_type_object ) { if ( version_compare( CMB2_VERSION, '2.2.2', '>=' ) ) { $field_type_object->type = new CMB2_Type_Radio( $field_type_object ); } $cpts = array( 'post', 'project' ); if ( class_exists( 'WooCommerce' ) ) { $cpts[] = 'product'; } $options = ''; $i = 1; $values = (array) $escaped_value; if ( $cpts ) { foreach ( $cpts as $cpt ) { $args = array( 'value' => $cpt, 'label' => $cpt, 'type' => 'checkbox', 'name' => $field->args['_name'] . '[]', ); if ( in_array( $cpt, $values ) ) { $args[ 'checked' ] = 'checked'; } if ( $cpt == 'project' && get_option( 'bento_ep_license_status' ) != 'valid' ) { $args[ 'disabled' ] = 'disabled'; } $options .= $field_type_object->list_input( $args, $i ); $i++; } } $classes = false === $field->args( 'select_all_button' ) ? 'cmb2-checkbox-list no-select-all cmb2-list' : 'cmb2-checkbox-list cmb2-list'; echo $field_type_object->radio( array( 'class' => $classes, 'options' => $options ), 'multicheck_posttype' ); } // General page/post settings $bento_general_settings = new_cmb2_box( array( 'id' => 'post_settings_metabox', 'title' => esc_html__( 'General Settings', 'bento' ), 'object_types' => array( 'post', 'page', 'project', 'product' ), 'context' => 'normal', 'priority' => 'high', 'show_names' => true, ) ); $bento_general_settings->add_field( array( 'name' => esc_html__( 'Sidebar layout', 'bento' ), 'desc' => esc_html__( 'Choose whether to display a sidebar and on which side of the content', 'bento' ), 'id' => $bento_prefix . 'sidebar_layout', 'type' => 'select', 'options' => array( 'right-sidebar' => esc_html__( 'Right Sidebar (default)', 'bento' ), 'left-sidebar' => esc_html__( 'Left Sidebar', 'bento' ), 'full-width' => esc_html__( 'Full Width', 'bento' ), ), 'default' => 'right-sidebar', ) ); $bento_general_settings->add_field( array( 'name' => esc_html__( 'Page background color', 'bento' ), 'desc' => esc_html__( 'Choose the background color for current page/post. This will override any settings in the Theme Options', 'bento' ), 'id' => $bento_prefix . 'page_background_color', 'type' => 'colorpicker', ) ); $bento_general_settings->add_field( array( 'name' => esc_html__( 'Hide featured image', 'bento' ), 'desc' => esc_html__( 'Check this option if you DO NOT want to display the featured image (thumbnail) on the page; it will still be used for the corresponding tile on the "columns" or "rows" grid pages.', 'bento' ), 'id' => $bento_prefix . 'hide_thumb', 'type' => 'checkbox', 'show_on_cb' => 'bento_show_field_on_single' ) ); $bento_general_settings->add_field( array( 'name' => esc_html__( 'Hide title', 'bento' ), 'desc' => esc_html__( 'Check this option if you DO NOT want to display the title on the page', 'bento' ), 'id' => $bento_prefix . 'hide_title', 'type' => 'checkbox', ) ); $bento_general_settings->add_field( array( 'name' => esc_html__( 'Uppercase title', 'bento' ), 'desc' => esc_html__( 'Check this option if you want the page title to be entirely in uppercase (useful for landing pages).', 'bento' ), 'id' => $bento_prefix . 'uppercase_title', 'type' => 'checkbox', ) ); $bento_general_settings->add_field( array( 'name' => esc_html__( 'Title position', 'bento' ), 'desc' => esc_html__( 'Choose the position of the title; default is left-aligned.', 'bento' ), 'id' => $bento_prefix . 'title_position', 'type' => 'select', 'options' => array( 'left' => esc_html__( 'Left-aligned (default)', 'bento' ), 'center' => esc_html__( 'Centered', 'bento' ), ), 'default' => 'left', ) ); $bento_general_settings->add_field( array( 'name' => esc_html__( 'Title color', 'bento' ), 'desc' => esc_html__( 'Choose the text color for the title of this post. This will override any settings in the Theme Options', 'bento' ), 'id' => $bento_prefix . 'title_color', 'type' => 'colorpicker', ) ); $bento_general_settings->add_field( array( 'name' => esc_html__( 'Subtitle (excerpt) color', 'bento' ), 'desc' => esc_html__( 'Choose the text color for the subtitle of this page, sourced from the Excerpt field; default is #999999 (light grey).', 'bento' ), 'id' => $bento_prefix . 'subtitle_color', 'type' => 'colorpicker', 'default' => '#999999', ) ); // Extended header settings $bento_header_settings = new_cmb2_box( array( 'id' => 'post_header_metabox', 'title' => esc_html__( 'Page Header Settings', 'bento' ), 'object_types' => array( 'post', 'page', 'project', 'product' ), 'context' => 'normal', 'priority' => 'low', 'show_names' => true, ) ); $bento_header_settings->add_field( array( 'name' => esc_html__( 'Activate extended header', 'bento' ), 'desc' => esc_html__( 'Check this box to enable extended header options such as header image and call-to-action-buttons.', 'bento' ), 'id' => $bento_prefix . 'activate_header', 'type' => 'checkbox', ) ); $bento_header_settings->add_field( array( 'name' => esc_html__( 'Header height', 'bento' ), 'desc' => esc_html__( 'Choose the title top and bottom padding, which will affect the header height; default is 10%', 'bento' ), 'id' => $bento_prefix . 'header_image_height', 'type' => 'select', 'options' => array( '' => esc_html__( 'Choose value', 'bento' ), '5%' => '5%', '10%' => esc_html__( '10% (default)', 'bento' ), '15%' => '15%', '20%' => '20%', '25%' => '25%', ), 'default' => '10%', ) ); if ( get_option( 'bento_ep_license_status' ) == 'valid' ) { $bento_header_settings->add_field( array( 'name' => esc_html__( 'Header image', 'bento' ), 'desc' => esc_html__( 'Upload the image to serve as the header; recommended size is 1400x300 pixels and above, yet mind the file size - excessively large images may worsen user experience', 'bento' ), 'id' => $bento_prefix . 'header_image', 'type' => 'file', ) ); } if ( get_option( 'bento_ep_license_status' ) == 'valid' ) { $bento_header_settings->add_field( array( 'name' => esc_html__( 'Header video', 'bento' ), 'desc' => esc_html__( 'Upload the video file to be used as header background; if this is active, the header image will serve as a placeholder for mobile devices; .mp4 files are recommended, but you can also use .ogv and .webm formats. Please mind the file size - excessively large images may worsen user experience', 'bento' ), 'id' => $bento_prefix . 'header_video_source', 'type' => 'file', ) ); } $bento_header_settings->add_field( array( 'name' => esc_html__( 'Header image overlay color', 'bento' ), 'desc' => esc_html__( 'Choose the color for the image overlay, designed to make the title text stand out more clearly', 'bento' ), 'id' => $bento_prefix . 'header_overlay', 'type' => 'colorpicker', ) ); $bento_header_settings->add_field( array( 'name' => esc_html__( 'Header image overlay opacity', 'bento' ), 'desc' => esc_html__( 'Choose the opacity level for the image overlay; 0.0 is fully transparent, 1.0 is fully opaque, default is 0.3', 'bento' ), 'id' => $bento_prefix . 'header_overlay_opacity', 'type' => 'select', 'options' => array( '0' => '0.0', '1' => '0.1', '2' => '0.2', '3' => esc_html__( '0.3 (default)', 'bento' ), '4' => '0.4', '5' => '0.5', '6' => '0.6', '7' => '0.7', '8' => '0.8', '9' => '0.9', '10' => '1.0', ), 'default' => '0.3', 'show_option_none' => esc_html__( 'Choose value', 'bento' ), ) ); $bento_header_settings->add_field( array( 'name' => esc_html__( 'Transparent website header', 'bento' ), 'desc' => esc_html__( 'Check this option to make the website header (the top area with the menu and the logo) look like a transparent overlay on top of the header image on this page.', 'bento' ), 'id' => $bento_prefix . 'transparent_header', 'type' => 'checkbox', ) ); $bento_header_settings->add_field( array( 'name' => esc_html__( 'Website menu color on this page', 'bento' ), 'desc' => esc_html__( 'Choose the color for the website menu on this page (useful for the transparent header).', 'bento' ), 'id' => $bento_prefix . 'menu_color', 'type' => 'colorpicker', ) ); $bento_header_settings->add_field( array( 'name' => esc_html__( 'Website menu mouse-hover color on this page', 'bento' ), 'desc' => esc_html__( 'Choose the mouse-over color for the website menu on this page (useful for the transparent header).', 'bento' ), 'id' => $bento_prefix . 'menu_color_hover', 'type' => 'colorpicker', ) ); // Map header settings if ( get_option( 'bento_ep_license_status' ) == 'valid' ) { $bento_headermap_settings = new_cmb2_box( array( 'id' => 'post_headermap_metabox', 'title' => esc_html__( 'Map Header', 'bento' ), 'object_types' => array( 'page' ), 'context' => 'normal', 'priority' => 'low', 'show_names' => true, ) ); $bento_headermap_settings->add_field( array( 'name' => esc_html__( 'Activate Google Maps header', 'bento' ), 'desc' => esc_html__( 'Check this box to enable Google Maps header; note that this will deactivate the extended header image/video.', 'bento' ), 'id' => $bento_prefix . 'activate_headermap', 'type' => 'checkbox', ) ); $maps_key_url = 'https://developers.google.com/maps/documentation/javascript/get-api-key#get-an-api-key'; $maps_key_text = sprintf( wp_kses( esc_html__( 'Input the API key for this instance of Maps - you can find detailed instructions on generating your API key here.', 'bento' ), array( 'a' => array( 'href' => array(), 'target' => array() ) ) ), esc_url( $maps_key_url ) ); $bento_headermap_settings->add_field( array( 'name' => esc_html__( 'Google Maps API key', 'bento' ), 'desc' => $maps_key_text, 'id' => $bento_prefix . 'headermap_key', 'type' => 'text', ) ); $bento_headermap_settings->add_field( array( 'name' => esc_html__( 'Map center location', 'bento' ), 'desc' => esc_html__( 'Input the address (country, city, or exact address) of the location on which to center the map.', 'bento' ), 'id' => $bento_prefix . 'headermap_center', 'type' => 'text', ) ); $bento_headermap_settings->add_field( array( 'name' => esc_html__( 'Map height', 'bento' ), 'desc' => esc_html__( 'Select the height of the map, in pixels.', 'bento' ), 'id' => $bento_prefix . 'headermap_height', 'type' => 'select', 'options' => array( '100' => '100', '200' => '200', '300' => '300', '400' => esc_html__( '400 (default)', 'bento' ), '500' => '500', '600' => '600', '700' => '700', ), 'default' => '400', ) ); $bento_headermap_settings->add_field( array( 'name' => esc_html__( 'Map zoom level', 'bento' ), 'desc' => esc_html__( 'Choose the zoom level for the map, 1 being entire world and 20 being individual buildings.', 'bento' ), 'id' => $bento_prefix . 'headermap_zoom', 'type' => 'select', 'options' => array( 1 => '1', 2 => '2', 3 => '3', 4 => '4', 5 => '5', 6 => '6', 7 => '7', 8 => '8', 9 => '9', 10 => '10', 11 => '11', 12 => '12', 13 => '13', 14 => '14', 15 => esc_html__( '15 (default)', 'bento' ), 16 => '16', 17 => '17', 18 => '18', 19 => '19', 20 => '20', ), 'default' => 15, ) ); $snazzymaps_url = 'https://snazzymaps.com'; $snazzymaps_link = sprintf( wp_kses( esc_html__( 'You can insert the code for custom map styling here; check Snazzymaps.com for ready-made snippets: when on the page of the particular style, click on the "Copy" button or simply select and copy the code under the "Javascript Style Array" heading.', 'bento' ), array( 'a' => array( 'href' => array() ) ) ), esc_url( $snazzymaps_url ) ); $bento_headermap_settings->add_field( array( 'name' => esc_html__( 'Map custom style', 'bento' ), 'desc' => $snazzymaps_link, 'id' => $bento_prefix . 'headermap_style', 'type' => 'textarea', ) ); } // Masonry tile settings $bento_tile_settings = new_cmb2_box( array( 'id' => 'tile_settings_metabox', 'title' => esc_html__( 'Masonry Tile Settings / Only for displaying on "Grid" page template with "Masonry" grid type', 'bento' ), 'object_types' => array( 'post', 'project', 'product' ), 'context' => 'normal', 'priority' => 'low', 'show_names' => true, ) ); $bento_tile_settings->add_field( array( 'name' => esc_html__( 'Tile size', 'bento' ), 'desc' => esc_html__( 'Choose the size of the tile relative to the default 1x1 tile (defined by the number of columns in the grid)', 'bento' ), 'id' => $bento_prefix . 'tile_size', 'type' => 'select', 'options' => array( '1x1' => esc_html__( '1x1 (default)', 'bento' ), '1x2' => '1x2', '2x1' => '2x1', '2x2' => '2x2', ), 'default' => '1x1', ) ); $bento_tile_settings->add_field( array( 'name' => esc_html__( 'Tile overlay color', 'bento' ), 'desc' => esc_html__( 'Choose the color for an overlay for the tile background image; default is #666666 (grey)', 'bento' ), 'id' => $bento_prefix . 'tile_overlay_color', 'type' => 'colorpicker', 'default' => '#666666', ) ); if ( get_option( 'bento_ep_license_status' ) == 'valid' ) { $bento_tile_settings->add_field( array( 'name' => esc_html__( 'Tile image', 'bento' ), 'desc' => esc_html__( 'Upload the image to be used in the tile; if this field is empty, the featured image (thumbnail) will be used.', 'bento' ), 'id' => $bento_prefix . 'tile_image', 'type' => 'file', ) ); } $bento_tile_settings->add_field( array( 'name' => esc_html__( 'Tile overlay opacity', 'bento' ), 'desc' => esc_html__( 'Select the opacity level for an overlay for the tile background image, 0 is fully transparent (default is 0.6)', 'bento' ), 'id' => $bento_prefix . 'tile_overlay_opacity', 'type' => 'select', 'options' => array( '0' => '0.0', '1' => '0.1', '2' => '0.2', '3' => '0.3', '4' => '0.4', '5' => '0.5', '6' => esc_html__( '0.6 (default)', 'bento' ), '7' => '0.7', '8' => '0.8', '9' => '0.9', '10' => '1.0', ), 'default' => '0.6', 'show_option_none' => esc_html__( 'Choose value', 'bento' ), ) ); $bento_tile_settings->add_field( array( 'name' => esc_html__( 'Tile text color', 'bento' ), 'desc' => esc_html__( 'Choose the color for the text inside the tile; default is #ffffff (white)', 'bento' ), 'id' => $bento_prefix . 'tile_text_color', 'type' => 'colorpicker', 'default' => '#ffffff', ) ); $bento_tile_settings->add_field( array( 'name' => esc_html__( 'Tile text size', 'bento' ), 'desc' => esc_html__( 'Choose the text size for the tile; default is 16px', 'bento' ), 'id' => $bento_prefix . 'tile_text_size', 'type' => 'select', 'options' => array( '12' => '12', '13' => '13', '14' => '14', '16' => esc_html__( '16 (default)', 'bento' ), '18' => '18', '20' => '20', '24' => '24', '28' => '28', ), 'default' => '16', ) ); // Grid page settings $bento_grid_settings = new_cmb2_box( array( 'id' => 'grid_settings_metabox', 'title' => esc_html__( 'Grid Settings', 'bento' ), 'object_types' => array( 'page' ), 'context' => 'normal', 'priority' => 'low', 'show_names' => true, ) ); $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Grid mode', 'bento' ), 'desc' => esc_html__( 'Choose which grid type to use on this page', 'bento' ), 'id' => $bento_prefix . 'page_grid_mode', 'type' => 'select', 'options' => array( 'columns' => 'Columns', 'masonry' => 'Masonry', 'rows' => 'Rows', ), 'default' => 'columns', ) ); $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Number of columns', 'bento' ), 'desc' => esc_html__( 'Select the number of columns in the grid or number of base tiles per line in masonry', 'bento' ), 'id' => $bento_prefix . 'page_columns', 'type' => 'select', 'options' => array( '1' => '1', '2' => '2', '3' => esc_html__( '3 (default)', 'bento' ), '4' => '4', '5' => '5', '6' => '6', ), 'default' => '3', ) ); if ( get_option( 'bento_ep_license_status' ) == 'valid' ) { $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Content types', 'bento' ), 'id' => $bento_prefix . 'page_content_types', 'type' => 'multicheck_posttype', 'default' => 'post', ) ); } else { $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Content types', 'bento' ), 'desc' => sprintf( esc_html__( 'Install the %s to use the "project" (portfolio) content type', 'bento' ), $bento_ep_url ), 'id' => $bento_prefix . 'page_content_types', 'type' => 'multicheck_posttype', 'default' => 'post', ) ); } $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Items per page', 'bento' ), 'desc' => esc_html__( 'Input the number of items to display per page; default is the number set in "Settings - Reading" admin section', 'bento' ), 'id' => $bento_prefix . 'page_number_items', 'type' => 'text_small', 'default' => '10', ) ); $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Item margins', 'bento' ), 'desc' => esc_html__( 'Input the margin width in pixels (default is 10)', 'bento' ), 'id' => $bento_prefix . 'page_item_margins', 'type' => 'text_small', 'default' => '10', ) ); $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Hide tile overlays', 'bento' ), 'desc' => esc_html__( 'Only display tile overlays in masonry on mouse hover', 'bento' ), 'id' => $bento_prefix . 'hide_tile_overlays', 'type' => 'checkbox', ) ); $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Force full width', 'bento' ), 'desc' => esc_html__( 'Check this option if you want the grid to stretch the entire width of the screen', 'bento' ), 'id' => $bento_prefix . 'grid_full_width', 'type' => 'checkbox', ) ); $bento_grid_settings->add_field( array( 'name' => esc_html__( 'Load items on same page', 'bento' ), 'desc' => esc_html__( 'Replace the standard pagination with a button which loads next items without refreshing the page', 'bento' ), 'id' => $bento_prefix . 'page_ajax_load', 'type' => 'checkbox', ) ); // SEO settings if ( get_option( 'bento_ep_license_status' ) == 'valid' ) { $bento_seo_settings = new_cmb2_box( array( 'id' => 'seo_settings_metabox', 'title' => esc_html__( 'SEO Settings', 'bento' ), 'object_types' => array( 'post', 'page', 'project', 'product' ), 'context' => 'normal', 'priority' => 'low', 'show_names' => true, ) ); $bento_seo_settings->add_field( array( 'name' => esc_html__( 'Meta title', 'bento' ), 'desc' => esc_html__( 'Input the meta title - the text to be used by search engines as well as browser tabs (recommended max length - 60 symbols); the post title will be used by default if this field is empty.', 'bento' ), 'id' => $bento_prefix . 'meta_title', 'type' => 'text', ) ); $bento_seo_settings->add_field( array( 'name' => esc_html__( 'Meta description', 'bento' ), 'desc' => esc_html__( 'Input the meta description - the text to be used by search engines on search result pages (recommended max length - 160 symbols); the first part of the post body will be used by default is this field is left blank.', 'bento' ), 'id' => $bento_prefix . 'meta_description', 'type' => 'textarea', 'attributes' => array( 'rows' => 3, ), ) ); } } // SiteOrigin Content Builder integration // Add extra attribute to rows function bento_extra_row_attr( $attributes, $grid ) { if ( ! empty( $grid['style'] ) ) { if ( ! empty ( $grid['style']['class'] ) ) { $attributes['data-extraid'] = $grid['style']['class']; } } return $attributes; } // Add divs with ids before each row which has extra classes (useful for one-page layouts) function bento_content_builder_row_ids( $code, $grid, $attr ) { if ( ! empty( $attr['data-extraid'] ) ) { $rowclasses = $attr['data-extraid']; $extradiv = ''; return $extradiv; } } // WooCommerce integration // Declare new content wrappers function bento_woo_wrapper_start() { echo '
    '; } function bento_woo_wrapper_end() { echo '
    '; if ( is_shop() ) { $page_id = get_option( 'woocommerce_shop_page_id' ); } else { $page_id = get_queried_object_id(); } if ( is_active_sidebar( 'bento_woocommerce' ) ) { if ( get_post_meta( $page_id, 'bento_sidebar_layout', true ) != 'full-width' || is_product_category() ) { echo ''; } } echo '
    '; } // Remove plugin styling function bento_woo_dequeue_styles( $enqueue_styles ) { unset( $enqueue_styles['woocommerce-general'] ); return $enqueue_styles; } // Hide image placeholder for products without thumbnails function woocommerce_template_loop_product_thumbnail() { global $post; if ( has_post_thumbnail() ) { echo get_the_post_thumbnail( $post->ID, 'shop_catalog' ); } } // Change the "Add to cart" button text function bento_woo_custom_cart_button_text() { return ''; } // Hide product title if respective option is selected function bento_woo_product_title() { $page_id = get_queried_object_id(); if ( get_post_meta( $page_id, 'bento_hide_title', true) != 'on' ) { the_title( '

    ', '

    ' ); } } // Custom number of products per shop page function bento_woo_loop_perpage() { $bento_wc_shop_num = esc_html( get_theme_mod( 'bento_wc_shop_number_items' ) ); return $bento_wc_shop_num; } // Custom number of columns on the shop page function bento_woo_loop_columns() { $bento_wc_shop_col = 3; $bento_wc_settings_shop_col = (int)get_theme_mod( 'bento_wc_shop_columns' ); if ( is_int($bento_wc_settings_shop_col) && $bento_wc_settings_shop_col > 0 ) $bento_wc_shop_col = $bento_wc_settings_shop_col; return $bento_wc_shop_col; } // Adjust single product layout so that the sections flow more naturally function bento_woo_single_product_sections_start() { echo '
    '; } function bento_woo_single_product_sections_end() { echo '
    '; woocommerce_output_related_products(); } // Custom search form function bento_woo_custom_product_searchform( $form ) { $form = ' '; return $form; } ?>