>> ACTION: aweaver_nav <<< ================================ if ( ! has_action( 'aweaver_nav' ) ) : // plugin can override add_action( 'aweaver_nav', 'aweaver_nav_action' ); function aweaver_nav_action( $where ) { // displays primary and secondary menus in the proper place switch ( $where ) { case 'top': if ( aweaver_getopt( 'm_primary_move' ) ) { get_template_part( 'templates/menu', 'primary' ); } break; case 'bottom': default: if ( ! aweaver_getopt( 'm_primary_move' ) ) { get_template_part( 'templates/menu', 'primary' ); } break; } } endif; //-- // =============================== >>> ACTION: aweaver_after_theme_activate <<< ================================ // remember some things when switching themes add_action( 'after_switch_theme', 'aweaver_after_theme_activate_action' ); function aweaver_after_theme_activate_action() { // fires when theme activated // restore our last set of saved settings $fix = get_theme_mod( 'saved_nav_menu_locations' ); set_theme_mod( 'nav_menu_locations', $fix ); } add_action( 'switch_theme', 'aweaver_theme_deactivate_action' ); function aweaver_theme_deactivate_action() { // fires when new theme has switched in. Theme settings will be for NEW theme $old_theme = get_option( 'theme_switched' ); $old = aweaver_get_theme_mod( 'nav_menu_locations', $old_theme ); aweaver_set_theme_mod( 'saved_nav_menu_locations', $old, $old_theme ); $old = aweaver_get_theme_mod( 'sidebars_widgets', $old_theme ); aweaver_set_theme_mod( 'saved_sidebars_widgets', $old, $old_theme ); } function aweaver_get_theme_mods( $theme_slug ) { $mods = get_option( "theme_mods_$theme_slug" ); return $mods; } /** * Retrieve theme modification value for the OLD theme. */ function aweaver_get_theme_mod( $name, $theme ) { $mods = aweaver_get_theme_mods( $theme ); if ( isset( $mods[ $name ] ) ) { /** * Filters the theme modification, or 'theme_mod', value. */ return apply_filters( "theme_mod_{$name}", $mods[ $name ] ); } return false; } /** * Update theme modification value for the Specified theme. * */ function aweaver_set_theme_mod( $name, $value, $theme ) { $mods = aweaver_get_theme_mods( $theme ); $old_value = isset( $mods[ $name ] ) ? $mods[ $name ] : false; /** * Filters the theme mod value on save. * */ $mods[ $name ] = apply_filters( "pre_set_theme_mod_{$name}", $value, $old_value ); //**** $theme = get_option( 'stylesheet' ); update_option( "theme_mods_$theme", $mods ); } /* --------------------------------- CALLBACKS ------------------------------- * */ // ============================================= >>> CALLBACK: aweaver_page_menu <<< ====================================== function aweaver_page_menu( $args = array() ) { // this is the callback for the default menu $defaults = array( 'sort_column' => 'menu_order, post_title', 'menu_class' => 'wvrx-menu', 'echo' => true, 'link_before' => '', 'link_after' => '' ); $args = wp_parse_args( $args, $defaults ); $menu = ''; $list_args = $args; if ( aweaver_getopt( 'menu_nohome' ) ) { $args['show_home'] = false; } else { $args['show_home'] = true; } // look for pages to hide from menu $ex_list = ''; // Show Home in the menu if ( $args['show_home'] ) { $text = esc_html__( 'Home', 'absolute-weaver' ); $class = 'class="default-home-menu-item"'; if ( is_home() || is_front_page() ) { $class = 'class="default-home-menu-item current_page_item"'; } $menu .= '
  • ' . $args['link_before'] . $text . $args['link_after'] . '
  • '; // If the front page is a page, add it to the exclude list if ( get_option( 'show_on_front' ) == 'page' ) { if ( ! empty( $list_args['exclude'] ) ) { $list_args['exclude'] .= ','; } else { $list_args['exclude'] = ''; } $list_args['exclude'] .= get_option( 'page_on_front' ); } } $list_args['echo'] = false; $list_args['title_li'] = ''; $menu .= str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages( $list_args ) ); $site_title = ''; if ( aweaver_getopt( 'm_primary_site_title_left' ) ) { $classt = 'site-title-on-menu wvrx-menu-html wvrx-menu-left'; // font-family $val = aweaver_getopt( 'site_title_font_family' ); if ( $val && $val != 'default' ) { $classt .= ' font-' . $val; } $classt .= aweaver_get_bold_italic( 'site_title', 'bold' ); $classt .= aweaver_get_bold_italic( 'site_title', 'italic' ); $site_title = '' . get_bloginfo( 'name' ) . ''; } $left = aweaver_getopt( 'm_primary_html_left' ); $right = aweaver_getopt( 'm_primary_html_right' ); if ( aweaver_getopt( 'm_primary_logo_left' ) ) { $custom_logo_url = aweaver_get_wp_custom_logo_url(); // We have a logo. Logo is go. if ( $custom_logo_url ) { $left = apply_filters( 'aweaver_menu_logo', 'logo', $custom_logo_url ) . $left; // +since: 3.1.10: add alt= } } if ( $left ) { $hide = ' ' . aweaver_getopt( 'm_primary_hide_left' ); $left = '' . do_shortcode( $left ) . ''; } if ( aweaver_getopt( 'use_smartmenus' ) ) { // Plus option $hamburger = apply_filters( 'aweaver_mobile_menu_name', aweaver_getopt( 'm_primary_hamburger' ) ); if ( $hamburger == '' ) { $alt = aweaver_getopt( 'mobile_alt_label' ); if ( $alt == '' ) { $hamburger = ''; } else { $hamburger = '' . $alt . ''; } } $left = '' . "{$hamburger}{$left}"; // +since: 3.1.10: remove empty href="" } if ( ! $left && is_customize_preview() ) { $hide = ' ' . aweaver_getopt( 'm_primary_hide_left' ); $left = ''; } if ( $right ) { $hide = aweaver_getopt( 'm_primary_hide_right' ); $right = '' . do_shortcode( $right ) . ''; } if ( ! $right && is_customize_preview() ) { $hide = aweaver_getopt( 'm_primary_hide_right' ); $right = ''; } if ( aweaver_getopt( 'm_primary_search' ) ) { $right = ' ' . get_search_form( false ) . ' ' . $right; } if ( $menu ) { $menu = $left . $site_title . $right . '
    '; } // add the styling classes here $menu = '
    ' . $menu . "
    \n"; if ( $args['echo'] ) { echo aweaver_filter_text( $menu ); } else { return $menu; } } //-- // ------ smart menus ------ function aweaver_smartmenu( $menu_id, $menu_opt ) { $def = "{subIndicatorsText:'',subMenusMinWidth:'1em',subMenusMaxWidth:'25em'}"; // build jQuery script to invoke menu // all strings generated internally - safe to not escape ?> >> FILTER: aweaver_get_custom_logo <<< ================================ add_filter( 'get_custom_logo', 'aweaver_get_custom_logo', 10, 2 ); function aweaver_get_custom_logo( $html, $notused ) { // I think WP has the itemprop='logo' wrong since it applies ONLY to images. return str_replace( ' itemprop="logo"', '', $html ); } // =============================== >>> FILTER: aweaver_body_classes <<< ================================ add_filter( 'body_class', 'aweaver_body_classes' ); /* * Add classes to body depending of page type to make sidebar templates work and full widths work. * */ function aweaver_body_classes( $classes ) { $pwp = in_array( 'page-template-paget-posts-php', $classes ); $has_posts = false; if ( $pwp ) { // page with posts - add stuff like blog $classes[] = 'blog'; $has_posts = true; } if ( ! is_multi_author() ) { $classes[] = 'single-author'; } if ( is_singular() && ! is_home() && ! $pwp ) { // don't make pwp singular $classes[] = 'singular'; } if ( ! is_user_logged_in() ) { $classes[] = 'not-logged-in'; } // these classes get removed by JS at runtime $classes[] = 'weaverx-theme-body wvrx-not-safari is-menu-desktop is-menu-default'; // Changed 3.1.11 to handle Safari extended width bug $wide = aweaver_getopt( 'site_layout' ); if ( $wide ) { $classes[] = "wvrx-wide-{$wide}"; } if ( isset( $GLOBALS['aweaver_page_who'] ) && isset( $GLOBALS['aweaver_page_is_archive'] ) ) { // Changed: 3.1.10 - check if archive is set if ( $GLOBALS['aweaver_page_is_archive'] ) { $sb_layout = aweaver_sb_layout_archive( $GLOBALS['aweaver_page_who'] ); if ( $GLOBALS['aweaver_page_who'] != '404' ) { $has_posts = true; } } else { $sb_layout = aweaver_sb_layout( $GLOBALS['aweaver_page_who'] ); } $classes[] = 'weaverx-page-' . $GLOBALS['aweaver_page_who']; $GLOBALS['aweaver_sb_layout'] = $sb_layout; $classes[] = 'weaverx-sb-' . $sb_layout; if ( $sb_layout != 'one-column' ) { $classes[] = 'weaverx-has-sb'; } if ( $has_posts || $GLOBALS['aweaver_page_who'] == 'single' || $GLOBALS['aweaver_page_who'] == 'blog' ) { $classes[] = 'has-posts'; } } return $classes; } //-- // =============================== >>> FILTER: aweaver_comment_form_defaults <<< ================================ add_filter( 'comment_form_defaults', 'aweaver_comment_form_defaults', 10, 1 ); function aweaver_comment_form_defaults( $defaults ) { // filter definition $defaults['title_reply'] = apply_filters( 'aweaver_leave_reply_form', $defaults['title_reply'] ); $defaults['cancel_reply_link'] = apply_filters( 'aweaver_cancel_reply_form', $defaults['cancel_reply_link'] ); $defaults['label_submit'] = apply_filters( 'aweaver_post_comment_form', $defaults['label_submit'] ); return $defaults; } //-- // =============================== >>> FILTER: default_hidden_meta_boxes <<< ================================ // Change what's hidden by default - show Custom Fields and Discussion by default! add_filter( 'default_hidden_meta_boxes', 'aweaver_hidden_meta_boxes', 10, 2 ); function aweaver_hidden_meta_boxes( $hidden, $screen ) { // filter definition if ( 'post' == $screen->base || 'page' == $screen->base ) { $hidden = array( 'slugdiv', 'trackbacksdiv', 'postexcerpt', 'commentsdiv', 'authordiv', 'revisionsdiv' ); } // removed 'postcustom', 'commentstatusdiv', return $hidden; } //-- // =============================== >>> FILTER: excerpt_length <<< ================================ add_filter( 'excerpt_length', 'aweaver_excerpt_length' ); function aweaver_excerpt_length( $length ) { /** * Sets the post excerpt length to 40 words. * * To override this length in a child theme, remove the filter and add your own * function tied to the excerpt_length filter hook. */ $val = aweaver_t_get( 'excerpt_length' ); if ( ! $val ) { $val = aweaver_getopt( 'excerpt_length' ); } if ( $val > 0 || $val === '0' ) { return $val; } return 40; } //-- // =============================== >>> FILTER: header_video_settings <<< ================================ if ( ! function_exists( 'aweaver_video_controls' ) ) : add_filter( 'header_video_settings', 'aweaver_video_controls' ); /** * Customize video play/pause button in the custom header. */ function aweaver_video_controls( $settings ) { // modify the video parameters $settings['l10n']['play'] = '' . esc_html__( 'Play background video', 'absolute-weaver' ) . ''; $settings['l10n']['pause'] = '' . esc_html__( 'Pause background video', 'absolute-weaver' ) . ''; $ratio = aweaver_getopt_default( 'header_video_aspect', '16:9' ); $ratio = explode( ':', $ratio ); $settings['width'] = $ratio[0]; $settings['height'] = $ratio[1]; $settings['minWidth'] = 800; $hdr_bg = aweaver_fi( 'page', 'header-image' ); if ( $hdr_bg ) { $settings['posterUrl'] = esc_url( $hdr_bg ); // supply the FI image url } return $settings; } endif; //-- function aweaver_get_video_render() { $render = aweaver_getopt_default( 'header_video_render', 'has-header-video' ); return $render; } function aweaver_has_header_video() { return aweaver_get_video_render() != 'has-header-video-none' && ( has_header_video() ); } // =============================== >>> FILTER: aweaver_mce_css <<< ================================ add_filter( 'mce_css', 'aweaver_mce_css_filter' ); /* route tinyMCE to our stylesheet */ function aweaver_mce_css_filter( $default_style ) { /* replace the default editor-style.css with custom CSS generated on the fly by the php version */ if ( aweaver_getopt( '_hide_editor_style' ) ) { return $default_style; } $style_file = apply_filters( 'aweaver_mce_css', $default_style ); // theme support plugin builds a css file if ( $style_file != $default_style ) { return $style_file; } //$mce_css_file = trailingslashit( get_template_directory() ) . 'editor-style-css.php'; //$mce_css_dir = trailingslashit( get_template_directory_uri() ) . 'editor-style-css.php'; //if ( !@file_exists( $mce_css_file ) ) { // see if it is there // return $default_style; //} return $default_style; /* do we need to do anything about rtl? */ /* on-the-fly CSS removed Version 4.0 */ } //-- // =============================== >>> ACTION: aweaver_enqueue_gutenberg_style <<< ================================ /** * Action: Enqueue style sheets and fonts for Gutenberg Editor only. * * @since 4.0 * */ function aweaver_enqueue_gutenberg_block_editor_assets() { // add our element styles to gutenberg. enqueues for editor only if ( aweaver_getopt( '_hide_editor_style' ) ) { return; } aweaver_check_editor_style(); // see if we need an update... $editor_file = get_template_directory_uri() . '/assets/css/blocks-editor-base-style' . ABSOLUTE_WVR_MINIFY . '.css'; // enqueue style file do_action( 'aweaver_load_fonts', 'aweaver_gutenberg_fonts' ); wp_enqueue_style( 'aweaver_blocks_base_style', $editor_file, array(), ABSOLUTE_WVR_VERSION ); $updir = wp_upload_dir(); $css_file = trailingslashit( $updir['basedir'] ) . 'absolute-wvr-css/block-editor-style-awvr.css'; // generated CSS files won't be minified $css_path = trailingslashit( $updir['baseurl'] ) . 'absolute-wvr-css/block-editor-style-awvr.css'; if ( aweaver_f_exists( $css_file ) ) { // add dynamically generated editor CSS if the file exists $path = str_replace( array( 'http:', 'https:' ), '', $css_path ); // strip the http: if there, just use the // wp_enqueue_style( 'aweaver_gutenberg_awvr_style', $css_path, array(), ABSOLUTE_WVR_VERSION ); // fixup CSS for current theme settings } } add_action( 'enqueue_block_editor_assets', 'aweaver_enqueue_gutenberg_block_editor_assets' ); // Gutenberg invokes this action /** * Action: Enqueue style sheets for Gutenberg Editor and Front end. * * @since 4.0 * */ function aweaver_enqueue_gutenberg_block_assets() { // enqueue for BOTH editor and front-end $style_file = get_template_directory_uri() . '/assets/css/blocks-theme-blocks' . ABSOLUTE_WVR_MINIFY . '.css'; wp_enqueue_style( 'aweaver_blocks_block', $style_file, array(), ABSOLUTE_WVR_VERSION ); } //#@@@ add_action( 'enqueue_block_assets', 'aweaver_enqueue_gutenberg_block_assets' ); // Gutenberg invokes this action // =============================== >>> FILTER: aweaver_replace_widget_area <<< ================================ add_filter( 'aweaver_replace_widget_area', 'aweaver_replace_widget_area_filter' ); function aweaver_replace_widget_area_filter( $area_name ) { // If a replacement widget area has been specified, then use it instead. $replace = aweaver_get_per_page_value( '_' . $area_name ); if ( $replace ) { // see if the replacement widget area actually exists... if ( ! is_active_sidebar( $replace ) ) { ?>

    >> PAGE BUILDERS <<<============================================== // Page Builder Filters - used to filter stuff for the header // apply_filters( 'aweaver_replace_footer_area', 'keep_footer' ) == 'keep_footer' ) // echo apply_filters( 'aweaver_page_builder_content', $post_id, 'footer-html', $c_class ); function aweaver_page_builder_content_filter( $post_id, $where = 'pb-content', $class = '' ) { $post_id = ( int ) $post_id; if ( ! is_string( get_post_status( $post_id ) ) ) { // translators: %s is integer id value return sprintf( esc_html__( ' *** Oops! Post ID does not exist: %s *** ', 'absolute-weaver' ), $post_id ); } $out = ''; // this code is independent of page builder - will display correctly becaus using the_content $id = ( $where ) ? " id='{$where}'" : ''; $out .= "
    \n"; // okay, gotta fetch the_post for this post so that it will be properly intercepted by the page builder $args = array( 'p' => $post_id, // ID of a page, post, or custom type 'post_type' => 'any', ); $use_posts = new WP_Query( $args ); while ( $use_posts->have_posts() ) { $use_posts->the_post(); $out .= '
    '; $out .= apply_filters( 'the_content', get_the_content() ); $out .= "
    \n"; } wp_reset_query(); // undo our WP_Query wp_reset_postdata(); $out .= "
    \n"; return $out; /* if ( $postid ) { $extra = '
    ' . get_post_field( 'post_content', $postid ) . ''; $c_class .= ' wvrx-header-html-has-post'; } */ } add_filter( 'aweaver_page_builder_content', 'aweaver_page_builder_content_filter', 10, 3 ); function aweaver_replace_pb_area_filter( $area ) { //if have echoed content successfully, otherwise, return $area //return $area; // default - no replacement $use_id = aweaver_area_replacement_id( $area ); if ( $use_id == 'none' ) // no replacement area defined { return $area; } $before = ''; $after = ''; if ( $area == 'header' ) { $before = '
    '; $after = "
    \n"; } switch ( $area ) { case 'header': $title = apply_filters( 'aweaver_site_title', esc_html( get_bloginfo( 'name', 'display' ) ) ); $before .= "

    {$title}

    "; $hide_menus = false; if ( aweaver_get_per_page_value( '_pp_pb_header_hide_menus' ) == 'show' ) { $hide_menus = false; } elseif ( aweaver_get_per_page_value( '_pp_pb_header_hide_menus' ) == 'hide' || aweaver_getopt( 'pb_header_hide_menus' ) ) { $hide_menus = true; } if ( ! $hide_menus ) { do_action( 'aweaver_nav', 'top' ); } // ======== TOP MENU aweaver_trusted_echo( $before ); aweaver_trusted_echo( aweaver_page_builder_content_filter( $use_id, $area ) ); aweaver_trusted_echo( $after ); if ( ! $hide_menus ) { do_action( 'aweaver_nav', 'bottom' ); } // ======== BOTTOM MENU break; case 'footer': aweaver_trusted_echo( $before ); aweaver_trusted_echo( aweaver_page_builder_content_filter( $use_id, $area ) ); aweaver_trusted_echo( $after ); break; default: return $area; // return name in if not legal area } return 'displayed'; // different than $area in } add_filter( 'aweaver_replace_pb_area', 'aweaver_replace_pb_area_filter' ); function aweaver_area_replacement_id( $area ) { // build a value for a pabe builder header/footer replacement page/post // per page first... // 'pb_header_replace_page_id' and 'pb_footer_replace_page_id' have 1st priority // 'elementor_header_replacement' and 'elementor_footer_replacement' are 2nd // 'siteorigin_header_replacement' and 'siteorigin_footer_replacement' are 3rd // return 'none' if none are set $use_id = aweaver_get_per_page_value( "_pp_pb_{$area}_replace_page_id" ); if ( ! $use_id || $use_id == 'none' ) { $use_id = aweaver_get_per_page_value( "_pp_elementor_{$area}_replacement" ); } if ( ! $use_id || $use_id == 'none' ) { $use_id = aweaver_get_per_page_value( "_pp_siteorigin_{$area}_replacement" ); } if ( ! $use_id || $use_id == 'none' ) { $use_id = aweaver_getopt( "pb_{$area}_replace_page_id" ); } if ( ! $use_id || $use_id == 'none' ) { $use_id = aweaver_getopt( "elementor_{$area}_replacement" ); } if ( ! $use_id || $use_id == 'none' ) { $use_id = aweaver_getopt( "siteorigin_{$area}_replacement" ); } if ( ! $use_id || $use_id == 'none' ) { return 'none'; } return $use_id; } ?>