js = $js; $this->css = $css; } public function render($location, $l = []) { add_action('wp_footer', function() use ($location, $l) { include dirname(dirname(dirname(__FILE__))) . '/views/' . $location . '.phtml'; }); } public function make($location, $l = []) { ob_start(); include dirname(dirname(dirname(__FILE__))) . '/views/' . $location . '.phtml'; $output = ob_get_contents(); ob_end_clean(); return $output; } public function echoOrIncludeScripts(OptionsCollection $options) { $css = $this->css->build($options); $js = $this->js->build($options); add_filter('body_class', function($classes) use($options) { $classes[] = 'responsive-menu-' . $options['animation_type'] . '-' . $options['menu_appear_from']; return $classes; }); wp_enqueue_script('jquery'); if($options['external_files'] == 'on') : $data_folder_dir = plugins_url(). '/responsive-menu-data'; $css_file = $data_folder_dir . '/css/responsive-menu-' . get_current_blog_id() . '.css'; $js_file = $data_folder_dir . '/js/responsive-menu-' . get_current_blog_id() . '.js'; wp_enqueue_style('responsive-menu', $css_file, null, false); wp_enqueue_script('responsive-menu', $js_file, ['jquery'], false, $options['scripts_in_footer'] == 'on' ? true : false); else : add_action('wp_head', function() use ($css) { echo ''; }, 100); add_action($options['scripts_in_footer'] == 'on' ? 'wp_footer' : 'wp_head', function() use ($js) { echo ''; }, 100); endif; } public function addShortcode($options, Button $button, Menu $menu) { add_shortcode('responsive_menu', function($atts) use($options, $button, $menu) { if($atts) array_walk($atts, function($a, $b) use ($options) { $options[$b]->setValue($a); }); $html = $this->make('button', ['options' => $options, 'button' => $button->getHtml($options)]); return $html . $this->make('menu', ['options' => $options, 'menu' => $menu->getHtml($options)]); }); } }