function orbital_add_header_xua() { if (is_customize_preview()) { header('X-XSS-Protection: 0'); } } add_action('send_headers', 'orbital_add_header_xua'); function orbital_advertisment_customizer($wp_customize) { $wp_customize->add_panel('orbital_ads', array( 'title' => __('Adsense and Analytics', 'orbital'), 'description' => __('Remember the limitations and Google Adsense policies.', 'orbital'), 'priority' => 1007, )); $wp_customize->add_section('position_options_analytics', array( 'title' => __('Analytics and Adsense codes', 'orbital'), 'panel' => 'orbital_ads', )); $wp_customize->add_section('position_options_home', array( 'title' => __('Home Ads', 'orbital'), 'panel' => 'orbital_ads', )); $wp_customize->add_section('position_options_single', array( 'title' => __('Single Ads', 'orbital'), 'panel' => 'orbital_ads', )); $wp_customize->add_section('position_options_page', array( 'title' => __('Page Ads', 'orbital'), 'panel' => 'orbital_ads', )); $wp_customize->add_section('position_options_archive', array( 'title' => __('Archive Ads', 'orbital'), 'panel' => 'orbital_ads', )); $wp_customize->add_section('position_options_home_mobile', array( 'title' => __('Home Mobile Ads', 'orbital'), 'panel' => 'orbital_ads', )); $wp_customize->add_section('position_options_single_mobile', array( 'title' => __('Single Mobile Ads', 'orbital'), 'panel' => 'orbital_ads', )); $wp_customize->add_section('position_options_page_mobile', array( 'title' => __('Page Mobile Ads', 'orbital'), 'panel' => 'orbital_ads', )); $wp_customize->add_section('position_options_archive_mobile', array( 'title' => __('Archive Mobile Ads', 'orbital'), 'panel' => 'orbital_ads', )); $position_options = array( 'orbital_advertisment_before_home' => __('Before Home', 'orbital'), 'orbital_advertisment_after_featured_home' => __('After Featured Home', 'orbital'), 'orbital_advertisment_after_home' => __('After Home', 'orbital'), 'orbital_advertisment_before_home_mobile' => __('Before Home Mobile', 'orbital'), 'orbital_advertisment_after_featured_home_mobile' => __('After Featured Home Mobile', 'orbital'), 'orbital_advertisment_after_home_mobile' => __('After Home Mobile', 'orbital'), 'orbital_advertisment_before_single_content' => __('Before Single Content', 'orbital'), 'orbital_advertisment_middle_single_content' => __('Middle Single Content', 'orbital'), 'orbital_advertisment_after_single_content' => __('After Single Content', 'orbital'), 'orbital_advertisment_before_single_content_mobile' => __('Before Single Content Mobile', 'orbital'), 'orbital_advertisment_middle_single_content_mobile' => __('Middle Single Content Mobile', 'orbital'), 'orbital_advertisment_after_single_content_mobile' => __('After Single Content Mobile', 'orbital'), 'orbital_advertisment_before_page_content' => __('Before Page Content', 'orbital'), 'orbital_advertisment_middle_page_content' => __('Middle Page Content', 'orbital'), 'orbital_advertisment_after_page_content' => __('After Page Content', 'orbital'), 'orbital_advertisment_before_page_content_mobile' => __('Before Page Content Mobile', 'orbital'), 'orbital_advertisment_middle_page_content_mobile' => __('Middle Page Content Mobile', 'orbital'), 'orbital_advertisment_after_page_content_mobile' => __('After Page Content Mobile', 'orbital'), 'orbital_advertisment_before_archive' => __('Before Archive', 'orbital'), 'orbital_advertisment_after_featured_archive' => __('After Featured Archive', 'orbital'), 'orbital_advertisment_after_archive' => __('After Archive', 'orbital'), 'orbital_advertisment_after_description_archive' => __('After Description Archive', 'orbital'), 'orbital_advertisment_before_archive_mobile' => __('Before Archive Mobile', 'orbital'), 'orbital_advertisment_after_featured_archive_mobile' => __('After Featured Archive Mobile', 'orbital'), 'orbital_advertisment_after_archive_mobile' => __('After Archive Mobile', 'orbital'), 'orbital_advertisment_after_description_archive_mobile' => __('After Description Archive Mobile', 'orbital'), ); foreach ($position_options as $position_option => $position_value) { $section_control = str_replace('_mobile', '', $position_option); if ($position_option == $section_control) { $wp_customize->add_section($section_control, array( 'title' => $position_value, 'panel' => 'orbital_ads', )); } $wp_customize->add_setting($position_option . '_code', array( 'default' => '', 'transport' => 'refresh', 'sanitize_callback' => '', )); $wp_customize->add_setting($position_option . '_align', array( 'default' => 'center', 'transport' => 'refresh', 'sanitize_callback' => '', )); $wp_customize->add_setting($position_option . '_style', array( 'default' => 'fluid', 'transport' => 'refresh', 'sanitize_callback' => '', )); $wp_customize->add_control(new WP_Customize_Control($wp_customize, $position_option . '_code', array( 'section' => $section_control, 'label' => $position_value, 'settings' => $position_option . '_code', 'type' => 'textarea', ))); $wp_customize->add_control(new WP_Customize_Control($wp_customize, $position_option . '_align', array( 'section' => $section_control, 'label' => 'Alignment', 'settings' => $position_option . '_align', 'type' => 'select', 'choices' => array( 'center' => 'Center', 'left' => 'Left', 'right' => 'Right', ), ))); $wp_customize->add_control(new WP_Customize_Control($wp_customize, $position_option . '_style', array( 'section' => $section_control, 'label' => 'Style', 'settings' => $position_option . '_style', 'type' => 'select', 'choices' => array( 'fluid' => 'Fluid (100%)', 'small' => 'Small Rectangle (300 x 250)', 'medium' => 'Medium Rectangle (336 x 280)', 'large' => 'Large Rectangle (360 x 280)', 'leaderboard' => 'Leaderboard (728 x 90)', 'half-page' => 'Half Page (300 x 600)', ), ))); if (in_array($position_option, array( 'orbital_advertisment_middle_single_content', 'orbital_advertisment_middle_single_content_mobile', 'orbital_advertisment_middle_page_content', 'orbital_advertisment_middle_page_content_mobile'))) { $wp_customize->add_setting($position_option . '_middle_mode', array( 'default' => 'unique', 'transport' => 'refresh', 'sanitize_callback' => '', )); $wp_customize->add_setting($position_option . '_middle_tag', array( 'default' => 'p', 'transport' => 'refresh', 'sanitize_callback' => '', )); $wp_customize->add_setting($position_option . '_middle_number', array( 'default' => 3, 'transport' => 'refresh', 'sanitize_callback' => '', )); $wp_customize->add_control(new WP_Customize_Control($wp_customize, $position_option . '_middle_mode', array( 'section' => $section_control, 'label' => 'Middle Mode', 'settings' => $position_option . '_middle_mode', 'type' => 'select', 'choices' => array( 'unique' => 'Unique', 'scroll' => 'Scroll', ), ))); $wp_customize->add_control(new WP_Customize_Control($wp_customize, $position_option . '_middle_tag', array( 'section' => $section_control, 'label' => 'Middle After Tag', 'settings' => $position_option . '_middle_tag', 'type' => 'select', 'choices' => array( 'p' => 'Paragraph', 'h2' => 'Heading H2', ), ))); $wp_customize->add_control(new WP_Customize_Control($wp_customize, $position_option . '_middle_number', array( 'section' => $section_control, 'label' => 'Middle After Number', 'settings' => $position_option . '_middle_number', 'type' => 'number', 'input_attrs' => array( 'min' => 1, ), ))); } } } final class Orbital_Export_Import_Core { private static $core_options = array( 'blogname', 'blogdescription', 'show_on_front', 'page_on_front', 'page_for_posts', ); public static function init($wp_customize) { if (current_user_can('edit_theme_options')) { if (isset($_REQUEST['orbital-ei-export'])) { self::_export($wp_customize); } if (isset($_REQUEST['orbital-ei-import']) && isset($_FILES['orbital-ei-import-file'])) { self::_import($wp_customize); } } } public static function controls_enqueue_scripts() { // Register wp_register_style('orbital-ei-css', get_template_directory_uri() . '/assets/css/export-import.css', array(), '1.0.0'); wp_register_script('orbital-ei-js', get_template_directory_uri() . '/assets/js/export-import.js', array( 'jquery' ), '1.0.0', true); // Localize wp_localize_script('orbital-ei-js', 'orbitaleil10n', array( 'emptyImport' => __('Please choose a file to import.', 'orbital') )); // Config wp_localize_script('orbital-ei-js', 'orbitaleiConfig', array( 'customizerURL' => admin_url('customize.php'), 'exportNonce' => wp_create_nonce('orbital-ei-exporting') )); // Enqueue wp_enqueue_style('orbital-ei-css'); wp_enqueue_script('orbital-ei-js'); } public static function register($wp_customize) { require get_template_directory() . '/inc/customizer-parts/ei/control.php'; $wp_customize->add_section('orbital-ei-section', array( 'title' => __('Export/Import', 'orbital'), 'priority' => 10000000 )); $wp_customize->add_setting('orbital-ei-setting', array( 'default' => '', 'type' => 'none', 'sanitize_callback' => '', )); $wp_customize->add_control(new Orbital_Export_Import_Control( $wp_customize, 'orbital-ei-setting', array( 'section' => 'orbital-ei-section', 'priority' => 1 ) )); } private static function _export($wp_customize) { if (! wp_verify_nonce($_REQUEST['orbital-ei-export'], 'orbital-ei-exporting')) { return; } $theme = get_stylesheet(); $template = get_template(); $charset = get_option('blog_charset'); $mods = get_theme_mods(); $data = array( 'template' => $template, 'mods' => $mods ? $mods : array(), 'options' => array() ); $settings = $wp_customize->settings(); foreach ($settings as $key => $setting) { if ('option' == $setting->type) { if ('widget_' === substr(strtolower($key), 0, 7)) { continue; } if ('sidebars_' === substr(strtolower($key), 0, 9)) { continue; } if (in_array($key, self::$core_options)) { continue; } $data['options'][ $key ] = $setting->value(); } } $option_keys = apply_filters('Orbital_Export_Import_export_option_keys', array()); foreach ($option_keys as $option_key) { $data['options'][ $option_key ] = get_option($option_key); } if (function_exists('wp_get_custom_css_post')) { $data['wp_css'] = wp_get_custom_css(); } header('Content-disposition: attachment; filename=' . $theme . '-export.dat'); header('Content-Type: application/octet-stream; charset=' . $charset); echo serialize($data); die(); } private static function _import($wp_customize) { if (! wp_verify_nonce($_REQUEST['orbital-ei-import'], 'orbital-ei-importing')) { return; } if (! function_exists('wp_handle_upload')) { require_once(ABSPATH . 'wp-admin/includes/file.php'); } require get_template_directory() . '/inc/customizer-parts/ei/option.php'; global $wp_customize; global $Orbital_Export_Import_error; $Orbital_Export_Import_error = false; $template = get_template(); $overrides = array( 'test_form' => false, 'test_type' => false, 'mimes' => array('dat' => 'text/plain') ); $file = wp_handle_upload($_FILES['orbital-ei-import-file'], $overrides); if (isset($file['error'])) { $Orbital_Export_Import_error = $file['error']; return; } if (! file_exists($file['file'])) { $Orbital_Export_Import_error = __('Error importing settings! Please try again.', 'orbital'); return; } $raw = wp_remote_get($file['url'], array('sslverify' => false)); $raw = wp_remote_retrieve_body($raw); $raw = str_replace('s:12:"orbital-lite"', 's:7:"orbital"', $raw); $data = @unserialize($raw); unlink($file['file']); if ('array' != gettype($data)) { $Orbital_Export_Import_error = __('Error importing settings! Please check that you uploaded a customizer export file.', 'orbital'); return; } if (! isset($data['template']) || ! isset($data['mods'])) { $Orbital_Export_Import_error = __('Error importing settings! Please check that you uploaded a customizer export file.', 'orbital'); return; } if ($data['template'] != $template) { $Orbital_Export_Import_error = __('Error importing settings! The settings you uploaded are not for the current theme.', 'orbital'); return; } if (isset($_REQUEST['orbital-ei-import-images'])) { $data['mods'] = self::_import_images($data['mods']); } if (isset($data['options'])) { foreach ($data['options'] as $option_key => $option_value) { $option = new Orbital_Export_Import_Option($wp_customize, $option_key, array( 'default' => '', 'type' => 'option', 'capability' => 'edit_theme_options' )); $option->import($option_value); } } if (function_exists('wp_update_custom_css_post') && isset($data['wp_css']) && '' !== $data['wp_css']) { wp_update_custom_css_post($data['wp_css']); } do_action('customize_save', $wp_customize); foreach ($data['mods'] as $key => $val) { do_action('customize_save_' . $key, $wp_customize); set_theme_mod($key, $val); } do_action('customize_save_after', $wp_customize); } private static function _import_images($mods) { foreach ($mods as $key => $val) { if (self::_is_image_url($val)) { $data = self::_sideload_image($val); if (! is_wp_error($data)) { $mods[ $key ] = $data->url; if (isset($mods[ $key . '_data' ])) { $mods[ $key . '_data' ] = $data; update_post_meta($data->attachment_id, '_wp_attachment_is_custom_header', get_stylesheet()); } } } } return $mods; } private static function _sideload_image($file) { $data = new stdClass(); if (! function_exists('media_handle_sideload')) { require_once(ABSPATH . 'wp-admin/includes/media.php'); require_once(ABSPATH . 'wp-admin/includes/file.php'); require_once(ABSPATH . 'wp-admin/includes/image.php'); } if (! empty($file)) { preg_match('/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches); $file_array = array(); $file_array['name'] = basename($matches[0]); $file_array['tmp_name'] = download_url($file); if (is_wp_error($file_array['tmp_name'])) { return $file_array['tmp_name']; } $id = media_handle_sideload($file_array, 0); if (is_wp_error($id)) { @unlink($file_array['tmp_name']); return $id; } $meta = wp_get_attachment_metadata($id); $data->attachment_id = $id; $data->url = wp_get_attachment_url($id); $data->thumbnail_url = wp_get_attachment_thumb_url($id); $data->height = $meta['height']; $data->width = $meta['width']; } return $data; } private static function _is_image_url($string = '') { if (is_string($string)) { if (preg_match('/\.(jpg|jpeg|png|gif)/i', $string)) { return true; } } return false; } } add_action('customize_controls_enqueue_scripts', 'Orbital_Export_Import_Core::controls_enqueue_scripts'); add_action('customize_register', 'Orbital_Export_Import_Core::init', 999999); add_action('customize_register', 'Orbital_Export_Import_Core::register'); /** * Toggles animation duration in milliseconds. * * @since 2.6 * * @return int Duration in milliseconds */ function orbitalMenu_toggle_duration() { /** * Filters the animation duration/speed used usually for submenu toggles. * * @since Orbital 2.6 * * @param int $duration Duration in milliseconds. */ $duration = apply_filters( 'orbitalMenu_toggle_duration', 250 ); return $duration; } /** * Adds a Sub Nav Toggle to the Expanded Menu and Mobile Menu. * * @since Orbital 2.6 * * @param stdClass $args An object of wp_nav_menu() arguments. * @param WP_Post $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @return stdClass An object of wp_nav_menu() arguments. */ function orbitalMenu_add_sub_toggles_to_main_menu( $args, $item, $depth ) { // Add sub menu toggles to the Expanded Menu with toggles. if ( isset( $args->show_toggles ) && $args->show_toggles ) { // Wrap the menu item link contents in a div, used for positioning. $args->before = '
'; $args->after = ''; // Add a toggle to items with children. if ( in_array( 'menu-item-has-children', $item->classes, true ) ) { $toggle_target_string = '.menu-modal .menu-item-' . $item->ID . ' > .sub-menu'; $toggle_duration = orbitalMenu_toggle_duration(); // Add the sub menu toggle. $args->after .= ''; } // Close the wrapper. $args->after .= '
'; // Add sub menu icons to the primary menu without toggles. } elseif ( 'primary' === $args->theme_location ) { if ( in_array( 'menu-item-has-children', $item->classes, true ) ) { $args->after = ''; } else { $args->after = ''; } } return $args; } add_filter( 'nav_menu_item_args', 'orbitalMenu_add_sub_toggles_to_main_menu', 10, 3 );/** * The template for displaying 404 pages (not found) * * @link https://codex.wordpress.org/Creating_an_Error_404_Page * * @package WordPress * @subpackage Orbital * @since 1.0 */ get_header(); get_template_part('template-parts/errors/error', '404'); get_footer();