Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Twenty Twelve functions and definitions
- *
- * Sets up the theme and provides some helper functions, which are used
- * in the theme as custom template tags. Others are attached to action and
- * filter hooks in WordPress to change core functionality.
- *
- * When using a child theme (see http://codex.wordpress.org/Theme_Development and
- * http://codex.wordpress.org/Child_Themes), you can override certain functions
- * (those wrapped in a function_exists() call) by defining them first in your child theme's
- * functions.php file. The child theme's functions.php file is included before the parent
- * theme's file, so the child theme functions would be used.
- *
- * Functions that are not pluggable (not wrapped in function_exists()) are instead attached
- * to a filter or action hook.
- *
- * For more information on hooks, actions, and filters, @link http://codex.wordpress.org/Plugin_API
- *
- * @package WordPress
- * @subpackage Twenty_Twelve
- * @since Twenty Twelve 1.0
- */
- // Set up the content width value based on the theme's design and stylesheet.
- if ( ! isset( $content_width ) )
- $content_width = 625;
- /**
- * Twenty Twelve setup.
- *
- * Sets up theme defaults and registers the various WordPress features that
- * Twenty Twelve supports.
- *
- * @uses load_theme_textdomain() For translation/localization support.
- * @uses add_editor_style() To add a Visual Editor stylesheet.
- * @uses add_theme_support() To add support for post thumbnails, automatic feed links,
- * custom background, and post formats.
- * @uses register_nav_menu() To add support for navigation menus.
- * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
- *
- * @since Twenty Twelve 1.0
- */
- function twentytwelve_setup() {
- /*
- * Makes Twenty Twelve available for translation.
- *
- * Translations can be added to the /languages/ directory.
- * If you're building a theme based on Twenty Twelve, use a find and replace
- * to change 'twentytwelve' to the name of your theme in all the template files.
- */
- load_theme_textdomain( 'twentytwelve', get_template_directory() . '/languages' );
- // This theme styles the visual editor with editor-style.css to match the theme style.
- add_editor_style();
- // Adds RSS feed links to <head> for posts and comments.
- add_theme_support( 'automatic-feed-links' );
- // This theme supports a variety of post formats.
- add_theme_support( 'post-formats', array( 'aside', 'image', 'link', 'quote', 'status' ) );
- // This theme uses wp_nav_menu() in one location.
- register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) );
- /*
- * This theme supports custom background color and image,
- * and here we also set up the default background color.
- */
- add_theme_support( 'custom-background', array(
- 'default-color' => 'e6e6e6',
- ) );
- // This theme uses a custom image size for featured images, displayed on "standard" posts.
- add_theme_support( 'post-thumbnails' );
- set_post_thumbnail_size( 624, 9999 ); // Unlimited height, soft crop
- }
- add_action( 'after_setup_theme', 'twentytwelve_setup' );
- /**
- * Add support for a custom header image.
- */
- require( get_template_directory() . '/inc/custom-header.php' );
- /**
- * Return the Google font stylesheet URL if available.
- *
- * The use of Open Sans by default is localized. For languages that use
- * characters not supported by the font, the font can be disabled.
- *
- * @since Twenty Twelve 1.2
- *
- * @return string Font stylesheet or empty string if disabled.
- */
- function twentytwelve_get_font_url() {
- $font_url = '';
- /* translators: If there are characters in your language that are not supported
- * by Open Sans, translate this to 'off'. Do not translate into your own language.
- */
- if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'twentytwelve' ) ) {
- $subsets = 'latin,latin-ext';
- /* translators: To add an additional Open Sans character subset specific to your language,
- * translate this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language.
- */
- $subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'twentytwelve' );
- if ( 'cyrillic' == $subset )
- $subsets .= ',cyrillic,cyrillic-ext';
- elseif ( 'greek' == $subset )
- $subsets .= ',greek,greek-ext';
- elseif ( 'vietnamese' == $subset )
- $subsets .= ',vietnamese';
- $protocol = is_ssl() ? 'https' : 'http';
- $query_args = array(
- 'family' => 'Open+Sans:400italic,700italic,400,700',
- 'subset' => $subsets,
- );
- $font_url = add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" );
- }
- return $font_url;
- }
- /**
- * Enqueue scripts and styles for front-end.
- *
- * @since Twenty Twelve 1.0
- *
- * @return void
- */
- function twentytwelve_scripts_styles() {
- global $wp_styles;
- /*
- * Adds JavaScript to pages with the comment form to support
- * sites with threaded comments (when in use).
- */
- if ( is_singular() && comments_open() && get_option( 'thread_comments' ) )
- wp_enqueue_script( 'comment-reply' );
- // Adds JavaScript for handling the navigation menu hide-and-show behavior.
- wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true );
- $font_url = twentytwelve_get_font_url();
- if ( ! empty( $font_url ) )
- wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null );
- // Loads our main stylesheet.
- wp_enqueue_style( 'twentytwelve-style', get_stylesheet_uri() );
- // Loads the Internet Explorer specific stylesheet.
- wp_enqueue_style( 'twentytwelve-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentytwelve-style' ), '20121010' );
- $wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' );
- }
- add_action( 'wp_enqueue_scripts', 'twentytwelve_scripts_styles' );
- /**
- * Filter TinyMCE CSS path to include Google Fonts.
- *
- * Adds additional stylesheets to the TinyMCE editor if needed.
- *
- * @uses twentytwelve_get_font_url() To get the Google Font stylesheet URL.
- *
- * @since Twenty Twelve 1.2
- *
- * @param string $mce_css CSS path to load in TinyMCE.
- * @return string Filtered CSS path.
- */
- function twentytwelve_mce_css( $mce_css ) {
- $font_url = twentytwelve_get_font_url();
- if ( empty( $font_url ) )
- return $mce_css;
- if ( ! empty( $mce_css ) )
- $mce_css .= ',';
- $mce_css .= esc_url_raw( str_replace( ',', '%2C', $font_url ) );
- return $mce_css;
- }
- add_filter( 'mce_css', 'twentytwelve_mce_css' );
- /**
- * Filter the page title.
- *
- * Creates a nicely formatted and more specific title element text
- * for output in head of document, based on current view.
- *
- * @since Twenty Twelve 1.0
- *
- * @param string $title Default title text for current view.
- * @param string $sep Optional separator.
- * @return string Filtered title.
- */
- function twentytwelve_wp_title( $title, $sep ) {
- global $paged, $page;
- if ( is_feed() )
- return $title;
- // Add the site name.
- $title .= get_bloginfo( 'name' );
- // Add the site description for the home/front page.
- $site_description = get_bloginfo( 'description', 'display' );
- if ( $site_description && ( is_home() || is_front_page() ) )
- $title = "$title $sep $site_description";
- // Add a page number if necessary.
- if ( $paged >= 2 || $page >= 2 )
- $title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) );
- return $title;
- }
- add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 );
- /**
- * Filter the page menu arguments.
- *
- * Makes our wp_nav_menu() fallback -- wp_page_menu() -- show a home link.
- *
- * @since Twenty Twelve 1.0
- */
- function twentytwelve_page_menu_args( $args ) {
- if ( ! isset( $args['show_home'] ) )
- $args['show_home'] = true;
- return $args;
- }
- add_filter( 'wp_page_menu_args', 'twentytwelve_page_menu_args' );
- /**
- * Register sidebars.
- *
- * Registers our main widget area and the front page widget areas.
- *
- * @since Twenty Twelve 1.0
- */
- function twentytwelve_widgets_init() {
- register_sidebar( array(
- 'name' => __( 'Main Sidebar', 'twentytwelve' ),
- 'id' => 'sidebar-1',
- 'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ),
- 'before_widget' => '<aside id="%1$s" class="widget %2$s">',
- 'after_widget' => '</aside>',
- 'before_title' => '<h3 class="widget-title">',
- 'after_title' => '</h3>',
- ) );
- register_sidebar( array(
- 'name' => __( 'First Front Page Widget Area', 'twentytwelve' ),
- 'id' => 'sidebar-2',
- 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
- 'before_widget' => '<aside id="%1$s" class="widget %2$s">',
- 'after_widget' => '</aside>',
- 'before_title' => '<h3 class="widget-title">',
- 'after_title' => '</h3>',
- ) );
- register_sidebar( array(
- 'name' => __( 'Second Front Page Widget Area', 'twentytwelve' ),
- 'id' => 'sidebar-3',
- 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
- 'before_widget' => '<aside id="%1$s" class="widget %2$s">',
- 'after_widget' => '</aside>',
- 'before_title' => '<h3 class="widget-title">',
- 'after_title' => '</h3>',
- ) );
- }
- add_action( 'widgets_init', 'twentytwelve_widgets_init' );
- if ( ! function_exists( 'twentytwelve_content_nav' ) ) :
- /**
- * Displays navigation to next/previous pages when applicable.
- *
- * @since Twenty Twelve 1.0
- */
- function twentytwelve_content_nav( $html_id ) {
- global $wp_query;
- $html_id = esc_attr( $html_id );
- if ( $wp_query->max_num_pages > 1 ) : ?>
- <nav id="<?php echo $html_id; ?>" class="navigation" role="navigation">
- <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
- <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentytwelve' ) ); ?></div>
- <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentytwelve' ) ); ?></div>
- </nav><!-- #<?php echo $html_id; ?> .navigation -->
- <?php endif;
- }
- endif;
- if ( ! function_exists( 'twentytwelve_comment' ) ) :
- /**
- * Template for comments and pingbacks.
- *
- * To override this walker in a child theme without modifying the comments template
- * simply create your own twentytwelve_comment(), and that function will be used instead.
- *
- * Used as a callback by wp_list_comments() for displaying the comments.
- *
- * @since Twenty Twelve 1.0
- *
- * @return void
- */
- function twentytwelve_comment( $comment, $args, $depth ) {
- $GLOBALS['comment'] = $comment;
- switch ( $comment->comment_type ) :
- case 'pingback' :
- case 'trackback' :
- // Display trackbacks differently than normal comments.
- ?>
- <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
- <p><?php _e( 'Pingback:', 'twentytwelve' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?></p>
- <?php
- break;
- default :
- // Proceed with normal comments.
- global $post;
- ?>
- <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
- <article id="comment-<?php comment_ID(); ?>" class="comment">
- <header class="comment-meta comment-author vcard">
- <?php
- echo get_avatar( $comment, 44 );
- printf( '<cite><b class="fn">%1$s</b> %2$s</cite>',
- get_comment_author_link(),
- // If current post author is also comment author, make it known visually.
- ( $comment->user_id === $post->post_author ) ? '<span>' . __( 'Post author', 'twentytwelve' ) . '</span>' : ''
- );
- printf( '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>',
- esc_url( get_comment_link( $comment->comment_ID ) ),
- get_comment_time( 'c' ),
- /* translators: 1: date, 2: time */
- sprintf( __( '%1$s at %2$s', 'twentytwelve' ), get_comment_date(), get_comment_time() )
- );
- ?>
- </header><!-- .comment-meta -->
- <?php if ( '0' == $comment->comment_approved ) : ?>
- <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentytwelve' ); ?></p>
- <?php endif; ?>
- <section class="comment-content comment">
- <?php comment_text(); ?>
- <?php edit_comment_link( __( 'Edit', 'twentytwelve' ), '<p class="edit-link">', '</p>' ); ?>
- </section><!-- .comment-content -->
- <div class="reply">
- <?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply', 'twentytwelve' ), 'after' => ' <span>↓</span>', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
- </div><!-- .reply -->
- </article><!-- #comment-## -->
- <?php
- break;
- endswitch; // end comment_type check
- }
- endif;
- if ( ! function_exists( 'twentytwelve_entry_meta' ) ) :
- /**
- * Set up post entry meta.
- *
- * Prints HTML with meta information for current post: categories, tags, permalink, author, and date.
- *
- * Create your own twentytwelve_entry_meta() to override in a child theme.
- *
- * @since Twenty Twelve 1.0
- *
- * @return void
- */
- function twentytwelve_entry_meta() {
- // Translators: used between list items, there is a space after the comma.
- $categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) );
- // Translators: used between list items, there is a space after the comma.
- $tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) );
- $date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a>',
- esc_url( get_permalink() ),
- esc_attr( get_the_time() ),
- esc_attr( get_the_date( 'c' ) ),
- esc_html( get_the_date() )
- );
- $author = sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
- esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
- esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ),
- get_the_author()
- );
- // Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name.
- if ( $tag_list ) {
- $utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' );
- } elseif ( $categories_list ) {
- $utility_text = __( 'This entry was posted in %1$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' );
- } else {
- $utility_text = __( 'This entry was posted on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' );
- }
- printf(
- $utility_text,
- $categories_list,
- $tag_list,
- $date,
- $author
- );
- }
- endif;
- /**
- * Extend the default WordPress body classes.
- *
- * Extends the default WordPress body class to denote:
- * 1. Using a full-width layout, when no active widgets in the sidebar
- * or full-width template.
- * 2. Front Page template: thumbnail in use and number of sidebars for
- * widget areas.
- * 3. White or empty background color to change the layout and spacing.
- * 4. Custom fonts enabled.
- * 5. Single or multiple authors.
- *
- * @since Twenty Twelve 1.0
- *
- * @param array $classes Existing class values.
- * @return array Filtered class values.
- */
- function twentytwelve_body_class( $classes ) {
- $background_color = get_background_color();
- $background_image = get_background_image();
- if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) )
- $classes[] = 'full-width';
- if ( is_page_template( 'page-templates/front-page.php' ) ) {
- $classes[] = 'template-front-page';
- if ( has_post_thumbnail() )
- $classes[] = 'has-post-thumbnail';
- if ( is_active_sidebar( 'sidebar-2' ) && is_active_sidebar( 'sidebar-3' ) )
- $classes[] = 'two-sidebars';
- }
- if ( empty( $background_image ) ) {
- if ( empty( $background_color ) )
- $classes[] = 'custom-background-empty';
- elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) )
- $classes[] = 'custom-background-white';
- }
- // Enable custom font class only if the font CSS is queued to load.
- if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) )
- $classes[] = 'custom-font-enabled';
- if ( ! is_multi_author() )
- $classes[] = 'single-author';
- return $classes;
- }
- add_filter( 'body_class', 'twentytwelve_body_class' );
- /**
- * Adjust content width in certain contexts.
- *
- * Adjusts content_width value for full-width and single image attachment
- * templates, and when there are no active widgets in the sidebar.
- *
- * @since Twenty Twelve 1.0
- *
- * @return void
- */
- function twentytwelve_content_width() {
- if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) {
- global $content_width;
- $content_width = 960;
- }
- }
- add_action( 'template_redirect', 'twentytwelve_content_width' );
- /**
- * Register postMessage support.
- *
- * Add postMessage support for site title and description for the Customizer.
- *
- * @since Twenty Twelve 1.0
- *
- * @param WP_Customize_Manager $wp_customize Customizer object.
- * @return void
- */
- function twentytwelve_customize_register( $wp_customize ) {
- $wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
- $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
- $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
- }
- add_action( 'customize_register', 'twentytwelve_customize_register' );
- /**
- * Enqueue Javascript postMessage handlers for the Customizer.
- *
- * Binds JS handlers to make the Customizer preview reload changes asynchronously.
- *
- * @since Twenty Twelve 1.0
- *
- * @return void
- */
- function twentytwelve_customize_preview_js() {
- wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20130301', true );
- }
- add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' );
- function my_country_code() {
- return array( 'AF' => 'Afghanistan', 'AX' => 'Åland Islands', 'AL' => 'Albania', 'DZ' => 'Algeria', 'AS' => 'American Samoa', 'AD' => 'Andorra', 'AO' => 'Angola', 'AI' => 'Anguilla', 'AQ' => 'Antarctica', 'AG' => 'Antigua And Barbuda', 'AR' => 'Argentina', 'AM' => 'Armenia', 'AW' => 'Aruba', 'AU' => 'Australia', 'AT' => 'Austria', 'AZ' => 'Azerbaijan', 'BS' => 'Bahamas', 'BH' => 'Bahrain', 'BD' => 'Bangladesh', 'BB' => 'Barbados', 'BY' => 'Belarus', 'BE' => 'Belgium', 'BZ' => 'Belize', 'BJ' => 'Benin', 'BM' => 'Bermuda', 'BT' => 'Bhutan', 'BO' => 'Bolivia, Plurinational State Of', 'BQ' => 'Bonaire, Sint Eustatius And Saba', 'BA' => 'Bosnia And Herzegovina', 'BW' => 'Botswana', 'BV' => 'Bouvet Island', 'BR' => 'Brazil', 'IO' => 'British Indian Ocean Territory', 'BN' => 'Brunei Darussalam', 'BG' => 'Bulgaria', 'BF' => 'Burkina Faso', 'BI' => 'Burundi', 'KH' => 'Cambodia', 'CM' => 'Cameroon', 'CA' => 'Canada', 'CV' => 'Cape Verde', 'KY' => 'Cayman Islands', 'CF' => 'Central African Republic', 'TD' => 'Chad', 'CL' => 'Chile', 'CN' => 'China', 'CX' => 'Christmas Island', 'CC' => 'Cocos (keeling) Islands', 'CO' => 'Colombia', 'KM' => 'Comoros', 'CG' => 'Congo', 'CD' => 'Congo, The Democratic Republic Of The', 'CK' => 'Cook Islands', 'CR' => 'Costa Rica', 'CI' => 'Côte D\'ivoire', 'HR' => 'Croatia', 'CU' => 'Cuba', 'CW' => 'Curaçao', 'CY' => 'Cyprus', 'CZ' => 'Czech Republic', 'DK' => 'Denmark', 'DJ' => 'Djibouti', 'DM' => 'Dominica', 'DO' => 'Dominican Republic', 'EC' => 'Ecuador', 'EG' => 'Egypt', 'SV' => 'El Salvador', 'GQ' => 'Equatorial Guinea', 'ER' => 'Eritrea', 'EE' => 'Estonia', 'ET' => 'Ethiopia', 'FK' => 'Falkland Islands (malvinas)', 'FO' => 'Faroe Islands', 'FJ' => 'Fiji', 'FI' => 'Finland', 'FR' => 'France', 'GF' => 'French Guiana', 'PF' => 'French Polynesia', 'TF' => 'French Southern Territories', 'GA' => 'Gabon', 'GM' => 'Gambia', 'GE' => 'Georgia', 'DE' => 'Germany', 'GH' => 'Ghana', 'GI' => 'Gibraltar', 'GR' => 'Greece', 'GL' => 'Greenland', 'GD' => 'Grenada', 'GP' => 'Guadeloupe', 'GU' => 'Guam', 'GT' => 'Guatemala', 'GG' => 'Guernsey', 'GN' => 'Guinea', 'GW' => 'Guinea-bissau', 'GY' => 'Guyana', 'HT' => 'Haiti', 'HM' => 'Heard Island And Mcdonald Islands', 'VA' => 'Holy See (vatican City State)', 'HN' => 'Honduras', 'HK' => 'Hong Kong', 'HU' => 'Hungary', 'IS' => 'Iceland', 'IN' => 'India', 'ID' => 'Indonesia', 'IR' => 'Iran, Islamic Republic Of', 'IQ' => 'Iraq', 'IE' => 'Ireland', 'IM' => 'Isle Of Man', 'IL' => 'Israel', 'IT' => 'Italy', 'JM' => 'Jamaica', 'JP' => 'Japan', 'JE' => 'Jersey', 'JO' => 'Jordan', 'KZ' => 'Kazakhstan', 'KE' => 'Kenya', 'KI' => 'Kiribati', 'KP' => 'Korea, Democratic People\'s Republic Of', 'KR' => 'Korea, Republic Of', 'KW' => 'Kuwait', 'KG' => 'Kyrgyzstan', 'LA' => 'Lao People\'s Democratic Republic', 'LV' => 'Latvia', 'LB' => 'Lebanon', 'LS' => 'Lesotho', 'LR' => 'Liberia', 'LY' => 'Libya', 'LI' => 'Liechtenstein', 'LT' => 'Lithuania', 'LU' => 'Luxembourg', 'MO' => 'Macao', 'MK' => 'Macedonia, The Former Yugoslav Republic Of', 'MG' => 'Madagascar', 'MW' => 'Malawi', 'MY' => 'Malaysia', 'MV' => 'Maldives', 'ML' => 'Mali', 'MT' => 'Malta', 'MH' => 'Marshall Islands', 'MQ' => 'Martinique', 'MR' => 'Mauritania', 'MU' => 'Mauritius', 'YT' => 'Mayotte', 'MX' => 'Mexico', 'FM' => 'Micronesia, Federated States Of', 'MD' => 'Moldova, Republic Of', 'MC' => 'Monaco', 'MN' => 'Mongolia', 'ME' => 'Montenegro', 'MS' => 'Montserrat', 'MA' => 'Morocco', 'MZ' => 'Mozambique', 'MM' => 'Myanmar', 'NA' => 'Namibia', 'NR' => 'Nauru', 'NP' => 'Nepal', 'NL' => 'Netherlands', 'NC' => 'New Caledonia', 'NZ' => 'New Zealand', 'NI' => 'Nicaragua', 'NE' => 'Niger', 'NG' => 'Nigeria', 'NU' => 'Niue', 'NF' => 'Norfolk Island', 'MP' => 'Northern Mariana Islands', 'NO' => 'Norway', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PW' => 'Palau', 'PS' => 'Palestinian Territory, Occupied', 'PA' => 'Panama', 'PG' => 'Papua New Guinea', 'PY' => 'Paraguay', 'PE' => 'Peru', 'PH' => 'Philippines', 'PN' => 'Pitcairn', 'PL' => 'Poland', 'PT' => 'Portugal', 'PR' => 'Puerto Rico', 'QA' => 'Qatar', 'RE' => 'Réunion', 'RO' => 'Romania', 'RU' => 'Russian Federation', 'RW' => 'Rwanda', 'BL' => 'Saint Barthélemy', 'SH' => 'Saint Helena, Ascension And Tristan Da Cunha', 'KN' => 'Saint Kitts And Nevis', 'LC' => 'Saint Lucia', 'MF' => 'Saint Martin (french Part)', 'PM' => 'Saint Pierre And Miquelon', 'VC' => 'Saint Vincent And The Grenadines', 'WS' => 'Samoa', 'SM' => 'San Marino', 'ST' => 'Sao Tome And Principe', 'SA' => 'Saudi Arabia', 'SN' => 'Senegal', 'RS' => 'Serbia', 'SC' => 'Seychelles', 'SL' => 'Sierra Leone', 'SG' => 'Singapore', 'SX' => 'Sint Maarten (dutch Part)', 'SK' => 'Slovakia', 'SI' => 'Slovenia', 'SB' => 'Solomon Islands', 'SO' => 'Somalia', 'ZA' => 'South Africa', 'GS' => 'South Georgia And The South Sandwich Islands', 'SS' => 'South Sudan', 'ES' => 'Spain', 'LK' => 'Sri Lanka', 'SD' => 'Sudan', 'SR' => 'Suriname', 'SJ' => 'Svalbard And Jan Mayen', 'SZ' => 'Swaziland', 'SE' => 'Sweden', 'CH' => 'Switzerland', 'SY' => 'Syrian Arab Republic', 'TW' => 'Taiwan, Province Of China', 'TJ' => 'Tajikistan', 'TZ' => 'Tanzania, United Republic Of', 'TH' => 'Thailand', 'TL' => 'Timor-leste', 'TG' => 'Togo', 'TK' => 'Tokelau', 'TO' => 'Tonga', 'TT' => 'Trinidad And Tobago', 'TN' => 'Tunisia', 'TR' => 'Turkey', 'TM' => 'Turkmenistan', 'TC' => 'Turks And Caicos Islands', 'TV' => 'Tuvalu', 'UG' => 'Uganda', 'UA' => 'Ukraine', 'AE' => 'United Arab Emirates', 'GB' => 'United Kingdom', 'US' => 'United States', 'UM' => 'United States Minor Outlying Islands', 'UY' => 'Uruguay', 'UZ' => 'Uzbekistan', 'VU' => 'Vanuatu', 'VE' => 'Venezuela, Bolivarian Republic Of', 'VN' => 'Viet Nam', 'VG' => 'Virgin Islands, British', 'VI' => 'Virgin Islands, U.s.', 'WF' => 'Wallis And Futuna', 'EH' => 'Western Sahara', 'YE' => 'Yemen', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe' );
- }
- add_action( 'show_user_profile', 'my_edit_user_profile' );
- add_action( 'edit_user_profile', 'my_edit_user_profile' );
- add_action( 'edit_user_profile_update', 'my_edit_user_profile_update' );
- add_action( 'personal_options_update', 'my_edit_user_profile_update' );
- function my_edit_user_profile( $profileuser ) { ?>
- <table class="form-table">
- <tr>
- <th><label for="country"><?php _e('Country'); ?></label></th>
- <td>
- <select id="country" name="country"><?php
- $options = get_option('country');
- foreach( my_country_code() as $code => $country ) {
- echo "<option value='$code' " . selected( $options[$profileuser->ID], $code, false ) . ">$country</option>";
- } ?>
- </select></td>
- </tr>
- </table><?php
- }
- function my_edit_user_profile_update( $user_id ) {
- if( isset( $_POST[ 'country' ] ) && array_key_exists( $_POST[ 'country' ], my_country_code() ) ) {
- $options = get_option('country');
- $options[$user_id] = $_POST[ 'country' ];
- update_option( 'country', $options );
- }
- }
- function my_googlechart_script() {
- wp_enqueue_script( 'jsapi', 'https://www.google.com/jsapi', 1 );
- }
- add_action( 'wp_head', 'my_googlechart_script', 1 );
- function my_geochart_script() {
- $options = get_option('country');
- $countries = array_count_values( $options );
- $data = array();
- foreach( $countries as $code => $country ) {
- $data[] = '["' . $code . '", ' . $country . ']';
- }
- echo '<script type="text/javascript">
- google.load("visualization", "1", {"packages": ["geochart"]});
- google.setOnLoadCallback(drawRegionsMap);
- function drawRegionsMap() {
- var data = google.visualization.arrayToDataTable([
- ["Country", "Popularity"], ' . implode(',', $data) . '
- ]);
- var options = {backgroundColor:{fill:"transparent"}};
- var chart = new google.visualization.GeoChart(document.getElementById("chart_div"));
- chart.draw(data, options);
- };
- </script>';
- }
- add_action( 'wp_head', 'my_geochart_script' );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement