From e6eb4829fd64acd86dbdda849404a758f8f37e3c Mon Sep 17 00:00:00 2001 From: Alexander Agnarson Date: Wed, 19 Aug 2020 13:05:54 +0200 Subject: [PATCH] 1.1.8 --- functions.php | 13 ++ functions/nav.php | 305 ++++++++++++++++++++++++++++++++++++++++ header.php | 58 ++++---- js/nav.js | 319 ++++++++++++++++++++++++++++++++++++++++++ js/scripts.js | 45 ------ languages/blogrow.pot | 45 ++++-- readme.txt | 6 +- responsive.css | 5 +- style.css | 319 ++++++++++++++++++++++-------------------- 9 files changed, 875 insertions(+), 240 deletions(-) create mode 100644 functions/nav.php create mode 100644 js/nav.js diff --git a/functions.php b/functions.php index dcb71ca..85e7419 100644 --- a/functions.php +++ b/functions.php @@ -87,6 +87,19 @@ if ( ! function_exists( 'blogrow_setup' ) ) { add_action( 'after_setup_theme', 'blogrow_setup' ); +/* Custom navigation +/* ------------------------------------ */ +require_once 'functions/nav.php'; +$nav = new \AlxMedia\Nav(); +$nav->enqueue( + [ + 'script' => 'js/nav.js', + 'inline' => false, + ] +); +$nav->init(); + + /* Custom logo /* ------------------------------------ */ if ( ! function_exists( 'blogrow_custom_logo' ) ) { diff --git a/functions/nav.php b/functions/nav.php new file mode 100644 index 0000000..360f779 --- /dev/null +++ b/functions/nav.php @@ -0,0 +1,305 @@ +URL,style=>URL,inline=>true|false]. + * + * @return void + */ + public function enqueue( $args = false ) { + if ( ! $args ) { + return; + } + + // Early exit if we've already enqueued our assets. + if ( self::$enqueued ) { + return; + } + + $args = wp_parse_args( + $args, + [ + 'script' => false, + 'style' => false, + 'inline' => false, + ] + ); + + $this->assets['script'] = $args['script']; + $this->assets['style'] = $args['style']; + $this->inline = $args['inline']; + + if ( $this->inline ) { + add_action( 'wp_footer', [ $this, 'inline_assets' ] ); + } else { + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_assets' ] ); + } + self::$enqueued = true; + } + + /** + * Inline assets. + * + * @access public + * + * @return void + */ + public function inline_assets() { + if ( $this->assets['script'] ) { + echo ''; + } + + if ( $this->assets['style'] ) { + echo ''; + } + } + + /** + * Enqueue assets. + * + * @access public + * + * @return void + */ + public function enqueue_assets() { + if ( $this->assets['style'] ) { + wp_enqueue_style( + $this->handle_prefix . '-style', + get_theme_file_uri( $this->assets['style'] ), + [], + filemtime( get_theme_file_path( $this->assets['style'] ) ) + ); + } + + if ( $this->assets['script'] ) { + wp_enqueue_script( + $this->handle_prefix . '-script', + get_theme_file_uri( $this->assets['script'] ), + [], + filemtime( get_theme_file_path( $this->assets['script'] ) ), + true + ); + } + } + + /** + * A wrapper for the wp_nav_menu function, adding our custom HTML for the expand/collapse button. + * + * @static + * + * @access public + * + * @param array $args The arguments to pass to wp_nav_menu(). + * @param string|false $toggle_label The label for our toggle button. + * @param string $nav_classes CSS classes to add to the