>> ACTION: absolute_weaver_nav <<< ================================ if ( ! has_action( 'absolute_weaver_nav' ) ) { // pluggable add_action( 'absolute_weaver_nav', 'absolute_weaver_nav_action' ); function absolute_weaver_nav_action( $where ) { // displays primary and secondary menus in the proper place switch ( $where ) { case 'top': if ( absolute_weaver_getopt( 'm_primary_move' ) ) { get_template_part( 'template-parts/menu', 'primary' ); } break; case 'bottom': default: if ( ! absolute_weaver_getopt( 'm_primary_move' ) ) { get_template_part( 'template-parts/menu', 'primary' ); } break; } } } //-- /* --------------------------------- CALLBACKS ------------------------------- * */ // ============================================= >>> CALLBACK: absolute_weaver_page_menu_cb <<< ====================================== function absolute_weaver_page_menu_cb( $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 ( absolute_weaver_getopt( 'menu_nohome' ) ) { $args['show_home'] = false; } else { $args['show_home'] = true; } // look for pages to hide from menu // 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 ( absolute_weaver_getopt( 'm_primary_site_title_left' ) ) { $classt = 'site-title-on-menu wvrx-menu-html wvrx-menu-left'; // font-family $val = absolute_weaver_getopt( 'site_title_font_family' ); if ( $val && $val != 'default' ) { $classt .= ' font-' . $val; } $classt .= absolute_weaver_get_bold_italic( 'site_title', 'bold' ); $classt .= absolute_weaver_get_bold_italic( 'site_title', 'italic' ); $site_title = '' . get_bloginfo( 'name' ) . ''; } $left = absolute_weaver_getopt( 'm_primary_html_left' ); $right = absolute_weaver_getopt( 'm_primary_html_right' ); if ( absolute_weaver_getopt( 'm_primary_logo_left' ) ) { $custom_logo_url = absolute_weaver_get_wp_custom_logo_url(); // We have a logo. Logo is go. if ( $custom_logo_url ) { if ( absolute_weaver_getopt( 'm_primary_logo_home_link' ) ) { $left = apply_filters( 'absolute_weaver_menu_logo', '' . esc_attr__( 'Site Home', 'absolute-weaver' ) . '', $custom_logo_url ); } else { $left = apply_filters( 'absolute_weaver_menu_logo', '' . esc_attr__( 'logo', 'absolute-weaver' ) . '', $custom_logo_url ); // +since: 3.1.10: add alt= } } } if ( $left ) { $hide = ' ' . absolute_weaver_getopt( 'm_primary_hide_left' ); $left = '' . do_shortcode( $left ) . ''; } if ( absolute_weaver_getopt( 'use_smartmenus' ) ) { // Plus option $hamburger = apply_filters( 'absolute_weaver_mobile_menu_name', absolute_weaver_getopt( 'm_primary_hamburger' ) ); if ( $hamburger == '' ) { $alt = absolute_weaver_getopt( 'mobile_alt_label' ); if ( $alt == '' ) { $hamburger = ''; } else { $hamburger = '' . $alt . ''; } } if ( absolute_weaver_getopt('mobile_to_right') ) { $right = $right . '' . "{$hamburger}"; } else { $left = '' . "{$hamburger}{$left}"; } } if ( ! $left && is_customize_preview() ) { $hide = ' ' . absolute_weaver_getopt( 'm_primary_hide_left' ); $left = ''; } if ( $right ) { $hide = absolute_weaver_getopt( 'm_primary_hide_right' ); $right = '' . do_shortcode( $right ) . ''; } if ( ! $right && is_customize_preview() ) { $hide = absolute_weaver_getopt( 'm_primary_hide_right' ); $right = ''; } if ( absolute_weaver_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'] ) { absolute_weaver_echo_sanitized_html( $menu ); } else { return $menu; } return ''; } //-- /* --------------------------------- FILTERS ------------------------------- * */ add_filter( 'absolute_weaver_menu_class', 'absolute_weaver_menu_class_filter_theme', 10, 3 ); function absolute_weaver_menu_class_filter_theme( $class, $menu ) { $use_smart = absolute_weaver_getopt( 'use_smartmenus' ) ; // plus filter not available, use ours if ( $use_smart ) { $menu_class = 'weaverx-theme-menu sm wvrx-menu collapsed'; if ( is_rtl() ) { $menu_class .= ' sm-rtl'; } return $menu_class; } return $class; } // =============================== >>> FILTER: absolute_weaver_get_custom_logo <<< ================================ add_filter( 'get_custom_logo', 'absolute_weaver_get_custom_logo_filter', 10, 2 ); function absolute_weaver_get_custom_logo_filter( $html, $notused ) { // I think WP has the itemprop='logo' wrong since it applies ONLY to images. return str_replace( ' itemprop="logo"', '', $html ); } // =============================== >>> FILTER: absolute_weaver_body_classes <<< ================================ add_filter( 'body_class', 'absolute_weaver_body_classes_filter' ); /* * Add classes to body depending of page type to make sidebar template-parts work and full widths work. * */ function absolute_weaver_body_classes_filter( $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'; $wide = absolute_weaver_getopt( 'site_layout' ); if ( $wide ) { $classes[] = "wvrx-wide-{$wide}"; } if ( isset( $GLOBALS['absolute_weaver_page_who'] ) && isset( $GLOBALS['absolute_weaver_page_is_archive'] ) ) { if ( $GLOBALS['absolute_weaver_page_is_archive'] ) { $sb_layout = absolute_weaver_sb_layout_archive( $GLOBALS['absolute_weaver_page_who'] ); if ( $GLOBALS['absolute_weaver_page_who'] != '404' ) { $has_posts = true; } } else { $sb_layout = absolute_weaver_sb_layout( $GLOBALS['absolute_weaver_page_who'] ); } $classes[] = 'weaverx-page-' . $GLOBALS['absolute_weaver_page_who']; $GLOBALS['absolute_weaver_sb_layout'] = $sb_layout; $classes[] = 'weaverx-sb-' . $sb_layout; if ( $sb_layout != 'one-column' ) { $classes[] = 'weaverx-has-sb'; } if ( $has_posts || $GLOBALS['absolute_weaver_page_who'] == 'single' || $GLOBALS['absolute_weaver_page_who'] == 'blog' ) { $classes[] = 'has-posts'; } } return $classes; } //-- // =============================== >>> FILTER: absolute_weaver_comment_form_defaults <<< ================================ add_filter( 'comment_form_defaults', 'absolute_weaver_comment_form_defaults_filter', 10, 1 ); function absolute_weaver_comment_form_defaults_filter( $defaults ) { // filter definition $defaults['title_reply'] = apply_filters( 'absolute_weaver_leave_reply_form', $defaults['title_reply'] ); $defaults['cancel_reply_link'] = apply_filters( 'absolute_weaver_cancel_reply_form', $defaults['cancel_reply_link'] ); $defaults['label_submit'] = apply_filters( 'absolute_weaver_post_comment_form', $defaults['label_submit'] ); return $defaults; } //-- // =============================== >>> FILTER: excerpt_length <<< ================================ add_filter( 'excerpt_length', 'absolute_weaver_excerpt_length_filter' ); function absolute_weaver_excerpt_length_filter( $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 = absolute_weaver_t_get( 'excerpt_length' ); if ( ! $val ) { $val = absolute_weaver_getopt( 'excerpt_length' ); } if ( $val > 0 || $val === '0' ) { return $val; } return 40; } //-- // =============================== >>> FILTER: absolute_weaver_mce_css <<< ================================ add_filter( 'mce_css', 'absolute_weaver_mce_css_filter' ); /* route tinyMCE to our stylesheet */ function absolute_weaver_mce_css_filter( $default_style ) { /* replace the default editor-style.css with custom CSS generated on the fly by the php version */ if ( absolute_weaver_getopt( '_hide_editor_style' ) ) { return $default_style; } $style_file = apply_filters( 'absolute_weaver_mce_css', $default_style ); // theme support plugin builds a css file if ( $style_file != $default_style ) { return $style_file; } return $default_style; /* do we need to do anything about rtl? */ } //-- // =============================== >>> ACTION: absolute_weaver_enqueue_gutenberg_style <<< ================================ /** * Action: Enqueue style sheets and fonts for Gutenberg Editor only. * * @since 4.0 * */ function absolute_weaver_enqueue_gutenberg_block_editor_assets_action() { // add our element styles to gutenberg. enqueues for editor only //return; if ( absolute_weaver_getopt( '_hide_editor_style' ) ) { return; } absolute_weaver_check_editor_style(); // see if we need an update... $editor_file = get_template_directory_uri() . '/assets/css/blocks-editor-base-style' . ABSOLUTE_WEAVER_MINIFY . '.css'; // enqueue style file do_action( 'absolute_weaver_load_fonts', 'absolute_weaver_gutenberg_fonts' ); wp_enqueue_style( 'absolute_weaver_blocks_base_style', $editor_file, array(), ABSOLUTE_WEAVER_VERSION ); $updir = wp_upload_dir(); $css_file = trailingslashit( $updir['basedir'] ) . 'absolute-weaver-css/block-editor-style-awvr.css'; // generated CSS files won't be minified $css_path = trailingslashit( $updir['baseurl'] ) . 'absolute-weaver-css/block-editor-style-awvr.css'; if ( absolute_weaver_f_exists( $css_file ) ) { // add dynamically generated editor CSS if the file exists wp_enqueue_style( 'absolute_weaver_gutenberg_awvr_style', $css_path, array(), ABSOLUTE_WEAVER_VERSION ); // fixup CSS for current theme settings } } add_action( 'enqueue_block_editor_assets', 'absolute_weaver_enqueue_gutenberg_block_editor_assets_action' ); // Gutenberg invokes this action //-- // =======================================>>> PAGE BUILDERS <<<============================================== // Page Builder Filters - used to filter stuff for the header // apply_filters( 'absolute_weaver_replace_footer_area', 'keep_footer' ) == 'keep_footer' ) // echo apply_filters( 'absolute_weaver_page_builder_content', $post_id, 'footer-html', $c_class ); function absolute_weaver_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 because 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( 'absolute_weaver_page_builder_content', 'absolute_weaver_page_builder_content_filter', 10, 3 ); function absolute_weaver_replace_pb_area_filter( $area ) { //if have echoed content successfully, otherwise, return $area //return $area; // default - no replacement $use_id = absolute_weaver_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 = esc_html( apply_filters( 'absolute_weaver_site_title', get_bloginfo( 'name', 'display' ) ) ); $before .= "

    {$title}

    "; $hide_menus = false; if ( absolute_weaver_get_per_page_value( '_pp_pb_header_hide_menus' ) == 'show' ) { $hide_menus = false; } elseif ( absolute_weaver_get_per_page_value( '_pp_pb_header_hide_menus' ) == 'hide' || absolute_weaver_getopt( 'pb_header_hide_menus' ) ) { $hide_menus = true; } if ( ! $hide_menus ) { do_action( 'absolute_weaver_nav', 'top' ); } // ======== TOP MENU absolute_weaver_echo_sanitized_html( $before ); absolute_weaver_echo_sanitized_html( absolute_weaver_page_builder_content_filter( $use_id, $area ) ); absolute_weaver_echo_sanitized_html( $after ); if ( ! $hide_menus ) { do_action( 'absolute_weaver_nav', 'bottom' ); } // ======== BOTTOM MENU break; case 'footer': absolute_weaver_echo_sanitized_html( $before ); absolute_weaver_echo_sanitized_html( absolute_weaver_page_builder_content_filter( $use_id, $area ) ); absolute_weaver_echo_sanitized_html( $after ); break; default: return $area; // return name in if not legal area } return 'displayed'; // different than $area in } add_filter( 'absolute_weaver_replace_pb_area', 'absolute_weaver_replace_pb_area_filter' ); function absolute_weaver_area_replacement_id( $area ) { // build a value for a page 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 = absolute_weaver_get_per_page_value( "_pp_pb_{$area}_replace_page_id" ); if ( ! $use_id || $use_id == 'none' ) { $use_id = absolute_weaver_get_per_page_value( "_pp_elementor_{$area}_replacement" ); } if ( ! $use_id || $use_id == 'none' ) { $use_id = absolute_weaver_get_per_page_value( "_pp_siteorigin_{$area}_replacement" ); } if ( ! $use_id || $use_id == 'none' ) { $use_id = absolute_weaver_getopt( "pb_{$area}_replace_page_id" ); } if ( ! $use_id || $use_id == 'none' ) { $use_id = absolute_weaver_getopt( "elementor_{$area}_replacement" ); } if ( ! $use_id || $use_id == 'none' ) { $use_id = absolute_weaver_getopt( "siteorigin_{$area}_replacement" ); } if ( ! $use_id || $use_id == 'none' ) { return 'none'; } return $use_id; }