hooks(); $this->run_adds(); } public function hooks() { // Theme hooks $this->add_action( 'canvi_action_language_selector', $this, 'action_get_language_selector' ); $this->add_action( 'canvi_action_navbar_searchbar', $this, 'action_navbar_searchbar' ); $this->add_filter( 'canvi_filter_social_menu_icons', $this, 'filter_social_menu_icons' ); $this->add_action( 'canvi_action_breadcrumbs', $this, 'action_breadcrumbs', 1, 1 ); $this->add_action( 'canvi_action_archives_pagination', $this, 'action_archives_pagination' ); $this->add_action( 'canvi_the_post_navigation', $this, 'action_the_post_navigation' ); $this->add_filter( 'canvi_main_navbar_features', $this, 'filter_main_navbar_features' ); $this->add_filter( 'canvi_filter_area_version', $this, 'area_version' ); $this->add_action( 'canvi_action_toggle_search_menu', $this, 'action_toggle_search_menu', 1, 4 ); } /** * Returns main navbar features * * @param string $classes * * @return string */ function filter_main_navbar_features( $classes = '' ) { $navbar_fixed = esc_attr( Canvi_Settings::get( 'navbar_fixed', TRUE ) ); $header_version = esc_attr( Canvi_Settings::get( 'header_version', TRUE ) ); $header_over = esc_attr( Canvi_Settings::get( 'navbar_over', TRUE ) ); if ( $navbar_fixed ) { $classes .= ' js-fixed-navbar'; } if ( $header_version ) { $classes .= ' -version-' . $header_version; } if ( $header_over ) { $classes .= ' -over-section'; } return $classes; } /** * Displays language selector based on language plugin detection */ public function action_get_language_selector() { if ( class_exists( 'SitePress' ) ) { Canvi_Component_Nav::wpml_selector(); } elseif ( function_exists( 'pll_the_languages' ) ) { Canvi_Component_Nav::polylang_selector(); } } /** * Returns social icons * * @param $default * * @return mixed */ public function filter_social_menu_icons( $default ) { $social_icons = $this->config->get_social_icons(); if ( is_array( $social_icons ) ) { return $social_icons; } else { return $default; } } /** * Construct and display search and mobile menu */ public function action_toggle_search_menu() { $menu_items = apply_filters( 'canvi_add_menu_item', '' ); $main_menu_search_display = esc_attr( Canvi_Settings::get( 'main_menu_search_display', TRUE ) ); if ( $main_menu_search_display ) { $menu_items .= Canvi_Component_Nav::search_menu_item(); } Canvi_Component_Nav::toggle_search_menu( $menu_items ); } /** * Displays breadcrumbs based on settings */ public function action_breadcrumbs( $modifier = '' ) { $type = Canvi_Helper::get_content_type(); $home = esc_attr( Canvi_Settings::get( 'breadcrumbs_homepage_name', __( 'Home', 'canvi' ) ) ); $separator = esc_attr( Canvi_Settings::get( 'breadcrumbs_separator', ' / ' ) ); $display = esc_attr( Canvi_Settings::get( $type . 'breadcrumbs_show', TRUE ) ); Canvi_Component_Nav::breadcrumbs( $display, $home, $separator, $modifier ); } /** * Displays searchbar in the navbar */ public function action_navbar_searchbar() { $main_menu_search_display = esc_attr( Canvi_Settings::get( 'main_menu_search_display', TRUE ) ); if ( $main_menu_search_display ) { get_template_part( 'searchform' ); } } public function action_archives_pagination() { global $wp_query; $query_args = array_merge( $wp_query->query, $wp_query->query_vars ); if ( ! array_key_exists( 'max_num_pages', $query_args ) ) { $query_args['max_num_pages'] = $wp_query->max_num_pages; } if ( ! array_key_exists( 'post_status', $query_args ) ) { $query_args['post_status'] = 'publish'; } if ( ! array_key_exists( 'paged', $query_args ) || 0 == $query_args['paged'] ) { $query_args['paged'] = 1; } // if is numeric pagination $big = 999999999; // This needs to be an unlikely integer $current = max( 1, get_query_var( 'paged' ) ); // For more options and info view the docs for paginate_links() // http://codex.wordpress.org/public function_Reference/paginate_links $paginate_links = paginate_links( array( 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ), 'current' => $current, 'total' => $wp_query->max_num_pages, 'mid_size' => 5, 'type' => 'array' ) ); if ( is_array( $paginate_links ) && count( $paginate_links ) > 0 ) { Canvi_Component_Nav::pager_navigation( $paginate_links ); } // if is prev next pagination } /** * Displays the navigation to next/previous post, when applicable. */ public function action_the_post_navigation() { $navigation_prev_next = esc_attr( Canvi_Settings::get( 'navigation_prev_next', TRUE ) ); if ( $navigation_prev_next ) { if ( is_singular( 'attachment' ) ) { // Parent post navigation. $options = array( /* translators: %s: parent post link */ 'prev_text' => sprintf( __( 'Published in%s', 'canvi' ), '%title' ), ); the_post_navigation( $options ); } elseif ( is_singular( 'post' ) ) { $options = array( 'next_text' => ' ' . '' . __( 'Next post:', 'canvi' ) . '' . '%title', 'prev_text' => ' ' . '' . __( 'Previous post:', 'canvi' ) . '' . '%title', ); // Previous/next post navigation. the_post_navigation( $options ); } } } public function area_version( $area ) { $version_area = Canvi_Settings::get( $area . '_version', $area ); return $version_area; } } }