<?php
/**
* Template parts
*
* @package Astra
* @author Astra
* @copyright Copyright (c) 2020, Astra
* @link https://wpastra.com/
* @since Astra 1.0.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
add_action( 'astra_masthead_toggle_buttons', 'astra_masthead_toggle_buttons_primary' );
add_action( 'astra_masthead', 'astra_masthead_primary_template' );
add_filter( 'wp_page_menu_args', 'astra_masthead_custom_page_menu_items', 10, 2 );
add_filter( 'wp_nav_menu_items', 'astra_masthead_custom_nav_menu_items', 10, 2 );
add_action( 'astra_footer_content', 'astra_footer_small_footer_template', 5 );
add_action( 'astra_entry_content_single', 'astra_entry_content_single_template' );
add_action( 'astra_entry_content_blog', 'astra_entry_content_blog_template' );
add_action( 'astra_entry_content_404_page', 'astra_entry_content_404_page_template' );
add_action( 'astra_footer_content', 'astra_advanced_footer_markup', 1 );
add_action( 'astra_masthead_content', 'astra_header_custom_item_outside_menu', 10 );
/**
* Header Custom Menu Item
*/
if ( ! function_exists( 'astra_masthead_get_menu_items' ) ) :
/**
* Custom Menu Item Markup
*
* => Used in hooks:
*
* @see astra_masthead_get_menu_items
* @see astra_masthead_custom_nav_menu_items
* @param boolean $display_outside_markup Outside / Inside markup.
*
* @since 1.0.0
*/
function astra_masthead_get_menu_items( $display_outside_markup = false ) {
// Get selected custom menu items.
$markup = '';
$section = astra_get_option( 'header-main-rt-section' );
$sections = astra_get_dynamic_header_content( 'header-main-rt-section' );
$disable_primary_navigation = astra_get_option( 'disable-primary-nav' );
$html_element = 'li';
if ( $disable_primary_navigation || $display_outside_markup ) {
$html_element = 'div';
}
if ( array_filter( $sections ) ) {
ob_start();
$menu_item_classes = apply_filters( 'astra_masthead_custom_menu_item', array( 'ast-masthead-custom-menu-items', $section . '-custom-menu-item' ), $section );
?>
<<?php echo esc_attr( $html_element ); ?> class="<?php echo esc_attr( join( ' ', $menu_item_classes ) ); ?>">
<?php
foreach ( $sections as $key => $value ) {
if ( ! empty( $value ) ) {
echo $value; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
?>
</<?php echo esc_attr( $html_element ); ?>>
<?php
$markup = ob_get_clean();
}
return apply_filters( 'astra_masthead_get_menu_items', $markup );
}
endif;
/**
* Header Custom Menu Item
*/
if ( ! function_exists( 'astra_masthead_custom_page_menu_items' ) ) :
/**
* Header Custom Menu Item
*
* => Used in files:
*
* /header.php
*
* @since 1.0.0
* @param array $args Array of arguments.
* @return array Modified menu item array.
*/
function astra_masthead_custom_page_menu_items( $args ) {
if ( isset( $args['theme_location'] ) && ! astra_get_option( 'header-display-outside-menu' ) ) {
if ( 'primary' === $args['theme_location'] ) {
$markup = astra_masthead_get_menu_items();
if ( $markup ) {
$args['after'] = $markup . '</ul>';
}
}
}
return $args;
}
endif;
/**
* Header Custom Menu Item
*/
if ( ! function_exists( 'astra_masthead_custom_nav_menu_items' ) ) :
/**
* Header Custom Menu Item
*
* => Used in files:
*
* /header.php
*
* @since 1.0.0
* @param array $items Nav menu item array.
* @param array $args Nav menu item arguments array.
* @return array Modified menu item array.
*/
function astra_masthead_custom_nav_menu_items( $items, $args ) {
if ( isset( $args->theme_location ) && ! astra_get_option( 'header-display-outside-menu' ) ) {
if ( 'primary' === $args->theme_location ) {
$markup = astra_masthead_get_menu_items();
if ( $markup ) {
$items .= $markup;
}
}
}
return $items;
}
endif;
/**
* Header toggle buttons
*/
if ( ! function_exists( 'astra_masthead_toggle_buttons_primary' ) ) {
/**
* Header toggle buttons
*
* => Used in files:
*
* /header.php
*
* @since 1.0.0
*/
function astra_masthead_toggle_buttons_primary() {
$disable_primary_navigation = astra_get_option( 'disable-primary-nav' );
$custom_header_section = astra_get_option( 'header-main-rt-section' );
$display_outside_menu = astra_get_option( 'header-display-outside-menu' );
if ( ! $disable_primary_navigation || ( 'none' != $custom_header_section && ! $display_outside_menu ) ) {
$menu_title = trim( apply_filters( 'astra_main_menu_toggle_label', astra_get_option( 'header-main-menu-label' ) ) );
$menu_label_class = '';
$screen_reader_title = __( 'Main Menu', 'astra' );
if ( '' !== $menu_title ) {
$menu_label_class = 'ast-menu-label';
$screen_reader_title = $menu_title;
}
$menu_label_class = apply_filters( 'astra_main_menu_toggle_classes', $menu_label_class );
?>
<div class="ast-button-wrap">
<button type="button" class="menu-toggle main-header-menu-toggle <?php echo esc_attr( $menu_label_class ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" <?php echo apply_filters( 'astra_nav_toggle_data_attrs', '' ); ?> aria-controls='primary-menu' aria-expanded='false'>
<span class="screen-reader-text"><?php echo esc_html( $screen_reader_title ); ?></span>
<?php Astra_Icons::get_icons( 'menu-bars', true, true ); ?>
<?php if ( '' != $menu_title ) { ?>
<span class="mobile-menu-wrap">
<span class="mobile-menu"><?php echo esc_html( $menu_title ); ?></span>
</span>
<?php } ?>
</button>
</div>
<?php
}
}
}
/**
* Small Footer
*/
if ( ! function_exists( 'astra_footer_small_footer_template' ) ) {
/**
* Small Footer
*
* => Used in files:
*
* /footer.php
*
* @since 1.0.0
*/
function astra_footer_small_footer_template() {
$small_footer_layout = astra_get_option_meta( 'footer-sml-layout', 'footer-sml-layout-2' );
$small_footer_layout = apply_filters( 'ast_footer_sml_layout', $small_footer_layout );
if ( 'disabled' != $small_footer_layout ) {
$small_footer_layout = str_replace( 'footer-sml-layout-', '', $small_footer_layout );
// Default footer layout 1 is ast-footer-layout.
if ( '1' == $small_footer_layout ) {
$small_footer_layout = '';
}
get_template_part( 'template-parts/footer/footer-sml-layout', $small_footer_layout );
}
}
}
/**
* Primary Header
*/
if ( ! function_exists( 'astra_masthead_primary_template' ) ) {
/**
* Primary Header
*
* => Used in files:
*
* /header.php
*
* @since 1.0.0
*/
function astra_masthead_primary_template() {
get_template_part( 'template-parts/header/header-main-layout' );
}
}
/**
* Single post markup
*/
if ( ! function_exists( 'astra_entry_content_single_template' ) ) {
/**
* Single post markup
*
* => Used in files:
*
* /template-parts/content-single.php
*
* @since 1.0.0
*/
function astra_entry_content_single_template() {
get_template_part( 'template-parts/single/single-layout' );
}
}
/**
* Blog post list markup for blog & search page
*/
if ( ! function_exists( 'astra_entry_content_blog_template' ) ) {
/**
* Blog post list markup for blog & search page
*
* => Used in files:
*
* /template-parts/content-blog.php
* /template-parts/content-search.php
*
* @since 1.0.0
*/
function astra_entry_content_blog_template() {
get_template_part( 'template-parts/blog/blog-layout', apply_filters( 'astra_blog_template_name', '' ) );
}
}
/**
* 404 markup
*/
if ( ! function_exists( 'astra_entry_content_404_page_template' ) ) {
/**
* 404 markup
*
* => Used in files:
*
* /template-parts/content-404.php
*
* @since 1.0.0
*/
function astra_entry_content_404_page_template() {
$layout_404 = astra_get_option( 'ast-404-layout' );
$layout_404 = str_replace( '404-layout-', '', $layout_404 );
// Default 404 is nothing but the 404 layout 1.
if ( '1' == $layout_404 ) {
$layout_404 = '';
}
get_template_part( 'template-parts/404/404-layout', $layout_404 );
}
}
/**
* Footer widgets markup
*/
if ( ! function_exists( 'astra_advanced_footer_markup' ) ) {
/**
* Footer widgets markup
*
* Loads appropriate template file based on the style option selected in options panel.
*
* @since 1.0.12
*/
function astra_advanced_footer_markup() {
$advanced_footer_layout = astra_get_option( 'footer-adv' );
$advanced_footer_meta = astra_get_option_meta( 'footer-adv-display' );
if ( apply_filters( 'astra_advanced_footer_disable', false ) || 'layout-4' !== $advanced_footer_layout || 'disabled' == $advanced_footer_meta ) {
return;
}
// Add markup.
get_template_part( 'template-parts/advanced-footer/layout-4' );
}
}
/**
* Header menu item outside custom menu
*/
if ( ! function_exists( 'astra_header_custom_item_outside_menu' ) ) {
/**
* Footer widgets markup
*
* Loads appropriate template file based on the style option selected in options panel.
*
* @since 1.0.12
*/
function astra_header_custom_item_outside_menu() {
if ( astra_get_option( 'header-display-outside-menu' ) ) {
$markup = astra_masthead_get_menu_items( true );
echo $markup; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
}