summaryrefslogtreecommitdiff
path: root/inc/builder/type/header/account/class-astra-header-account-component.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/builder/type/header/account/class-astra-header-account-component.php')
-rw-r--r--inc/builder/type/header/account/class-astra-header-account-component.php151
1 files changed, 151 insertions, 0 deletions
diff --git a/inc/builder/type/header/account/class-astra-header-account-component.php b/inc/builder/type/header/account/class-astra-header-account-component.php
new file mode 100644
index 0000000..b56b58b
--- /dev/null
+++ b/inc/builder/type/header/account/class-astra-header-account-component.php
@@ -0,0 +1,151 @@
+<?php
+/**
+ * Account for Astra theme.
+ *
+ * @package astra-builder
+ * @author Astra
+ * @copyright Copyright (c) 2020, Astra
+ * @link https://wpastra.com/
+ * @since 3.0.0
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+ exit; // Exit if accessed directly.
+}
+
+define( 'ASTRA_HEADER_ACCOUNT_DIR', ASTRA_THEME_DIR . 'inc/builder/type/header/account' );
+define( 'ASTRA_HEADER_ACCOUNT_URI', ASTRA_THEME_URI . 'inc/builder/type/header/account' );
+
+if ( ! class_exists( 'Astra_Header_Account_Component' ) ) {
+
+ /**
+ * Heading Initial Setup
+ *
+ * @since 3.0.0
+ */
+ class Astra_Header_Account_Component {
+
+ /**
+ * Constructor function that initializes required actions and hooks
+ */
+ public function __construct() {
+
+ // @codingStandardsIgnoreStart WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
+ require_once ASTRA_HEADER_ACCOUNT_DIR . '/class-astra-header-account-component-loader.php';
+
+ // Include front end files.
+ if ( ! is_admin() ) {
+ require_once ASTRA_HEADER_ACCOUNT_DIR . '/dynamic-css/dynamic.css.php';
+ }
+ // @codingStandardsIgnoreEnd WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
+ }
+
+ /**
+ * Account navigation markup
+ */
+ public static function account_menu_markup() {
+
+ $theme_location = 'loggedin_account_menu';
+ $account_type = astra_get_option( 'header-account-type' );
+ $enable_woo_menu = ( 'woocommerce' === $account_type && astra_get_option( 'header-account-woo-menu' ) );
+
+ /**
+ * Filter the classes(array) for Menu (<ul>).
+ *
+ * @since 3.0.0
+ * @var Array
+ */
+ $menu_classes = apply_filters( 'astra_menu_classes', array( 'main-header-menu', 'ast-nav-menu', 'ast-account-nav-menu' ) );
+
+ $items_wrap = '<nav ';
+ $items_wrap .= astra_attr(
+ 'site-navigation',
+ array(
+ 'id' => 'site-navigation',
+ 'class' => 'ast-flex-grow-1 navigation-accessibility site-header-focus-item',
+ 'aria-label' => esc_attr__( 'Site Navigation', 'astra' ),
+ )
+ );
+ $items_wrap .= '>';
+ $items_wrap .= '<div class="account-main-navigation">';
+ $items_wrap .= '<ul id="%1$s" class="%2$s">%3$s</ul>';
+ $items_wrap .= '</div>';
+ $items_wrap .= '</nav>';
+
+ // Fallback Menu if primary menu not set.
+ $fallback_menu_args = array(
+ 'theme_location' => $theme_location,
+ 'menu_id' => 'ast-hf-account-menu',
+ 'menu_class' => 'account-main-navigation',
+ 'container' => 'div',
+ 'before' => '<ul class="' . esc_attr( implode( ' ', $menu_classes ) ) . '">',
+ 'after' => '</ul>',
+ 'walker' => new Astra_Walker_Page(),
+ );
+
+ // To add default alignment for navigation which can be added through any third party plugin.
+ // Do not add any CSS from theme except header alignment.
+ echo '<div class="ast-hf-account-menu-wrap ast-main-header-bar-alignment">';
+
+ if ( has_nav_menu( $theme_location ) && ! $enable_woo_menu ) {
+ wp_nav_menu(
+ array(
+ 'menu_id' => 'ast-hf-account-menu',
+ 'menu_class' => esc_attr( implode( ' ', $menu_classes ) ),
+ 'container' => 'div',
+ 'container_class' => 'account-main-header-bar-navigation',
+ 'items_wrap' => $items_wrap,
+ 'theme_location' => $theme_location,
+ )
+ );
+ } elseif ( $enable_woo_menu ) {
+ echo '<div class="ast-hf-account-menu-wrap ast-main-header-bar-alignment">';
+ echo '<div class="account-main-header-bar-navigation">';
+ echo '<nav ';
+ echo astra_attr(
+ 'account-woo-navigation',
+ array(
+ 'id' => 'account-woo-navigation',
+ )
+ );
+ echo ' class="ast-flex-grow-1 navigation-accessibility site-header-focus-item" aria-label="' . esc_attr__( 'Account Woo Navigation', 'astra' ) . '">';
+ if ( class_exists( 'woocommerce' ) ) {
+ ?>
+ <ul id="ast-hf-account-menu" class="main-header-menu ast-nav-menu ast-account-nav-menu ast-header-account-woocommerce-menu">
+ <?php foreach ( wc_get_account_menu_items() as $endpoint => $item ) { ?>
+ <li class="menu-item <?php echo esc_attr( wc_get_account_menu_item_classes( $endpoint ) ); ?>">
+ <a href="<?php echo esc_url( wc_get_account_endpoint_url( $endpoint ) ); ?>" class="menu-link"><?php echo esc_html( $item ); ?></a>
+ </li>
+ <?php } ?>
+ </ul>
+ <?php
+ }
+ echo '</nav>';
+ echo '</div>';
+ echo '</div>';
+ } else {
+ echo '<div class="ast-hf-account-menu-wrap ast-main-header-bar-alignment">';
+ echo '<div class="account-main-header-bar-navigation">';
+ echo '<nav ';
+ echo astra_attr(
+ 'site-navigation',
+ array(
+ 'id' => 'site-navigation',
+ )
+ );
+ echo ' class="ast-flex-grow-1 navigation-accessibility" aria-label="' . esc_attr__( 'Site Navigation', 'astra' ) . '">';
+ wp_page_menu( $fallback_menu_args );
+ echo '</nav>';
+ echo '</div>';
+ echo '</div>';
+ }
+ echo '</div>';
+ }
+ }
+
+ /**
+ * Kicking this off by creating an object.
+ */
+ new Astra_Header_Account_Component();
+
+}