hooks();
$this->run_adds();
}
public function hooks() {
// Theme hooks
$this->add_action( 'rocksite_action_language_selector', $this, 'action_get_language_selector' );
$this->add_action( 'rocksite_action_navbar_searchbar', $this, 'action_navbar_searchbar' );
$this->add_filter( 'rocksite_filter_social_menu_icons', $this, 'filter_social_menu_icons' );
$this->add_action( 'rocksite_action_breadcrumbs', $this, 'action_breadcrumbs', 1, 1 );
$this->add_action( 'rocksite_action_archives_pagination', $this, 'action_archives_pagination' );
$this->add_action( 'rocksite_the_post_navigation', $this, 'action_the_post_navigation' );
$this->add_filter( 'rocksite_main_navbar_features', $this, 'filter_main_navbar_features' );
$this->add_filter( 'rocksite_filter_area_version', $this, 'area_version' );
$this->add_action( 'rocksite_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( Rocksite_Settings::get( 'navbar_fixed', TRUE ) );
$header_version = esc_attr( Rocksite_Settings::get( 'header_version', TRUE ) );
$header_over = esc_attr( Rocksite_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' ) ) {
Rocksite_Component_Nav::wpml_selector();
} elseif ( function_exists( 'pll_the_languages' ) ) {
Rocksite_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( Rocksite_Settings::get( 'main_menu_search_display', TRUE ) );
if ( $main_menu_search_display ) {
$menu_items .= Rocksite_Component_Nav::search_menu_item();
}
Rocksite_Component_Nav::toggle_search_menu( $menu_items );
}
/**
* Displays breadcrumbs based on settings
*/
public function action_breadcrumbs( $modifier = '' ) {
$type = Rocksite_Helper::get_content_type();
$home = esc_attr( Rocksite_Settings::get( 'breadcrumbs_homepage_name', __( 'Home', 'canvi' ) ) );
$separator = esc_attr( Rocksite_Settings::get( 'breadcrumbs_separator', ' / ' ) );
$display = esc_attr( Rocksite_Settings::get( $type . 'breadcrumbs_show', TRUE ) );
Rocksite_Component_Nav::breadcrumbs( $display, $home, $separator, $modifier );
}
/**
* Displays searchbar in the navbar
*/
public function action_navbar_searchbar() {
$main_menu_search_display = esc_attr( Rocksite_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 ) {
Rocksite_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( Rocksite_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' ) . ' ' . '' . __( 'Next post:', 'canvi' ) . '' . '%title',
'prev_text' => '' . __( 'Previous Post', 'canvi' ) . ' ' . '' . __( 'Previous post:', 'canvi' ) . '' . '%title',
);
// Previous/next post navigation.
the_post_navigation( $options );
}
}
}
public function area_version( $area ) {
$version_area = Rocksite_Settings::get( $area . '_version', $area );
return $version_area;
}
}
}