コード例 #1
0
ファイル: wpglobus.php プロジェクト: wpglobus/wpglobus
/**
 * Support for Yoast SEO
 */
require_once dirname(__FILE__) . '/includes/wpglobus-yoastseo.php';
/**
 * Support of theme option panels and customizer
 * @since 1.4.0
 */
require_once dirname(__FILE__) . '/includes/class-wpglobus-customize140.php';
WPGlobus_Customize::controller();
/**
 * WPGlobus customize options
 * @since 1.4.6
 */
require_once dirname(__FILE__) . '/includes/admin/class-wpglobus-customize-options.php';
WPGlobus_Customize_Options::controller();
// TODO remove this old updater.
require_once dirname(__FILE__) . '/updater/class-wpglobus-updater.php';
/**
 * TIVWP Updater.
 *
 * @since 1.5.9
 */
if (version_compare(PHP_VERSION, '5.3.0', '>=') && file_exists(dirname(__FILE__) . '/vendor/tivwp/updater/updater.php')) {
    require_once dirname(__FILE__) . '/vendor/tivwp/updater/updater.php';
}
/**
 * In admin area
 */
if (WPGlobus_WP::in_wp_admin()) {
    /**
コード例 #2
0
 /**
  * Load Customize Control JS
  */
 public static function action__customize_controls_enqueue_scripts()
 {
     /**
      * @see wp.customize.control elements
      * for example wp.customize.control('blogname');
      */
     $disabled_setting_mask = array();
     /** navigation menu elements */
     $disabled_setting_mask[] = 'nav_menu_item';
     $disabled_setting_mask[] = 'nav_menu[';
     $disabled_setting_mask[] = 'nav_menu_locations';
     $disabled_setting_mask[] = 'new_menu_name';
     /** widgets */
     $disabled_setting_mask[] = 'widgets';
     /** color elements */
     $disabled_setting_mask[] = 'color';
     /** yoast seo */
     $disabled_setting_mask[] = 'wpseo';
     /** css elements */
     $disabled_setting_mask[] = 'css';
     /** social networks elements */
     $disabled_setting_mask[] = 'facebook';
     $disabled_setting_mask[] = 'twitter';
     $disabled_setting_mask[] = 'linkedin';
     $disabled_setting_mask[] = 'behance';
     $disabled_setting_mask[] = 'dribbble';
     $disabled_setting_mask[] = 'instagram';
     /** since 1.4.4 */
     $disabled_setting_mask[] = 'tumblr';
     $disabled_setting_mask[] = 'flickr';
     $disabled_setting_mask[] = 'wordpress';
     $disabled_setting_mask[] = 'youtube';
     $disabled_setting_mask[] = 'pinterest';
     $disabled_setting_mask[] = 'github';
     $disabled_setting_mask[] = 'rss';
     $disabled_setting_mask[] = 'google';
     $disabled_setting_mask[] = 'email';
     /** since 1.5.9 */
     $disabled_setting_mask[] = 'dropbox';
     $disabled_setting_mask[] = 'foursquare';
     $disabled_setting_mask[] = 'vine';
     $disabled_setting_mask[] = 'vimeo';
     /** since 1.6.0 */
     $disabled_setting_mask[] = 'yelp';
     /**
      * Filter to disable fields in customizer.
      * @see wp.customize.control elements
      * Returning array.
      * @since 1.4.0
      *
      * @param array $disabled_setting_mask An array of disabled masks.
      */
     $disabled_setting_mask = apply_filters('wpglobus_customize_disabled_setting_mask', $disabled_setting_mask);
     $element_selector = array('input[type=text]', 'textarea');
     /**
      * Filter for element selectors.
      * Returning array.
      * @since 1.4.0
      *
      * @param array $element_selector An array of selectors.
      */
     $element_selector = apply_filters('wpglobus_customize_element_selector', $element_selector);
     $set_link_by = array('link', 'url');
     /**
      * Filter of masks to determine links.
      * @see value data-customize-setting-link of element
      * Returning array.
      * @since 1.4.0
      *
      * @param array $set_link_by An array of masks.
      */
     $set_link_by = apply_filters('wpglobus_customize_setlinkby', $set_link_by);
     /**
      * Filter of disabled sections.
      *
      * Returning array.
      * @since 1.5.0
      *
      * @param array $disabled_sections An array of sections.
      */
     $disabled_sections = array();
     $disabled_sections = apply_filters('wpglobus_customize_disabled_sections', $disabled_sections);
     /**
      * Generate language select button for customizer
      * @since 1.6.0
      */
     $attributes['href'] = '#';
     $attributes['style'] = 'margin-left:48px;';
     $attributes['class'] = 'customize-controls-close wpglobus-customize-selector';
     /**
      * Filter of attributes to generate language selector button.
      * For example @see Divi theme http://www.elegantthemes.com/gallery/divi/ .
      *
      * Returning array.
      * @since 1.6.0
      *
      * @param array $attributes An array of attributes.
      * @param string Name of current theme.
      */
     $attributes = apply_filters('wpglobus_customize_language_selector_attrs', $attributes, WPGlobus_Customize_Options::get_theme('name'));
     $string = '';
     foreach ($attributes as $attribute => $value) {
         if (null !== $value) {
             $string .= esc_attr($attribute) . '="' . esc_attr($value) . '" ';
         }
     }
     $selector_button = sprintf('<a %1$s>%2$s</a>', trim($string), '<span class="wpglobus-globe"></span>');
     wp_enqueue_script('wpglobus-customize-control140', WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-control140' . WPGlobus::SCRIPT_SUFFIX() . '.js', array('jquery'), WPGLOBUS_VERSION, true);
     wp_localize_script('wpglobus-customize-control140', 'WPGlobusCustomize', array('version' => WPGLOBUS_VERSION, 'selectorButton' => $selector_button, 'languageAdmin' => WPGlobus::Config()->language, 'disabledSettingMask' => $disabled_setting_mask, 'elementSelector' => $element_selector, 'setLinkBy' => $set_link_by, 'disabledSections' => $disabled_sections, 'controlClass' => 'wpglobus-customize-control'));
 }
コード例 #3
0
 /**
  * Callback for customize_register
  *
  * @param WP_Customize_Manager $wp_customize
  */
 public static function action__customize_register(WP_Customize_Manager $wp_customize)
 {
     /**
      * WPGlobus panel
      */
     $wp_customize->add_panel('wpglobus_settings_panel', array('priority' => 1010, 'capability' => 'edit_theme_options', 'theme_supports' => '', 'title' => __('WPGlobus Settings', 'wpglobus'), 'description' => '<div style="background-color:#eee;padding:10px 5px;">' . self::get_content('welcome_message') . '</div>' . self::get_content('deactivate_message')));
     if (!self::is_theme_enabled()) {
         self::sorry_section($wp_customize, self::$theme);
         return;
     }
     /** wpglobus_customize_language_selector_mode <=> wpglobus_option[show_flag_name] */
     update_option('wpglobus_customize_language_selector_mode', WPGlobus::Config()->show_flag_name);
     /**  */
     if (empty(WPGlobus::Config()->nav_menu)) {
         delete_option('wpglobus_customize_language_selector_menu');
     } else {
         update_option('wpglobus_customize_language_selector_menu', WPGlobus::Config()->nav_menu);
     }
     /** wpglobus_customize_selector_wp_list_pages <=> wpglobus_option[selector_wp_list_pages][show_selector]  */
     update_option('wpglobus_customize_selector_wp_list_pages', WPGlobus::Config()->selector_wp_list_pages);
     /** wpglobus_customize_css_editor <=> wpglobus_option[css_editor]  */
     update_option('wpglobus_customize_css_editor', WPGlobus::Config()->css_editor);
     /**
      * SECTION: Language
      */
     if (1) {
         $wp_customize->add_section('wpglobus_languages_section', array('title' => __('Languages', 'wpglobus'), 'priority' => 10, 'panel' => 'wpglobus_settings_panel'));
         self::$sections['wpglobus_languages_section'] = 'wpglobus_languages_section';
         /** Enabled languages */
         $wp_customize->add_setting('wpglobus_customize_enabled_languages', array('type' => 'option', 'capability' => 'manage_options', 'transport' => 'postMessage'));
         $wp_customize->add_control(new WPGlobusCheckBoxSet($wp_customize, 'wpglobus_customize_enabled_languages', array('section' => 'wpglobus_languages_section', 'settings' => 'wpglobus_customize_enabled_languages', 'priority' => 0, 'items' => WPGlobus::Config()->enabled_languages, 'label' => __('Enabled Languages', 'wpglobus'), 'checkbox_class' => 'wpglobus-listen-change wpglobus-language-item', 'description' => __('These languages are currently enabled on your site.', 'wpglobus'))));
         self::$settings['wpglobus_languages_section']['wpglobus_customize_enabled_languages']['type'] = 'checkbox_set';
         /** @see option wpglobus_option['enabled_languages'] */
         self::$settings['wpglobus_languages_section']['wpglobus_customize_enabled_languages']['option'] = 'enabled_languages';
         /** Add languages */
         /** Generate array $more_languages */
         /** @var array $more_languages */
         $more_languages = array();
         $more_languages['select'] = '---- select ----';
         foreach (WPGlobus::Config()->flag as $code => $file) {
             if (!in_array($code, WPGlobus::Config()->enabled_languages)) {
                 $lang_in_en = '';
                 if (!empty(WPGlobus::Config()->en_language_name[$code])) {
                     $lang_in_en = ' (' . WPGlobus::Config()->en_language_name[$code] . ')';
                 }
                 // '<img src="' . WPGlobus::Config()->flags_url . $file . '" />'
                 $more_languages[$code] = WPGlobus::Config()->language_name[$code] . $lang_in_en;
             }
         }
         $desc_add_languages = __('Choose a language you would like to enable. <br>Press the [Save & Publish] button to confirm.', 'wpglobus') . '<br />';
         // translators: %1$s and %2$s - placeholders to insert HTML link around 'here'
         $desc_add_languages .= sprintf(__('or Add new Language %1$s here %2$s', 'wpglobus'), '<a style="text-decoration:underline;" href="' . admin_url() . 'admin.php?page=' . WPGlobus::LANGUAGE_EDIT_PAGE . '&action=add" target="_blank">', '</a>');
         $wp_customize->add_setting('wpglobus_customize_add_language', array('type' => 'option', 'capability' => 'manage_options', 'transport' => 'postMessage'));
         $wp_customize->add_control('wpglobus_add_languages_select_box', array('settings' => 'wpglobus_customize_add_language', 'label' => __('Add Languages', 'wpglobus'), 'section' => 'wpglobus_languages_section', 'type' => 'select', 'priority' => 10, 'choices' => $more_languages, 'description' => $desc_add_languages));
         //self::$settings[ 'wpglobus_languages_section' ][ 'wpglobus_customize_add_language' ] = 'select';
         /** Language Selector Mode */
         $wp_customize->add_setting('wpglobus_customize_language_selector_mode', array('type' => 'option', 'capability' => 'manage_options', 'transport' => 'refresh'));
         $wp_customize->add_control('wpglobus_customize_language_selector_mode', array('settings' => 'wpglobus_customize_language_selector_mode', 'label' => __('Language Selector Mode', 'wpglobus'), 'section' => 'wpglobus_languages_section', 'type' => 'select', 'priority' => 20, 'choices' => array('code' => __('Two-letter Code with flag (en, ru, it, etc.)', 'wpglobus'), 'full_name' => __('Full Name (English, Russian, Italian, etc.)', 'wpglobus'), 'name' => __('Full Name with flag (English, Russian, Italian, etc.)', 'wpglobus'), 'empty' => __('Flags only', 'wpglobus')), 'description' => __('Choose the way language name and country flag are shown in the drop-down menu', 'wpglobus')));
         self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_mode']['type'] = 'select';
         /** @see option wpglobus_option['show_flag_name'] */
         self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_mode']['option'] = 'show_flag_name';
         /**
          * @see https://make.wordpress.org/core/2016/03/22/implementing-selective-refresh-support-for-widgets/
          * @see https://make.wordpress.org/core/2016/03/10/customizer-improvements-in-4-5/
          *
          * $wp_customize->selective_refresh->add_partial( 'wpglobus_customize_language_selector_mode', array(
          * 'selector' => '#site-navigation',
          * 'render_callback' => function() {
          * wp_nav_menu();
          * },
          * ) );
          * // */
         /** Language Selector Menu */
         /** @var array $nav_menus */
         $nav_menus = WPGlobus::_get_nav_menus();
         $menus = array();
         foreach ($nav_menus as $menu) {
             $menus[$menu->slug] = $menu->name;
         }
         if (!empty($nav_menus) && count($nav_menus) > 1) {
             $menus['all'] = 'All';
         }
         if (empty($menus)) {
             $wp_customize->add_control(new WPGlobusLink($wp_customize, 'wpglobus_customize_language_selector_menu', array('section' => 'wpglobus_languages_section', 'title' => esc_html__('Language Selector Menu', 'wpglobus'), 'settings' => array(), 'priority' => 30, 'type' => 'wpglobus_link', 'href' => esc_attr('javascript: wp.customize.panel( "nav_menus" ).focus();'), 'text' => esc_html__('No menus have been created yet. Create some.', 'wpglobus'), 'description' => esc_html__('Choose the navigation menu where the language selector will be shown', 'wpglobus'))));
             self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_menu']['type'] = 'wpglobus_link';
             self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_menu']['option'] = array();
         } else {
             $wp_customize->add_setting('wpglobus_customize_language_selector_menu', array('type' => 'option', 'capability' => 'manage_options', 'transport' => 'postMessage'));
             $wp_customize->add_control('wpglobus_customize_language_selector_menu', array('settings' => 'wpglobus_customize_language_selector_menu', 'label' => esc_html__('Language Selector Menu', 'wpglobus'), 'section' => 'wpglobus_languages_section', 'type' => 'select', 'priority' => 30, 'choices' => $menus, 'description' => esc_html__('Choose the navigation menu where the language selector will be shown', 'wpglobus')));
             self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_menu']['type'] = 'select';
             /** @see option wpglobus_option['use_nav_menu'] */
             self::$settings['wpglobus_languages_section']['wpglobus_customize_language_selector_menu']['option'] = 'use_nav_menu';
         }
         /** "All Pages" menus Language selector */
         $wp_customize->add_setting('wpglobus_customize_selector_wp_list_pages', array('type' => 'option', 'capability' => 'manage_options', 'transport' => 'postMessage'));
         $wp_customize->add_control(new WPGlobusCheckBox($wp_customize, 'wpglobus_customize_selector_wp_list_pages', array('settings' => 'wpglobus_customize_selector_wp_list_pages', 'title' => __('"All Pages" menus Language selector', 'wpglobus'), 'section' => 'wpglobus_languages_section', 'priority' => 40, 'label' => __('Adds language selector to the menus that automatically list all existing pages (using `wp_list_pages`)', 'wpglobus'))));
         self::$settings['wpglobus_languages_section']['wpglobus_customize_selector_wp_list_pages']['type'] = 'wpglobus_checkbox';
         /** @see option wpglobus_option['selector_wp_list_pages']['show_selector'] */
         self::$settings['wpglobus_languages_section']['wpglobus_customize_selector_wp_list_pages']['option'] = 'show_selector';
         /** Custom CSS */
         $wp_customize->add_setting('wpglobus_customize_css_editor', array('type' => 'option', 'capability' => 'manage_options', 'transport' => 'postMessage'));
         $wp_customize->add_control('wpglobus_customize_css_editor', array('settings' => 'wpglobus_customize_css_editor', 'label' => __('Custom CSS', 'wpglobus'), 'section' => 'wpglobus_languages_section', 'type' => 'textarea', 'priority' => 50, 'description' => __('Here you can enter the CSS rules to adjust the language selector menu for your theme. Look at the examples in the `style-samples.css` file.', 'wpglobus')));
         self::$settings['wpglobus_languages_section']['wpglobus_customize_css_editor']['type'] = 'textarea';
         /** @see option wpglobus_option['css_editor'] */
         self::$settings['wpglobus_languages_section']['wpglobus_customize_css_editor']['option'] = 'css_editor';
     }
     /** end SECTION: Language */
     /**
      * SECTION: Post types
      */
     if (1) {
         $section = 'wpglobus_post_types_section';
         $wp_customize->add_section($section, array('title' => __('Post types', 'wpglobus'), 'priority' => 40, 'panel' => 'wpglobus_settings_panel'));
         self::$sections[$section] = $section;
         if (false === ($enabled_post_types = get_transient(self::$enabled_post_types_key))) {
             $post_types = get_post_types();
             $enabled_post_types = array();
             foreach ($post_types as $post_type) {
                 if (!in_array($post_type, array('attachment', 'revision', 'nav_menu_item'), true)) {
                     if (in_array($post_type, array('post', 'page'))) {
                         $enabled_post_types[$post_type] = $post_type;
                         continue;
                     }
                     foreach (WPGlobus::O()->vendors_scripts as $script => $status) {
                         if (empty($status)) {
                             continue;
                         }
                         if ($script == 'ACF' || $script == 'ACFPRO') {
                             /**
                              * get list @see class-wpglobus.php:145
                              */
                             if (in_array($post_type, array('acf-field-group', 'acf-field', 'acf'))) {
                                 continue 2;
                             }
                         }
                         if ($script == 'WOOCOMMERCE') {
                             /**
                              * get list  @see class-wpglobus.php:171
                              */
                             if (in_array($post_type, array('product', 'product_tag', 'product_cat', 'shop_order', 'shop_coupon', 'product_variation', 'shop_order_refund', 'shop_webhook'))) {
                                 continue 2;
                             }
                         }
                         if ($script == 'WPCF7') {
                             /**
                              * get list @see class-wpglobus.php:195
                              */
                             if (in_array($post_type, array('wpcf7_contact_form'))) {
                                 continue 2;
                             }
                         }
                     }
                     $enabled_post_types[$post_type] = $post_type;
                 }
             }
             set_transient(self::$enabled_post_types_key, $enabled_post_types, 60);
         }
         foreach ($enabled_post_types as $post_type) {
             $status = '';
             if (isset(WPGlobus::Config()->extended_options['post_type'][$post_type])) {
                 if (WPGlobus::Config()->extended_options['post_type'][$post_type] == 1) {
                     $status = '1';
                 }
             } else {
                 $status = '1';
             }
             update_option('wpglobus_customize_post_type_' . $post_type, $status);
         }
         $i = 0;
         foreach ($enabled_post_types as $post_type) {
             $pst = 'wpglobus_customize_post_type_' . $post_type;
             $wp_customize->add_setting($pst, array('type' => 'option', 'capability' => 'manage_options', 'transport' => 'postMessage'));
             $title = '';
             if ($i == 0) {
                 $title = __('Uncheck to disable WPGlobus', 'wpglobus');
             }
             $wp_customize->add_control(new WPGlobusCheckBox($wp_customize, $pst, array('settings' => $pst, 'title' => $title, 'label' => $post_type, 'section' => $section, 'priority' => 10)));
             $i++;
             self::$settings[$section][$pst]['type'] = 'wpglobus_checkbox';
             /** @see option wpglobus_option['post_type'] */
             self::$settings[$section][$pst]['option'] = 'post_type';
         }
     }
     /** end SECTION: Post types */
     /**
      * SECTION: Add ons
      */
     if (1) {
         global $wp_version;
         self::$sections['wpglobus_addons_section'] = 'wpglobus_addons_section';
         if (version_compare($wp_version, '4.5-RC1', '<')) {
             $wp_customize->add_section(self::$sections['wpglobus_addons_section'], array('title' => __('Add-ons', 'wpglobus'), 'priority' => 40, 'panel' => 'wpglobus_settings_panel'));
             /** Add ons setting  */
             $wp_customize->add_setting('wpglobus_customize_add_ons', array('type' => 'option', 'capability' => 'manage_options', 'transport' => 'postMessage'));
             $wp_customize->add_control(new WPGlobusCheckBox($wp_customize, 'wpglobus_customize_add_ons', array('settings' => 'wpglobus_customize_add_ons', 'title' => __('Title', 'wpglobus'), 'label' => __('Label', 'wpglobus'), 'section' => self::$sections['wpglobus_addons_section'], 'type' => 'checkbox', 'priority' => 10, 'description' => __('Description', 'wpglobus'))));
         } else {
             /**
              * Changes in WP 4.5
              * @link https://make.wordpress.org/core/2016/03/10/customizer-improvements-in-4-5/
              */
             $wp_customize->add_section(self::$sections['wpglobus_addons_section'], array('title' => __('Add-ons', 'wpglobus'), 'priority' => 40, 'panel' => 'wpglobus_settings_panel'));
             $wp_customize->add_control('wpglobus_customize_add_ons', array('section' => self::$sections['wpglobus_addons_section'], 'settings' => array(), 'type' => 'button'));
         }
     }
     /** end SECTION: Add ons */
     /**
      * Fires to add customize settings.
      *
      * @since 1.4.6
      *
      * @param WP_Customize_Manager $wp_customize The WP Customize Manager.
      */
     do_action('wpglobus_customize_register', $wp_customize);
     /** @var array $res */
     $res = apply_filters('wpglobus_customize_data', array('sections' => self::$sections, 'settings' => self::$settings));
     self::$sections = $res['sections'];
     self::$settings = $res['settings'];
 }