get_option_and_ensure_autoload() 공개 정적인 메소드

This does _not_ adjust the prefix in any way (does not prefix jetpack_%)
public static get_option_and_ensure_autoload ( string $name, mixed $default ) : mixed | void
$name string Option name
$default mixed (optional)
리턴 mixed | void
예제 #1
0
function jetpack_check_mobile()
{
    if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST || defined('APP_REQUEST') && APP_REQUEST) {
        return false;
    }
    if (!isset($_SERVER["HTTP_USER_AGENT"]) || isset($_COOKIE['akm_mobile']) && $_COOKIE['akm_mobile'] == 'false') {
        return false;
    }
    if (jetpack_mobile_exclude()) {
        return false;
    }
    if (1 == Jetpack_Options::get_option_and_ensure_autoload('wp_mobile_disable', '0')) {
        return false;
    }
    if (isset($_COOKIE['akm_mobile']) && $_COOKIE['akm_mobile'] == 'true') {
        return true;
    }
    $is_mobile = jetpack_is_mobile();
    /**
     * Filter the Mobile check results.
     *
     * @module minileven
     *
     * @since 1.8.0
     *
     * @param bool $is_mobile Is the reader on a mobile device.
     */
    return apply_filters('jetpack_check_mobile', $is_mobile);
}
예제 #2
0
/**
 * Module Name: Mobile Theme
 * Module Description: Optimize your site for smartphones and tablets.
 * Sort Order: 21
 * Recommendation Order: 11
 * First Introduced: 1.8
 * Requires Connection: No
 * Auto Activate: No
 * Module Tags: Appearance, Mobile, Recommended
 * Feature: Appearance
 * Additional Search Queries: mobile, theme, minileven
 */
function jetpack_load_minileven()
{
    include dirname(__FILE__) . "/minileven/minileven.php";
    if (Jetpack_Options::get_option_and_ensure_autoload('wp_mobile_app_promos', '0') != '1') {
        remove_action('wp_mobile_theme_footer', 'jetpack_mobile_app_promo');
    }
}
예제 #3
0
 /**
  * Registers the custom post types and adds action/filter handlers, but
  * only if the site supports it
  */
 function maybe_register_cpt()
 {
     // Add an option to enable the CPT
     add_action('admin_init', array($this, 'settings_api_init'));
     // Check on theme switch if theme supports CPT and setting is disabled
     add_action('after_switch_theme', array($this, 'activation_post_type_support'));
     $setting = Jetpack_Options::get_option_and_ensure_autoload(self::OPTION_NAME, '0');
     // Bail early if Testimonial option is not set and the theme doesn't declare support
     if (empty($setting) && !$this->site_supports_custom_post_type()) {
         return;
     }
     if ((!defined('IS_WPCOM') || !IS_WPCOM) && !Jetpack::is_module_active('custom-content-types')) {
         return;
     }
     // Enable Omnisearch for CPT.
     if (class_exists('Jetpack_Omnisearch_Posts')) {
         new Jetpack_Omnisearch_Posts(self::CUSTOM_POST_TYPE);
     }
     // CPT magic
     $this->register_post_types();
     add_action(sprintf('add_option_%s', self::OPTION_NAME), array($this, 'flush_rules_on_enable'), 10);
     add_action(sprintf('update_option_%s', self::OPTION_NAME), array($this, 'flush_rules_on_enable'), 10);
     add_action(sprintf('publish_%s', self::CUSTOM_POST_TYPE), array($this, 'flush_rules_on_first_testimonial'));
     add_action('after_switch_theme', array($this, 'flush_rules_on_switch'));
     // Admin Customization
     add_filter('enter_title_here', array($this, 'change_default_title'));
     add_filter(sprintf('manage_%s_posts_columns', self::CUSTOM_POST_TYPE), array($this, 'edit_title_column_label'));
     add_filter('post_updated_messages', array($this, 'updated_messages'));
     add_action('customize_register', array($this, 'customize_register'));
     // Only add the 'Customize' sub-menu if the theme supports it.
     $num_testimonials = self::count_testimonials();
     if (!empty($num_testimonials) && current_theme_supports(self::CUSTOM_POST_TYPE)) {
         add_action('admin_menu', array($this, 'add_customize_page'));
     }
     if (defined('IS_WPCOM') && IS_WPCOM) {
         // Track all the things
         add_action(sprintf('add_option_%s', self::OPTION_NAME), array($this, 'new_activation_stat_bump'));
         add_action(sprintf('update_option_%s', self::OPTION_NAME), array($this, 'update_option_stat_bump'), 11, 2);
         add_action(sprintf('publish_%s', self::CUSTOM_POST_TYPE), array($this, 'new_testimonial_stat_bump'));
         // Add to Dotcom XML sitemaps
         add_filter('wpcom_sitemap_post_types', array($this, 'add_to_sitemap'));
     } else {
         // Add to Jetpack XML sitemap
         add_filter('jetpack_sitemap_post_types', array($this, 'add_to_sitemap'));
     }
     // Adjust CPT archive and custom taxonomies to obey CPT reading setting
     add_filter('pre_get_posts', array($this, 'query_reading_setting'), 20);
     add_filter('infinite_scroll_settings', array($this, 'infinite_scroll_click_posts_per_page'));
     // Register [jetpack_testimonials] always and
     // register [testimonials] if [testimonials] isn't already set
     add_shortcode('jetpack_testimonials', array($this, 'jetpack_testimonial_shortcode'));
     if (!shortcode_exists('testimonials')) {
         add_shortcode('testimonials', array($this, 'jetpack_testimonial_shortcode'));
     }
     // If CPT was enabled programatically and no CPT items exist when user switches away, disable
     if ($setting && $this->site_supports_custom_post_type()) {
         add_action('switch_theme', array($this, 'deactivation_post_type_support'));
     }
 }
예제 #4
0
 /**
  * Conditionally hook into WordPress.
  *
  * Setup user option for enabling CPT
  * If user has CPT enabled, show in admin
  */
 function __construct()
 {
     // Add an option to enable the CPT
     add_action('admin_init', array($this, 'settings_api_init'));
     // Check on theme switch if theme supports CPT and setting is disabled
     add_action('after_switch_theme', array($this, 'activation_post_type_support'));
     // Make sure the post types are loaded for imports
     add_action('import_start', array($this, 'register_post_types'));
     // Add to REST API post type whitelist
     add_filter('rest_api_allowed_post_types', array($this, 'allow_portfolio_rest_api_type'));
     $setting = Jetpack_Options::get_option_and_ensure_autoload(self::OPTION_NAME, '0');
     // Bail early if Portfolio option is not set and the theme doesn't declare support
     if (empty($setting) && !$this->site_supports_custom_post_type()) {
         return;
     }
     // Enable Omnisearch for Portfolio Items.
     if (class_exists('Jetpack_Omnisearch_Posts')) {
         new Jetpack_Omnisearch_Posts(self::CUSTOM_POST_TYPE);
     }
     // CPT magic
     $this->register_post_types();
     add_action(sprintf('add_option_%s', self::OPTION_NAME), array($this, 'flush_rules_on_enable'), 10);
     add_action(sprintf('update_option_%s', self::OPTION_NAME), array($this, 'flush_rules_on_enable'), 10);
     add_action(sprintf('publish_%s', self::CUSTOM_POST_TYPE), array($this, 'flush_rules_on_first_project'));
     add_action('after_switch_theme', array($this, 'flush_rules_on_switch'));
     // Admin Customization
     add_filter('post_updated_messages', array($this, 'updated_messages'));
     add_filter(sprintf('manage_%s_posts_columns', self::CUSTOM_POST_TYPE), array($this, 'edit_admin_columns'));
     add_filter(sprintf('manage_%s_posts_custom_column', self::CUSTOM_POST_TYPE), array($this, 'image_column'), 10, 2);
     add_action('customize_register', array($this, 'customize_register'));
     add_image_size('jetpack-portfolio-admin-thumb', 50, 50, true);
     add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));
     // register jetpack_portfolio shortcode and portfolio shortcode (legacy)
     add_shortcode('portfolio', array($this, 'portfolio_shortcode'));
     add_shortcode('jetpack_portfolio', array($this, 'portfolio_shortcode'));
     if (defined('IS_WPCOM') && IS_WPCOM) {
         // Add to Dotcom XML sitemaps
         add_filter('wpcom_sitemap_post_types', array($this, 'add_to_sitemap'));
     } else {
         // Add to Jetpack XML sitemap
         add_filter('jetpack_sitemap_post_types', array($this, 'add_to_sitemap'));
     }
     // Adjust CPT archive and custom taxonomies to obey CPT reading setting
     add_filter('pre_get_posts', array($this, 'query_reading_setting'));
     // If CPT was enabled programatically and no CPT items exist when user switches away, disable
     if ($setting && $this->site_supports_custom_post_type()) {
         add_action('switch_theme', array($this, 'deactivation_post_type_support'));
     }
 }
function jetpack_verification_print_meta()
{
    $verification_services_codes = Jetpack_Options::get_option_and_ensure_autoload('verification_services_codes', '0');
    if (is_array($verification_services_codes)) {
        $ver_output = "<!-- Jetpack Site Verification Tags -->\n";
        foreach (jetpack_verification_services() as $name => $service) {
            if (is_array($service) && !empty($verification_services_codes["{$name}"])) {
                $ver_tag = sprintf('<meta name="%s" content="%s" />', esc_attr($service["key"]), esc_attr($verification_services_codes["{$name}"]));
                /**
                 * Filter the meta tag template used for all verification tools.
                 *
                 * @module verification-tools
                 *
                 * @since 3.0.0
                 *
                 * @param string $ver_tag Verification Tool meta tag.
                 */
                $ver_output .= apply_filters('jetpack_site_verification_output', $ver_tag);
                $ver_output .= "\n";
            }
        }
        echo $ver_output;
    }
}
예제 #6
0
파일: likes.php 프로젝트: kanei/vantuch.cz
 /**
  * Returns the current state of the "WordPress.com Likes are" option.
  * @return boolean true if enabled sitewide, false if not
  */
 function is_enabled_sitewide()
 {
     /**
      * Filters whether Likes are enabled by default on all posts.
      * true if enabled sitewide, false if not.
      *
      * @module likes
      *
      * @since 2.2.0
      *
      * @param bool $option Are Likes enabled sitewide.
      */
     return (bool) apply_filters('wpl_is_enabled_sitewide', !Jetpack_Options::get_option_and_ensure_autoload('disabled_likes', 0));
 }
예제 #7
0
 function admin_init()
 {
     // If the plugin is not connected, display a connect message.
     if (Jetpack_Options::get_option_and_ensure_autoload('do_activate', '0') || !Jetpack_Options::get_option('activated')) {
         Jetpack::plugin_initialize();
     }
     if (!Jetpack::is_active() && !Jetpack::is_development_mode()) {
         Jetpack_Connection_Banner::init();
     } elseif (false === Jetpack_Options::get_option('fallback_no_verify_ssl_certs')) {
         // Upgrade: 1.1 -> 1.1.1
         // Check and see if host can verify the Jetpack servers' SSL certificate
         $args = array();
         Jetpack_Client::_wp_remote_request(Jetpack::fix_url_for_bad_hosts(Jetpack::api_url('test')), $args, true);
     } else {
         if ($this->can_display_jetpack_manage_notice() && !Jetpack_Options::get_option('dismissed_manage_banner')) {
             // Show the notice on the Dashboard only for now
             add_action('load-index.php', array($this, 'prepare_manage_jetpack_notice'));
         }
     }
     if (current_user_can('manage_options') && 'AUTO' == JETPACK_CLIENT__HTTPS && !self::permit_ssl()) {
         add_action('jetpack_notices', array($this, 'alert_auto_ssl_fail'));
     }
     add_action('load-plugins.php', array($this, 'intercept_plugin_error_scrape_init'));
     add_action('admin_enqueue_scripts', array($this, 'admin_menu_css'));
     add_filter('plugin_action_links_' . plugin_basename(JETPACK__PLUGIN_DIR . 'jetpack.php'), array($this, 'plugin_action_links'));
     if (Jetpack::is_active() || Jetpack::is_development_mode()) {
         // Artificially throw errors in certain whitelisted cases during plugin activation
         add_action('activate_plugin', array($this, 'throw_error_on_activate_plugin'));
     }
     // Jetpack Manage Activation Screen from .com
     Jetpack::module_configuration_activation_screen('manage', array($this, 'manage_activate_screen'));
     // Add custom column in wp-admin/users.php to show whether user is linked.
     add_filter('manage_users_columns', array($this, 'jetpack_icon_user_connected'));
     add_action('manage_users_custom_column', array($this, 'jetpack_show_user_connected_icon'), 10, 3);
     add_action('admin_print_styles', array($this, 'jetpack_user_col_style'));
 }
예제 #8
0
 /**
  * Modify Infinite Scroll configuration information
  *
  * @uses Jetpack::get_active_modules, is_user_logged_in, stats_get_options, Jetpack_Options::get_option, get_option, JETPACK__API_VERSION, JETPACK__VERSION
  * @filter infinite_scroll_js_settings
  * @return array
  */
 public function filter_infinite_scroll_js_settings($settings)
 {
     // Provide WP Stats info for tracking Infinite Scroll loads
     // Abort if Stats module isn't active
     if (in_array('stats', Jetpack::get_active_modules())) {
         // Abort if user is logged in but logged-in users shouldn't be tracked.
         if (is_user_logged_in() && function_exists('stats_get_options')) {
             $stats_options = stats_get_options();
             $track_loggedin_users = isset($stats_options['reg_users']) ? (bool) $stats_options['reg_users'] : false;
             if (!$track_loggedin_users) {
                 return $settings;
             }
         }
         // We made it this far, so gather the data needed to track IS views
         $settings['stats'] = 'blog=' . Jetpack_Options::get_option('id') . '&host=' . parse_url(get_option('home'), PHP_URL_HOST) . '&v=ext&j=' . JETPACK__API_VERSION . ':' . JETPACK__VERSION;
         // Pagetype parameter
         $settings['stats'] .= '&x_pagetype=infinite';
         if ('click' == $settings['type']) {
             $settings['stats'] .= '-click';
         }
         $settings['stats'] .= '-jetpack';
     }
     // Check if Google Analytics tracking is requested
     $settings['google_analytics'] = (bool) Jetpack_Options::get_option_and_ensure_autoload($this->option_name_google_analytics, 0);
     return $settings;
 }
 static function site_tag()
 {
     $site_tag = Jetpack_Options::get_option_and_ensure_autoload('jetpack-twitter-cards-site-tag', '');
     if (empty($site_tag)) {
         if (defined('IS_WPCOM') && IS_WPCOM) {
             return 'wordpressdotcom';
         } else {
             return;
         }
     }
     return $site_tag;
 }
예제 #10
0
function sharing_init()
{
    if (Jetpack_Options::get_option_and_ensure_autoload('sharedaddy_disable_resources', '0')) {
        add_filter('sharing_js', 'sharing_disable_js');
        remove_action('wp_head', 'sharing_add_header', 1);
    }
}
예제 #11
0
    static function link_tag()
    {
        global $blog_id, $current_blog;
        if (apply_filters('safecss_style_error', false)) {
            return;
        }
        if (!is_super_admin() && isset($current_blog) && (1 == $current_blog->spam || 1 == $current_blog->deleted)) {
            return;
        }
        if (Jetpack_Custom_CSS::is_customizer_preview()) {
            return;
        }
        $css = '';
        $option = Jetpack_Custom_CSS::is_preview() ? 'safecss_preview' : 'safecss';
        if ('safecss' == $option) {
            if (Jetpack_Options::get_option_and_ensure_autoload('safecss_revision_migrated', '0')) {
                $safecss_post = Jetpack_Custom_CSS::get_post();
                if (!empty($safecss_post['post_content'])) {
                    $css = $safecss_post['post_content'];
                }
            } else {
                $current_revision = Jetpack_Custom_CSS::get_current_revision();
                if (!empty($current_revision['post_content'])) {
                    $css = $current_revision['post_content'];
                }
            }
            // Fix for un-migrated Custom CSS
            if (empty($safecss_post)) {
                $_css = Jetpack_Options::get_option_and_ensure_autoload('safecss', '');
                if (!empty($_css)) {
                    $css = $_css;
                }
            }
        }
        if ('safecss_preview' == $option) {
            $safecss_post = Jetpack_Custom_CSS::get_current_revision();
            if (!empty($safecss_post['post_content'])) {
                $css = $safecss_post['post_content'];
            }
        }
        $css = str_replace(array('\\\\00BB \\\\0020', '\\0BB \\020', '0BB 020'), '\\00BB \\0020', $css);
        if ($css == '') {
            return;
        }
        if (apply_filters('safecss_embed_style', false, $css)) {
            echo "\r\n" . '<style id="custom-css-css">' . Jetpack_Custom_CSS::get_css(true) . "</style>\r\n";
        } else {
            $href = home_url('/');
            $href = add_query_arg('custom-css', 1, $href);
            $href = add_query_arg('csblog', $blog_id, $href);
            $href = add_query_arg('cscache', 6, $href);
            $href = add_query_arg('csrev', (int) get_option($option . '_rev'), $href);
            /**
             * Filter the Custom CSS link enqueued in the head.
             *
             * @module custom-css
             *
             * @since 1.7.0
             *
             * @param string $href Custom CSS link enqueued in the head.
             * @param string $blog_id Blog ID.
             */
            $href = apply_filters('safecss_href', $href, $blog_id);
            if (Jetpack_Custom_CSS::is_preview()) {
                $href = add_query_arg('csspreview', 'true', $href);
            }
            ?>
			<link rel="stylesheet" id="custom-css-css" type="text/css" href="<?php 
            echo esc_url($href);
            ?>
" />
			<?php 
        }
        /**
         * Fires after creating the <link> in the <head> element for the custom css stylesheet.
         *
         * @module custom-css
         *
         * @since 2.2.2
         */
        do_action('safecss_link_tag_post');
    }
예제 #12
0
 function enqueue_assets($output)
 {
     if (!empty($output) && !apply_filters('jp_carousel_force_enable', false)) {
         // Bail because someone is overriding the [gallery] shortcode.
         remove_filter('gallery_style', array($this, 'add_data_to_container'));
         remove_filter('wp_get_attachment_image_attributes', array($this, 'add_data_to_images'));
         // Display message that carousel has bailed, if user is super_admin, and if we're not on WordPress.com.
         if (is_super_admin() && !(defined('IS_WPCOM') && IS_WPCOM)) {
             add_filter('post_gallery', array($this, 'display_bail_message'));
         }
         return $output;
     }
     /**
      * Fires when thumbnails are shown in Carousel.
      *
      * @module carousel
      *
      * @since 1.6.0
      **/
     do_action('jp_carousel_thumbnails_shown');
     if ($this->first_run) {
         wp_enqueue_script('jetpack-carousel', plugins_url('jetpack-carousel.js', __FILE__), array('jquery.spin'), $this->asset_version('20160325'), true);
         // Note: using  home_url() instead of admin_url() for ajaxurl to be sure  to get same domain on wpcom when using mapped domains (also works on self-hosted)
         // Also: not hardcoding path since there is no guarantee site is running on site root in self-hosted context.
         $is_logged_in = is_user_logged_in();
         $current_user = wp_get_current_user();
         $comment_registration = intval(get_option('comment_registration'));
         $require_name_email = intval(get_option('require_name_email'));
         $localize_strings = array('widths' => $this->prebuilt_widths, 'is_logged_in' => $is_logged_in, 'lang' => strtolower(substr(get_locale(), 0, 2)), 'ajaxurl' => set_url_scheme(admin_url('admin-ajax.php')), 'nonce' => wp_create_nonce('carousel_nonce'), 'display_exif' => $this->test_1or0_option(Jetpack_Options::get_option_and_ensure_autoload('carousel_display_exif', true)), 'display_geo' => $this->test_1or0_option(Jetpack_Options::get_option_and_ensure_autoload('carousel_display_geo', true)), 'background_color' => $this->carousel_background_color_sanitize(Jetpack_Options::get_option_and_ensure_autoload('carousel_background_color', '')), 'comment' => __('Comment', 'jetpack'), 'post_comment' => __('Post Comment', 'jetpack'), 'write_comment' => __('Write a Comment...', 'jetpack'), 'loading_comments' => __('Loading Comments...', 'jetpack'), 'download_original' => sprintf(__('View full size <span class="photo-size">%1$s<span class="photo-size-times">&times;</span>%2$s</span>', 'jetpack'), '{0}', '{1}'), 'no_comment_text' => __('Please be sure to submit some text with your comment.', 'jetpack'), 'no_comment_email' => __('Please provide an email address to comment.', 'jetpack'), 'no_comment_author' => __('Please provide your name to comment.', 'jetpack'), 'comment_post_error' => __('Sorry, but there was an error posting your comment. Please try again later.', 'jetpack'), 'comment_approved' => __('Your comment was approved.', 'jetpack'), 'comment_unapproved' => __('Your comment is in moderation.', 'jetpack'), 'camera' => __('Camera', 'jetpack'), 'aperture' => __('Aperture', 'jetpack'), 'shutter_speed' => __('Shutter Speed', 'jetpack'), 'focal_length' => __('Focal Length', 'jetpack'), 'comment_registration' => $comment_registration, 'require_name_email' => $require_name_email, 'login_url' => wp_login_url(apply_filters('the_permalink', get_permalink())));
         if (!isset($localize_strings['jetpack_comments_iframe_src']) || empty($localize_strings['jetpack_comments_iframe_src'])) {
             // We're not using Comments after all, so fallback to standard local comments.
             if ($is_logged_in) {
                 $localize_strings['local_comments_commenting_as'] = '<p id="jp-carousel-commenting-as">' . sprintf(__('Commenting as %s', 'jetpack'), $current_user->data->display_name) . '</p>';
             } else {
                 if ($comment_registration) {
                     $localize_strings['local_comments_commenting_as'] = '<p id="jp-carousel-commenting-as">' . __('You must be <a href="#" class="jp-carousel-comment-login">logged in</a> to post a comment.', 'jetpack') . '</p>';
                 } else {
                     $required = $require_name_email ? __('%s (Required)', 'jetpack') : '%s';
                     $localize_strings['local_comments_commenting_as'] = '' . '<fieldset><label for="email">' . sprintf($required, __('Email', 'jetpack')) . '</label> ' . '<input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field" /></fieldset>' . '<fieldset><label for="author">' . sprintf($required, __('Name', 'jetpack')) . '</label> ' . '<input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field" /></fieldset>' . '<fieldset><label for="url">' . __('Website', 'jetpack') . '</label> ' . '<input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field" /></fieldset>';
                 }
             }
         }
         /**
          * Handle WP stats for images in full-screen.
          * Build string with tracking info.
          */
         if (in_array('stats', Jetpack::get_active_modules()) && !Jetpack::is_development_mode()) {
             $localize_strings['stats'] = 'blog=' . Jetpack_Options::get_option('id') . '&host=' . parse_url(get_option('home'), PHP_URL_HOST) . '&v=ext&j=' . JETPACK__API_VERSION . ':' . JETPACK__VERSION;
             // Set the stats as empty if user is logged in but logged-in users shouldn't be tracked.
             if (is_user_logged_in() && function_exists('stats_get_options')) {
                 $stats_options = stats_get_options();
                 $track_loggedin_users = isset($stats_options['reg_users']) ? (bool) $stats_options['reg_users'] : false;
                 if (!$track_loggedin_users) {
                     $localize_strings['stats'] = '';
                 }
             }
         }
         /**
          * Filter the strings passed to the Carousel's js file.
          *
          * @module carousel
          *
          * @since 1.6.0
          *
          * @param array $localize_strings Array of strings passed to the Jetpack js file.
          */
         $localize_strings = apply_filters('jp_carousel_localize_strings', $localize_strings);
         wp_localize_script('jetpack-carousel', 'jetpackCarouselStrings', $localize_strings);
         if (is_rtl()) {
             wp_enqueue_style('jetpack-carousel', plugins_url('/rtl/jetpack-carousel-rtl.css', __FILE__), array(), $this->asset_version('20120629'));
         } else {
             wp_enqueue_style('jetpack-carousel', plugins_url('jetpack-carousel.css', __FILE__), array(), $this->asset_version('20120629'));
         }
         wp_register_style('jetpack-carousel-ie8fix', plugins_url('jetpack-carousel-ie8fix.css', __FILE__), array(), $this->asset_version('20121024'));
         $GLOBALS['wp_styles']->add_data('jetpack-carousel-ie8fix', 'conditional', 'lte IE 8');
         wp_enqueue_style('jetpack-carousel-ie8fix');
         /**
          * Fires after carousel assets are enqueued for the first time.
          * Allows for adding additional assets to the carousel page.
          *
          * @module carousel
          *
          * @since 1.6.0
          *
          * @param bool $first_run First load if Carousel on the page.
          * @param array $localized_strings Array of strings passed to the Jetpack js file.
          */
         do_action('jp_carousel_enqueue_assets', $this->first_run, $localize_strings);
         $this->first_run = false;
     }
     return $output;
 }
예제 #13
0
 public function tiles_enabled()
 {
     // Check the setting status
     return '' != Jetpack_Options::get_option_and_ensure_autoload('tiled_galleries', '');
 }
예제 #14
0
 /**
  * Is Markdown conversion for comments enabled?
  * @return boolean
  */
 public function is_commenting_enabled()
 {
     return (bool) Jetpack_Options::get_option_and_ensure_autoload(self::COMMENT_OPTION, '');
 }
예제 #15
0
function jetpack_og_tags()
{
    /**
     * Allow Jetpack to output Open Graph Meta Tags.
     *
     * @module sharedaddy, publicize
     *
     * @since 2.0.0
     * @deprecated 2.0.3 Duplicative filter. Use `jetpack_enable_open_graph`.
     *
     * @param bool true Should Jetpack's Open Graph Meta Tags be enabled. Default to true.
     */
    if (false === apply_filters('jetpack_enable_opengraph', true)) {
        _deprecated_function('jetpack_enable_opengraph', '2.0.3', 'jetpack_enable_open_graph');
        return;
    }
    // Disable the widont filter on WP.com to avoid stray &nbsps
    $disable_widont = remove_filter('the_title', 'widont');
    $og_output = "\n<!-- Jetpack Open Graph Tags -->\n";
    $tags = array();
    /**
     * Filter the minimum width of the images used in Jetpack Open Graph Meta Tags.
     *
     * @module sharedaddy, publicize
     *
     * @since 2.0.0
     *
     * @param int 200 Minimum image width used in Jetpack Open Graph Meta Tags.
     */
    $image_width = absint(apply_filters('jetpack_open_graph_image_width', 200));
    /**
     * Filter the minimum height of the images used in Jetpack Open Graph Meta Tags.
     *
     * @module sharedaddy, publicize
     *
     * @since 2.0.0
     *
     * @param int 200 Minimum image height used in Jetpack Open Graph Meta Tags.
     */
    $image_height = absint(apply_filters('jetpack_open_graph_image_height', 200));
    $description_length = 197;
    if (is_home() || is_front_page()) {
        $site_type = Jetpack_Options::get_option_and_ensure_autoload('open_graph_protocol_site_type', '');
        $tags['og:type'] = !empty($site_type) ? $site_type : 'website';
        $tags['og:title'] = get_bloginfo('name');
        $tags['og:description'] = get_bloginfo('description');
        $front_page_id = get_option('page_for_posts');
        if ('page' == get_option('show_on_front') && $front_page_id && is_home()) {
            $tags['og:url'] = get_permalink($front_page_id);
        } else {
            $tags['og:url'] = home_url('/');
        }
        // Associate a blog's root path with one or more Facebook accounts
        $facebook_admins = Jetpack_Options::get_option_and_ensure_autoload('facebook_admins', array());
        if (!empty($facebook_admins)) {
            $tags['fb:admins'] = $facebook_admins;
        }
    } else {
        if (is_author()) {
            $tags['og:type'] = 'profile';
            $author = get_queried_object();
            $tags['og:title'] = $author->display_name;
            if (!empty($author->user_url)) {
                $tags['og:url'] = $author->user_url;
            } else {
                $tags['og:url'] = get_author_posts_url($author->ID);
            }
            $tags['og:description'] = $author->description;
            $tags['profile:first_name'] = get_the_author_meta('first_name', $author->ID);
            $tags['profile:last_name'] = get_the_author_meta('last_name', $author->ID);
        } else {
            if (is_singular()) {
                global $post;
                $data = $post;
                // so that we don't accidentally explode the global
                $tags['og:type'] = 'article';
                if (empty($data->post_title)) {
                    $tags['og:title'] = ' ';
                } else {
                    /** This filter is documented in core/src/wp-includes/post-template.php */
                    $tags['og:title'] = wp_kses(apply_filters('the_title', $data->post_title, $data->ID), array());
                }
                $tags['og:url'] = get_permalink($data->ID);
                if (!post_password_required()) {
                    if (!empty($data->post_excerpt)) {
                        $tags['og:description'] = preg_replace('@https?://[\\S]+@', '', strip_shortcodes(wp_kses($data->post_excerpt, array())));
                    } else {
                        $exploded_content_on_more_tag = explode('<!--more-->', $data->post_content);
                        $tags['og:description'] = wp_trim_words(preg_replace('@https?://[\\S]+@', '', strip_shortcodes(wp_kses($exploded_content_on_more_tag[0], array()))));
                    }
                }
                if (empty($tags['og:description'])) {
                    /**
                     * Filter the fallback `og:description` used when no excerpt information is provided.
                     *
                     * @module sharedaddy, publicize
                     *
                     * @since 3.9.0
                     *
                     * @param string $var  Fallback og:description. Default is translated `Visit the post for more'.
                     * @param object $data Post object for the current post.
                     */
                    $tags['og:description'] = apply_filters('jetpack_open_graph_fallback_description', __('Visit the post for more.', 'jetpack'), $data);
                } else {
                    // Intentionally not using a filter to prevent pollution. @see https://github.com/Automattic/jetpack/pull/2899#issuecomment-151957382
                    $tags['og:description'] = wp_kses(trim(convert_chars(wptexturize($tags['og:description']))), array());
                }
                $tags['article:published_time'] = date('c', strtotime($data->post_date_gmt));
                $tags['article:modified_time'] = date('c', strtotime($data->post_modified_gmt));
                if (post_type_supports(get_post_type($data), 'author') && isset($data->post_author)) {
                    $publicize_facebook_user = get_post_meta($data->ID, '_publicize_facebook_user', true);
                    if (!empty($publicize_facebook_user)) {
                        $tags['article:author'] = esc_url($publicize_facebook_user);
                    }
                }
            }
        }
    }
    /**
     * Allow plugins to inject additional template-specific Open Graph tags.
     *
     * @module sharedaddy, publicize
     *
     * @since 3.0.0
     *
     * @param array $tags Array of Open Graph Meta tags.
     * @param array $args Array of image size parameters.
     */
    $tags = apply_filters('jetpack_open_graph_base_tags', $tags, compact('image_width', 'image_height'));
    // Re-enable widont if we had disabled it
    if ($disable_widont) {
        add_filter('the_title', 'widont');
    }
    /**
     * Do not return any Open Graph Meta tags if we don't have any info about a post.
     *
     * @module sharedaddy, publicize
     *
     * @since 3.0.0
     *
     * @param bool true Do not return any Open Graph Meta tags if we don't have any info about a post.
     */
    if (empty($tags) && apply_filters('jetpack_open_graph_return_if_empty', true)) {
        return;
    }
    $tags['og:site_name'] = get_bloginfo('name');
    // Get image info and build tags
    if (!post_password_required()) {
        $image_info = jetpack_og_get_image($image_width, $image_height);
        $tags['og:image'] = $image_info['src'];
        if (!empty($image_info['width'])) {
            $tags['og:image:width'] = $image_info['width'];
        }
        if (!empty($image_info['height'])) {
            $tags['og:image:height'] = $image_info['height'];
        }
    }
    // Facebook whines if you give it an empty title
    if (empty($tags['og:title'])) {
        $tags['og:title'] = __('(no title)', 'jetpack');
    }
    // Shorten the description if it's too long
    if (isset($tags['og:description'])) {
        $tags['og:description'] = strlen($tags['og:description']) > $description_length ? mb_substr($tags['og:description'], 0, $description_length) . '…' : $tags['og:description'];
    }
    // Try to add OG locale tag if the WP->FB data mapping exists
    if (defined('JETPACK__GLOTPRESS_LOCALES_PATH') && file_exists(JETPACK__GLOTPRESS_LOCALES_PATH)) {
        require_once JETPACK__GLOTPRESS_LOCALES_PATH;
        $_locale = get_locale();
        // We have to account for w.org vs WP.com locale divergence
        if (defined('IS_WPCOM') && IS_WPCOM) {
            $gp_locale = GP_Locales::by_field('slug', $_locale);
        } else {
            $gp_locale = GP_Locales::by_field('wp_locale', $_locale);
        }
    }
    if (isset($gp_locale->facebook_locale) && !empty($gp_locale->facebook_locale)) {
        $tags['og:locale'] = $gp_locale->facebook_locale;
    }
    /**
     * Allow the addition of additional Open Graph Meta tags, or modify the existing tags.
     *
     * @module sharedaddy, publicize
     *
     * @since 2.0.0
     *
     * @param array $tags Array of Open Graph Meta tags.
     * @param array $args Array of image size parameters.
     */
    $tags = apply_filters('jetpack_open_graph_tags', $tags, compact('image_width', 'image_height'));
    // secure_urls need to go right after each og:image to work properly so we will abstract them here
    $secure = $tags['og:image:secure_url'] = empty($tags['og:image:secure_url']) ? '' : $tags['og:image:secure_url'];
    unset($tags['og:image:secure_url']);
    $secure_image_num = 0;
    foreach ((array) $tags as $tag_property => $tag_content) {
        // to accommodate multiple images
        $tag_content = (array) $tag_content;
        $tag_content = array_unique($tag_content);
        foreach ($tag_content as $tag_content_single) {
            if (empty($tag_content_single)) {
                continue;
            }
            // Don't ever output empty tags
            $og_tag = sprintf('<meta property="%s" content="%s" />', esc_attr($tag_property), esc_attr($tag_content_single));
            /**
             * Filter the HTML Output of each Open Graph Meta tag.
             *
             * @module sharedaddy, publicize
             *
             * @since 2.0.0
             *
             * @param string $og_tag HTML HTML Output of each Open Graph Meta tag.
             */
            $og_output .= apply_filters('jetpack_open_graph_output', $og_tag);
            $og_output .= "\n";
            if ('og:image' == $tag_property) {
                if (is_array($secure) && !empty($secure[$secure_image_num])) {
                    $og_tag = sprintf('<meta property="og:image:secure_url" content="%s" />', esc_url($secure[$secure_image_num]));
                    /** This filter is documented in functions.opengraph.php */
                    $og_output .= apply_filters('jetpack_open_graph_output', $og_tag);
                    $og_output .= "\n";
                } else {
                    if (!is_array($secure) && !empty($secure)) {
                        $og_tag = sprintf('<meta property="og:image:secure_url" content="%s" />', esc_url($secure));
                        /** This filter is documented in functions.opengraph.php */
                        $og_output .= apply_filters('jetpack_open_graph_output', $og_tag);
                        $og_output .= "\n";
                    }
                }
                $secure_image_num++;
            }
        }
    }
    echo $og_output;
}
예제 #16
0
/**
 * Loads Gravatar Hovercard script.
 *
 * @todo is_singular() only?
 */
function grofiles_attach_cards()
{
    global $blog_id;
    // Is the display of Avatars disabled?
    if (!get_option('show_avatars')) {
        return;
    }
    // Is the display of Gravatar Hovercards disabled?
    if ('disabled' == Jetpack_Options::get_option_and_ensure_autoload('gravatar_disable_hovercards', '0')) {
        return;
    }
    wp_enqueue_script('grofiles-cards', (is_ssl() ? 'https://secure' : 'http://s') . '.gravatar.com/js/gprofiles.js', array('jquery'), GROFILES__CACHE_BUSTER, true);
    wp_enqueue_script('wpgroho', plugins_url('wpgroho.js', __FILE__), array('grofiles-cards'), false, true);
    if (is_user_logged_in()) {
        $cu = wp_get_current_user();
        $my_hash = md5($cu->user_email);
    } else {
        if (!empty($_COOKIE['comment_author_email_' . COOKIEHASH])) {
            $my_hash = md5($_COOKIE['comment_author_email_' . COOKIEHASH]);
        } else {
            $my_hash = '';
        }
    }
    wp_localize_script('wpgroho', 'WPGroHo', compact('my_hash'));
}