Changeset 1807041
- Timestamp:
- 01/22/2018 11:38:26 AM (8 years ago)
- Location:
- monk/trunk
- Files:
-
- 1 added
- 2 deleted
- 26 edited
-
CHANGELOG.md (modified) (1 diff)
-
README.md (modified) (1 diff)
-
README.txt (modified) (3 diffs)
-
admin/class-monk-admin.php (modified) (45 diffs)
-
admin/css/monk-admin.css (modified) (2 diffs)
-
admin/js/monk-admin.js (modified) (6 diffs)
-
admin/partials/admin-monk-active-languages-render.php (modified) (1 diff)
-
admin/partials/admin-monk-comments-language-selector-render.php (added)
-
admin/partials/admin-monk-default-language-render.php (deleted)
-
admin/partials/admin-monk-language-name-render.php (modified) (1 diff)
-
admin/partials/admin-monk-menu-translation-fields-render.php (modified) (1 diff)
-
admin/partials/admin-monk-post-meta-box-field-render.php (modified) (5 diffs)
-
admin/partials/admin-monk-select-menu-to-edit-render.php (modified) (4 diffs)
-
admin/partials/admin-monk-site-description-render.php (modified) (1 diff)
-
admin/partials/admin-monk-site-name-render.php (modified) (1 diff)
-
admin/partials/admin-monk-term-language-selector-render.php (modified) (3 diffs)
-
admin/partials/monk-language-column.php (modified) (1 diff)
-
admin/partials/monk-language-filter.php (modified) (3 diffs)
-
includes/class-monk-activator.php (modified) (1 diff)
-
includes/class-monk-i18n.php (modified) (2 diffs)
-
includes/class-monk-links.php (modified) (20 diffs)
-
includes/class-monk.php (modified) (9 diffs)
-
includes/monk-available-languages.php (deleted)
-
includes/monk-functions.php (modified) (6 diffs)
-
languages/monk.pot (modified) (7 diffs)
-
monk.php (modified) (1 diff)
-
public/class-monk-public.php (modified) (10 diffs)
-
widgets/class-monk-language-switcher.php (modified) (4 diffs)
-
widgets/partials/public-monk-language-switcher.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
monk/trunk/CHANGELOG.md
r1734509 r1807041 1 1 ## Changelog 2 3 - **[0.7.0]** 4 + Added hreflang tags 5 + Added comments filter by post language on admin 6 + Added monk_get_translations function that can be used to create custom language switchers. 7 + Changed database queries to improve performance 8 + Fixed static front page bug 9 + Fixed custom meta queries overwrite 10 + Fixed syntax error on plugin activation for older PHP versions. 11 + Fixed terms filter button was not showing. 12 + Fixed incorrectly language options when opening last edited menu. 2 13 3 14 - **[0.6.0]** -
monk/trunk/README.md
r1732422 r1807041 22 22 23 23 If you find any error or have suggestions, contribute with them to improve Monk. They are all welcome, but before anything please take a minute to read our [contributor guidelines](https://github.com/brenoalvs/monk/blob/master/.github/CONTRIBUITING.md) and [code of conduct](https://github.com/brenoalvs/monk/blob/master/.github/code_of_conduct.md). 24 25 ## Tests ## 26 27 Tests are in `tests` directory. To run them you need to install some requirements and configure the test suite. 28 29 1. Install PHPUnit (https://github.com/sebastianbergmann/phpunit#installation). 30 2. Install WP-CLI (http://wp-cli.org/#install). 31 3. `cd` to plugin's directory. 32 4. Install and configure the test environment running `bin/install-wp-tests.sh <db-name> <db-user> <db-pass> [db-host] [wp-version]`. E.g.: `bin/install-wp-tests.sh wordpress_test root '' localhost latest` 33 5. Run `phpunit` and let the tests begin! 34 35 *Note:* Be sure to have `svn` command installed on your system. 36 37 *Note:* If anything fails running install-wp-tests.sh you'll have to delete /tmp/wordpress* and drop the wordpress_test database to undo what the script does. -
monk/trunk/README.txt
r1734509 r1807041 3 3 Tags: multilingual, translation, language, multilanguage, international, localization 4 4 Requires at least: 4.6 5 Tested up to: 4. 8.15 Tested up to: 4.9.2 6 6 Requires PHP: 5.4 7 Stable tag: 0. 6.07 Stable tag: 0.7.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 72 72 == Changelog == 73 73 74 = [0.7.0] = 75 * Added hreflang tags 76 * Added comments filter by post language on admin 77 * Added monk_get_translations function that can be used to create custom language switchers 78 * Changed database queries to improve performance 79 * Fixed static front page bug 80 * Fixed custom meta queries overwrite 81 * Fixed syntax error on plugin activation for older PHP versions 82 * Fixed terms filter button was not showing 83 * Fixed incorrectly language options when opening last edited menu 84 74 85 = [0.6.0] = 75 86 * Changed the notification system for when Monk settings page gets updated … … 78 89 * Added the filter monk_custom_language_slug to let users change language slugs 79 90 80 = [0.5.2] =81 * Fixed bug when a post was restored from trash82 * Fixed the default category english translation83 * Fixed bug when "All languages" is selected in the language selector of post and pages84 85 = [0.5.1] =86 * Fixed bug on medias update process87 * Fixed accessibility attributes on admin controls.88 * Fixed persistent language filter when post type has no posts.89 90 = [0.5.0] =91 * Added site title and description translation92 * Added shortcode to retrieve translation links93 * Added the 'uncategorized' category translations94 * Fixed custom taxonomies links on language switcher95 * Fixed medias filter by language on post edit pages96 97 91 [See changelog for older versions](https://raw.githubusercontent.com/brenoalvs/monk/master/CHANGELOG.md) 98 92 -
monk/trunk/admin/class-monk-admin.php
r1734509 r1807041 36 36 37 37 /** 38 * The default language of the plugin. 39 * 40 * @since 0.7.0 41 * @access private 42 * @var string $default_language The default language of the plugin. 43 */ 44 private $default_language; 45 46 /** 47 * The active languages of the plugin. 48 * 49 * @since 0.7.0 50 * @access private 51 * @var array $active_languages The active languages of the plugin. 52 */ 53 private $active_languages; 54 55 /** 38 56 * Initialize the class and set its properties. 39 57 * 58 * @since 0.1.0 59 * @param string $monk The name of the plugin. 60 * @param string $version The version of this plugin. 61 * @param string $default_language The default language of the plugin. 62 * @param array $active_languages The active languages of the plugin. 63 * @return void 64 */ 65 public function __construct( $monk, $version, $default_language, $active_languages ) { 66 $this->monk = $monk; 67 $this->version = $version; 68 $this->default_language = $default_language; 69 $this->active_languages = $active_languages; 70 } 71 72 /** 73 * Register the stylesheets for the admin area. 74 * 40 75 * @since 0.1.0 41 * @param string $monk The name of this plugin.42 * @param string $version The version of this plugin.43 * @return void44 */45 public function __construct( $monk, $version ) {46 47 $this->monk = $monk;48 $this->version = $version;49 50 }51 52 /**53 * Register the stylesheets for the admin area.54 *55 * @since 0.1.056 76 * @return void 57 77 */ 58 78 public function enqueue_styles() { 59 wp_enqueue_style( $this->monk, plugin_dir_url( __FILE__ ) . 'css/monk-admin.css', array(), $this->version, 'all' );79 wp_enqueue_style( strtolower( $this->monk ), plugin_dir_url( __FILE__ ) . 'css/monk-admin.css', array(), $this->version, 'all' ); 60 80 wp_enqueue_style( 'monk-widgets', plugin_dir_url( __FILE__ ) . 'css/monk-widgets.css', array(), $this->version, 'all' ); 61 81 wp_enqueue_style( 'monk-flags', plugin_dir_url( __FILE__ ) . 'css/monk-flags.css', array(), $this->version, 'all' ); … … 266 286 switch ( $action ) { 267 287 case 'monk_tools': 268 $tools = 'nav-tab-active';288 $tools = 'nav-tab-active'; 269 289 break; 270 290 case 'monk_options': … … 327 347 $monk_languages = monk_get_available_languages(); 328 348 $site_name = get_option( 'blogname' ); 329 $default_language = get_option( 'monk_default_language', false );349 $default_language = $this->default_language; 330 350 $default_slug = $monk_languages[ $default_language ]['slug']; 331 $active_languages = get_option( 'monk_active_languages', array() );351 $active_languages = $this->active_languages; 332 352 333 353 require_once plugin_dir_path( __FILE__ ) . '/partials/admin-monk-site-name-render.php'; … … 345 365 $monk_languages = monk_get_available_languages(); 346 366 $site_description = get_option( 'blogdescription' ); 347 $default_language = get_option( 'monk_default_language', false );367 $default_language = $this->default_language; 348 368 $default_slug = $monk_languages[ $default_language ]['slug']; 349 $active_languages = get_option( 'monk_active_languages', array() );369 $active_languages = $this->active_languages; 350 370 351 371 require_once plugin_dir_path( __FILE__ ) . '/partials/admin-monk-site-description-render.php'; … … 359 379 */ 360 380 public function monk_default_language_render() { 361 $default_language = get_option( 'monk_default_language', false );381 $default_language = $this->default_language; 362 382 $languages = get_available_languages(); 363 383 $args = array( … … 439 459 public function monk_post_meta_box_field_render( $post ) { 440 460 global $current_screen; 441 $monk_languages = monk_get_available_languages();442 $monk_id = get_post_meta( $post->ID, '_monk_post_translations_id', true );443 $post_default_language = get_post_meta( $post->ID, '_monk_post_language', true );444 $site_default_language = get_option( 'monk_default_language', false );445 $active_languages = get_option( 'monk_active_languages', false );461 $monk_languages = monk_get_available_languages(); 462 $monk_id = get_post_meta( $post->ID, '_monk_post_translations_id', true ); 463 $post_default_language = get_post_meta( $post->ID, '_monk_post_language', true ); 464 $site_default_language = $this->default_language; 465 $active_languages = $this->active_languages; 446 466 447 467 if ( empty( $monk_id ) ) { … … 456 476 $lang = filter_input( INPUT_GET, 'lang' ); 457 477 if ( isset( $lang ) ) { 458 $lang = sanitize_text_field( wp_unslash( $lang ) );478 $lang = sanitize_text_field( wp_unslash( $lang ) ); 459 479 } else { 460 $lang = $site_default_language;480 $lang = $site_default_language; 461 481 } 462 482 … … 510 530 $monk_languages = monk_get_available_languages(); 511 531 512 $active_languages = get_option( 'monk_active_languages' );513 $current_language = get_post_meta( $post_id, '_monk_post_language', true );514 $post_language = filter_input( INPUT_POST, 'monk_post_language' );532 $active_languages = $this->active_languages; 533 $current_language = get_post_meta( $post_id, '_monk_post_language', true ); 534 $post_language = filter_input( INPUT_POST, 'monk_post_language' ); 515 535 516 536 if ( ! $current_language ) { … … 526 546 $language = sanitize_text_field( wp_unslash( $post_language ) ); 527 547 528 if ( in_array( $language , $active_languages) ) {548 if ( in_array( $language, $active_languages, true ) ) { 529 549 update_post_meta( $post_id, '_monk_post_language', $language ); 530 550 } … … 591 611 */ 592 612 public function monk_untrash_post( $post_id ) { 593 $language = get_post_meta( $post_id, '_monk_post_language', true );594 $monk_id = get_post_meta( $post_id, '_monk_post_translations_id', true );595 $post_translations = get_option( 'monk_post_translations_' . $monk_id, array() );613 $language = get_post_meta( $post_id, '_monk_post_language', true ); 614 $monk_id = get_post_meta( $post_id, '_monk_post_translations_id', true ); 615 $post_translations = get_option( 'monk_post_translations_' . $monk_id, array() ); 596 616 $post_translations[ $language ] = $post_id; 597 617 … … 637 657 } 638 658 639 $default_language = get_option( 'monk_default_language', false );640 $active_languages = get_option( 'monk_active_languages', false );641 $filter = filter_input( INPUT_GET , 'monk_language_filter' );659 $default_language = $this->default_language; 660 $active_languages = $this->active_languages; 661 $filter = filter_input( INPUT_GET, 'monk_language_filter' ); 642 662 $language = $filter; 643 663 $screen = $this->get_current_screen(); 644 664 645 665 if ( ! is_customize_preview() && $screen && 'nav-menus' === $screen->base ) { 646 $menu_id = filter_input( INPUT_GET , 'menu' ) ? filter_input( INPUT_GET, 'menu' ) : get_user_option( 'nav_menu_recently_edited' );666 $menu_id = filter_input( INPUT_GET, 'menu' ) ? filter_input( INPUT_GET, 'menu' ) : get_user_option( 'nav_menu_recently_edited' ); 647 667 $language = get_term_meta( $menu_id, '_monk_menu_language', true ); 648 668 $language = empty( $language ) ? $default_language : $language; … … 665 685 'relation' => 'OR', // Optional, defaults to "AND". 666 686 array( 667 'key' => '_monk_post_language',668 'value' => $default_language,687 'key' => '_monk_post_language', 688 'value' => $default_language, 669 689 ), 670 690 array( … … 676 696 $meta_query = array( 677 697 array( 678 'key' => '_monk_post_language',679 'value' => $language,698 'key' => '_monk_post_language', 699 'value' => $language, 680 700 ), 681 701 ); 682 702 } 683 703 704 $old_meta_query = $query->get( 'meta_query' ); 705 706 if ( is_array( $old_meta_query ) ) { 707 $meta_query = array_merge( $old_meta_query, $meta_query ); 708 } 684 709 $query->set( 'meta_query', $meta_query ); 685 710 } … … 698 723 return $args; 699 724 } 700 701 $screen = $this->get_current_screen();725 $old_meta_query = $args['meta_query']; 726 $screen = $this->get_current_screen(); 702 727 703 728 if ( is_customize_preview() ) { 704 $language = get_option( 'monk_default_language', false );705 706 $meta_query = array(729 $language = $this->default_language; 730 731 $meta_query = array( 707 732 array( 708 733 'relation' => 'OR', // Optional, defaults to "AND". … … 737 762 || ( 'edit-tags' === $screen->base ) ) { 738 763 739 $active_languages = get_option( 'monk_active_languages', array() );740 $default_language = get_option( 'monk_default_language', false );764 $active_languages = $this->active_languages; 765 $default_language = $this->default_language; 741 766 742 767 if ( 'nav-menus' === $screen->base ) { 743 $menu_id = filter_input( INPUT_GET , 'menu' ) ? filter_input( INPUT_GET, 'menu' ) : get_user_option( 'nav_menu_recently_edited' );768 $menu_id = filter_input( INPUT_GET, 'menu' ) ? filter_input( INPUT_GET, 'menu' ) : get_user_option( 'nav_menu_recently_edited' ); 744 769 $language = get_term_meta( $menu_id, '_monk_menu_language', true ); 745 770 $language = empty( $language ) ? $default_language : $language; … … 788 813 } // End if(). 789 814 815 if ( is_array( $old_meta_query ) ) { 816 $args['meta_query'] = array_merge( $old_meta_query, $args['meta_query'] ); 817 } 790 818 return $args; 791 819 } … … 839 867 840 868 $monk_language = get_post_meta( $post_id, '_monk_post_language', true ); 841 $slug = $monk_languages[ $monk_language ]['slug'];869 $slug = ! empty( $monk_language ) ? $monk_languages[ $monk_language ]['slug'] : ''; 842 870 $monk_translations_id = get_post_meta( $post_id, '_monk_post_translations_id', true ); 843 871 $monk_translations = get_option( 'monk_post_translations_' . $monk_translations_id, false ); 844 $default_language = get_option( 'monk_default_language', false );872 $default_language = $this->default_language; 845 873 $base_url = admin_url( 'post.php?action=edit' ); 846 $active_languages = get_option( 'monk_active_languages', false );874 $active_languages = $this->active_languages; 847 875 $post_type = get_query_var( 'post_type' ); 848 876 $post_type = isset( $post_type ) && ! empty( $post_type ) ? sanitize_text_field( wp_unslash( $post_type ) ) : false; … … 863 891 } else { 864 892 $new_url = add_query_arg( array( 865 'monk_id' => $monk_translations_id,893 'monk_id' => $monk_translations_id, 866 894 ), admin_url( 'post-new.php' ) ); 867 895 } … … 885 913 public function monk_custom_taxonomy_field() { 886 914 $monk_languages = monk_get_available_languages(); 887 $languages = get_option( 'monk_active_languages', false );915 $languages = $this->active_languages; 888 916 $taxonomies = get_taxonomies(); 889 $default_language = get_option( 'monk_default_language', false );917 $default_language = $this->default_language; 890 918 891 919 require plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/admin-monk-language-term.php'; … … 907 935 if ( ! empty( $monk_language ) ) { 908 936 909 $active_languages = get_option( 'monk_active_languages', false );937 $active_languages = $this->active_languages; 910 938 $language = sanitize_text_field( wp_unslash( filter_input( INPUT_POST, 'monk_language' ) ) ); 911 939 $is_menu = 'nav_menu' === $taxonomy ? 'menu' : 'term'; … … 919 947 $term_translations = get_option( 'monk_' . $is_menu . '_translations_' . $monk_id, array() ); 920 948 921 if ( in_array( $language , $active_languages, true ) && ( ! array_key_exists( $language, $term_translations ) || empty( $term_translations ) ) ) {949 if ( in_array( $language, $active_languages, true ) && ( ! array_key_exists( $language, $term_translations ) || empty( $term_translations ) ) ) { 922 950 add_term_meta( $term_id, '_monk_' . $is_menu . '_language', $language, true ); 923 951 … … 953 981 $current_language = get_term_meta( $term_id, '_monk_' . $is_menu . '_language', true ); 954 982 $monk_term_translations_id = get_term_meta( $term_id, '_monk_' . $is_menu . '_translations_id', true ); 983 $new_language = $new_language && ! empty( $new_language ) ? $new_language : $current_language; 955 984 956 985 update_term_meta( $term_id, '_monk_' . $is_menu . '_language', $new_language ); … … 963 992 $monk_term_translations = get_option( 'monk_' . $is_menu . '_translations_' . $monk_term_translations_id, array() ); 964 993 965 if ( ! array_key_exists( $new_language , $monk_term_translations ) ) {994 if ( ! array_key_exists( $new_language, $monk_term_translations ) ) { 966 995 if ( ! empty( $monk_term_translations ) ) { 967 996 unset( $monk_term_translations[ $current_language ] ); … … 1014 1043 $monk_term_translations_id = get_term_meta( $term->term_id, '_monk_term_translations_id', true ); 1015 1044 $option_name = 'monk_term_translations_' . $monk_term_translations_id; 1016 $languages = get_option( 'monk_active_languages', false );1045 $languages = $this->active_languages; 1017 1046 $monk_term_translations = get_option( $option_name, array() ); 1018 1047 … … 1034 1063 $taxonomies = get_taxonomies(); 1035 1064 $monk_language = get_term_meta( $term_id, '_monk_term_language', true ); 1036 $slug = $monk_languages[ $monk_language ]['slug'];1037 1065 $monk_term_translations_id = get_term_meta( $term_id, '_monk_term_translations_id', true ); 1038 $languages = get_option( 'monk_active_languages', false );1066 $languages = $this->active_languages; 1039 1067 $monk_term_translations = get_option( 'monk_term_translations_' . $monk_term_translations_id, array() ); 1040 $default_language = get_option( 'monk_default_language', false );1068 $default_language = $this->default_language; 1041 1069 $available_languages = false; 1042 1070 $post_type = 'none'; … … 1074 1102 $monk_languages = monk_get_available_languages(); 1075 1103 $monk_language = get_term_meta( $term->term_id, '_monk_term_language', true ); 1076 $languages = get_option( 'monk_active_languages', false );1104 $languages = $this->active_languages; 1077 1105 $taxonomies = get_taxonomies(); 1078 1106 $monk_term_translations_id = get_term_meta( $term->term_id, '_monk_term_translations_id', true ); … … 1125 1153 */ 1126 1154 public function monk_add_attachment_translation() { 1127 $monk_id = filter_input( INPUT_POST, 'monk_id' );1128 $current_post_id = filter_input( INPUT_POST, 'current_post_id' );1129 $lang = filter_input( INPUT_POST, 'lang' );1130 $attach_path = get_attached_file( $current_post_id );1131 $attach_url = wp_get_attachment_url( $monk_id );1155 $monk_id = filter_input( INPUT_POST, 'monk_id' ); 1156 $current_post_id = filter_input( INPUT_POST, 'current_post_id' ); 1157 $lang = filter_input( INPUT_POST, 'lang' ); 1158 $attach_path = get_attached_file( $current_post_id ); 1159 $attach_url = wp_get_attachment_url( $monk_id ); 1132 1160 1133 1161 $filetype = wp_check_filetype( basename( $attach_path ), null ); 1134 1162 $wp_upload_dir = wp_upload_dir(); 1135 1163 1136 $attachment = array(1164 $attachment = array( 1137 1165 'guid' => $attach_url, 1138 1166 'post_mime_type' => $filetype['type'], … … 1158 1186 1159 1187 $monk_attach_url = admin_url( 'post.php' ); 1160 $language_url = add_query_arg( array(1188 $language_url = add_query_arg( array( 1161 1189 'post' => $attach_id, 1162 1190 'action' => 'edit', … … 1177 1205 */ 1178 1206 public function monk_language_selector_render( $post_id, $language_code = false ) { 1179 $monk_languages = monk_get_available_languages();1207 $monk_languages = monk_get_available_languages(); 1180 1208 1181 1209 $monk_id = get_post_meta( $post_id, '_monk_post_translations_id', true ); 1182 1210 $language = get_post_meta( $post_id, '_monk_post_language', true ); 1183 1211 $slug = $monk_languages[ $language ]['slug']; 1184 $active_languages = get_option( 'monk_active_languages', false );1185 $default_language = get_option( 'monk_default_language', false );1212 $active_languages = $this->active_languages; 1213 $default_language = $this->default_language; 1186 1214 $post_translations = get_option( 'monk_post_translations_' . $monk_id, false ); 1187 1215 $post = filter_input( INPUT_GET, 'post' ); … … 1222 1250 */ 1223 1251 public function monk_fields_to_save( $post, $attachment ) { 1224 $active_languages = get_option( 'monk_active_languages', false ); 1225 1226 if ( 'upload.php' !== substr( strrchr( parse_url( $_SERVER['HTTP_REFERER'] )['path'], '/' ), 1 ) ) { 1252 $active_languages = $this->active_languages; 1253 $referer = wp_parse_url( $_SERVER['HTTP_REFERER'] ); 1254 1255 if ( 'upload.php' !== substr( strrchr( $referer['path'], '/' ), 1 ) ) { 1227 1256 if ( isset( $attachment['language'] ) ) { 1228 1257 if ( is_array( $active_languages ) ) { … … 1266 1295 $requested_post_id = filter_input( INPUT_POST, 'post_id' ); 1267 1296 $post_language = isset( $requested_post_id ) ? get_post_meta( $requested_post_id, '_monk_post_language', true ) : ''; 1268 $default_language = get_option( 'monk_default_language', false );1297 $default_language = $this->default_language; 1269 1298 $requested_post = filter_input( INPUT_POST, 'post' ); 1270 1299 $is_modal = ! isset( $requested_post ) ? true : false; … … 1277 1306 } elseif ( ! $language && $post_language ) { 1278 1307 $lang_code = $post_language; 1279 $language = $monk_languages[ $post_language ]['english_name'];1308 $language = $monk_languages[ $post_language ]['english_name']; 1280 1309 } elseif ( ! $language && $new_post_language ) { 1281 1310 $lang_code = $new_post_language; 1282 $language = $monk_languages[ $new_post_language ]['english_name'];1311 $language = $monk_languages[ $new_post_language ]['english_name']; 1283 1312 } else { 1284 1313 $lang_code = $default_language; 1285 $language = $monk_languages[ $default_language ]['english_name']; 1286 } 1287 1288 if ( 'upload.php' !== substr( strrchr( wp_parse_url( $_SERVER['HTTP_REFERER'] )['path'], '/' ), 1 ) ) { 1314 $language = $monk_languages[ $default_language ]['english_name']; 1315 } 1316 1317 $referer = wp_parse_url( $_SERVER['HTTP_REFERER'] ); 1318 1319 if ( 'upload.php' !== substr( strrchr( $referer['path'], '/' ), 1 ) ) { 1289 1320 $is_translatable = false; 1290 1321 } … … 1387 1418 if ( is_admin() && ( isset( $post_id ) && '0' !== $post_id ) && isset( $action ) ) { 1388 1419 1389 $default_language = get_option( 'monk_default_language' );1390 $language = get_post_meta( $post_id, '_monk_post_language', true );1420 $default_language = $this->default_language; 1421 $language = get_post_meta( $post_id, '_monk_post_language', true ); 1391 1422 1392 1423 if ( empty( $language ) ) { … … 1440 1471 } 1441 1472 } 1442 $url = monk_get_current_url(); 1443 $action_url = add_query_arg( 'lang', '', $url ); 1473 $monk_languages = monk_get_available_languages(); 1474 $languages = get_option( 'monk_active_languages', array() ); 1475 $url = monk_get_current_url(); 1476 $action_url = add_query_arg( 'lang', '', $url ); 1444 1477 1445 1478 require_once plugin_dir_path( __FILE__ ) . '/partials/admin-monk-term-language-selector-render.php'; … … 1464 1497 } 1465 1498 1466 $active_languages = get_option( 'monk_active_languages', false );1467 $default_language = get_option( 'monk_default_language', false );1499 $active_languages = $this->active_languages; 1500 $default_language = $this->default_language; 1468 1501 1469 1502 if ( '0' === filter_input( INPUT_GET, 'menu' ) ) { … … 1486 1519 1487 1520 foreach ( $active_languages as $code ) { 1488 if ( $menu_translations && array_key_exists( $code , $menu_translations ) ) {1489 $translation_counter = $translation_counter + 1;1521 if ( $menu_translations && array_key_exists( $code, $menu_translations ) ) { 1522 $translation_counter = $translation_counter++; 1490 1523 } 1491 1524 } … … 1521 1554 $menus = get_nav_menu_locations(); 1522 1555 $current_menus = get_theme_mod( 'nav_menu_locations' ); 1523 $default_language = get_option( 'monk_default_language', false );1556 $default_language = $this->default_language; 1524 1557 1525 1558 foreach ( $nav_menus as $nav_menu ) { … … 1627 1660 if ( check_ajax_referer( '_monk_save_general_settings', '_monk_save_general_settings', false ) ) { 1628 1661 $active_languages = filter_input( INPUT_POST, 'monk_active_languages', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ); 1629 $response = array();1662 $response = array(); 1630 1663 1631 1664 $response[] = $this->monk_save_language_packages( $active_languages ) ? true : false; … … 1650 1683 1651 1684 global $wpdb; 1652 $default_language = get_option( 'monk_default_language', false );1685 $default_language = $this->default_language; 1653 1686 $post_types = get_post_types( array( 1654 1687 'public' => true, … … 1667 1700 $posts_where .= ')'; 1668 1701 1669 $post_ids = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE $posts_where AND NOT EXISTS ( SELECT post_id FROM $wpdb->postmeta WHERE $wpdb->posts.ID=$wpdb->postmeta.post_id AND $wpdb->postmeta.meta_key = '_monk_post_language' )", ARRAY_A ); // WPCS: unprepared SQL OK.1702 $post_ids = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE $posts_where AND NOT EXISTS ( SELECT post_id FROM $wpdb->postmeta WHERE $wpdb->posts.ID=$wpdb->postmeta.post_id AND $wpdb->postmeta.meta_key = '_monk_post_language' )", ARRAY_A ); // WPCS: unprepared SQL OK. 1670 1703 1671 1704 $term_ids = $wpdb->get_results( "SELECT term_id FROM $wpdb->terms … … 1676 1709 if ( is_array( $post_ids ) && ! empty( $post_ids ) ) { 1677 1710 foreach ( $post_ids as $post_id ) { 1678 $set_language = $wpdb->insert( 'wp_postmeta', array(1711 $set_language = $wpdb->insert( 'wp_postmeta', array( 1679 1712 'post_id' => intval( $post_id['ID'] ), 1680 1713 'meta_key' => '_monk_post_language', 1681 1714 'meta_value' => $default_language, 1682 1715 )); 1683 $set_monk_id = $wpdb->insert( 'wp_postmeta', array(1716 $set_monk_id = $wpdb->insert( 'wp_postmeta', array( 1684 1717 'post_id' => intval( $post_id['ID'] ), 1685 1718 'meta_key' => '_monk_post_translations_id', 1686 1719 'meta_value' => intval( $post_id['ID'] ), 1687 1720 )); 1688 $value = array(1721 $value = array( 1689 1722 $default_language => intval( $post_id['ID'] ), 1690 1723 ); 1691 $set_translation_array = $wpdb->insert( 'wp_options', array(1724 $set_translation_array = $wpdb->insert( 'wp_options', array( 1692 1725 'option_name' => 'monk_post_translations_' . intval( $post_id['ID'] ), 1693 1726 'option_value' => maybe_serialize( $value ), … … 1701 1734 if ( is_array( $term_ids ) && ! empty( $term_ids ) ) { 1702 1735 foreach ( $term_ids as $term_id ) { 1703 $set_language = $wpdb->insert( 'wp_termmeta', array(1736 $set_language = $wpdb->insert( 'wp_termmeta', array( 1704 1737 'term_id' => intval( $term_id['term_id'] ), 1705 1738 'meta_key' => '_monk_term_language', 1706 1739 'meta_value' => $default_language, 1707 1740 )); 1708 $set_monk_id = $wpdb->insert( 'wp_termmeta', array(1741 $set_monk_id = $wpdb->insert( 'wp_termmeta', array( 1709 1742 'term_id' => intval( $term_id['term_id'] ), 1710 1743 'meta_key' => '_monk_term_translations_id', 1711 1744 'meta_value' => intval( $term_id['term_id'] ), 1712 1745 )); 1713 $value = array(1746 $value = array( 1714 1747 $default_language => intval( $term_id['term_id'] ), 1715 1748 ); 1716 $set_translation_array = $wpdb->insert( 'wp_options', array(1749 $set_translation_array = $wpdb->insert( 'wp_options', array( 1717 1750 'option_name' => 'monk_term_translations_' . $term_id['term_id'], 1718 1751 'option_value' => maybe_serialize( $value ), … … 1737 1770 public function monk_save_site_options() { 1738 1771 if ( check_ajax_referer( '_monk_site_options', false, false ) ) { 1739 $default_language = get_option( 'monk_default_language', false );1740 $active_languages = get_option( 'monk_active_languages', array() );1772 $default_language = $this->default_language; 1773 $active_languages = $this->active_languages; 1741 1774 $default_blogname = filter_input( INPUT_POST, 'blogname' ); 1742 1775 $default_blogdesc = filter_input( INPUT_POST, 'blogdescription' ); … … 1780 1813 ), $atts 1781 1814 ); 1815 1782 1816 $base_id = get_post_meta( get_queried_object_id(), '_monk_post_translations_id', true ); 1783 1817 $translations = get_option( 'monk_post_translations_' . $base_id, false ); 1784 1818 1785 1819 if ( ! empty( $translations[ $atts['language'] ] ) ) { 1786 $translation = $translations[ $atts['language'] ];1820 $translation = $translations[ $atts['language'] ]; 1787 1821 $translation_link = '<a href="' . esc_attr( get_permalink( $translation ) ) . '" class="' . esc_attr( $atts['class'] ) . '">' . esc_html( $atts['text'] ) . '</a>'; 1788 1822 return $translation_link; … … 1791 1825 } 1792 1826 } 1827 1828 /** 1829 * Function to filter comments by their post language. 1830 * 1831 * @uses the comments_clauses filter 1832 * 1833 * @since 0.7.0 1834 * 1835 * @param array $clauses Array with the query pieces to be filtered. 1836 * @return array $clauses 1837 */ 1838 public function monk_admin_filter_comment_clauses( $clauses ) { 1839 $screen = $this->get_current_screen(); 1840 $lang = filter_input( INPUT_GET, 'lang' ); 1841 1842 if ( ! is_admin() || 'edit-comments' !== $screen->base || 'all' === $lang ) { 1843 return $clauses; 1844 } 1845 1846 global $wpdb; 1847 1848 $default_language = get_option( 'monk_default_language', false ); 1849 $lang = empty( $lang ) ? $default_language : $lang; 1850 $replace = array( '(', ')' ); 1851 $comment_status = str_replace( $replace, '', $clauses['where'] ); 1852 $comment_status = '(' . $comment_status . ')'; 1853 $not_exists = ''; 1854 1855 if ( $default_language === $lang ) { 1856 $not_exists = " ( SELECT ID FROM $wpdb->posts WHERE ID NOT IN ( SELECT post_id FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = '_monk_post_language' ) AND comment_count > 0 ) or comment_post_id IN "; 1857 } 1858 1859 $clauses['where'] = 'comment_post_id in ' . $not_exists . " ( select ID FROM $wpdb->posts WHERE ID IN ( select post_id FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = '_monk_post_language' AND $wpdb->postmeta.meta_value = '$lang' ) AND comment_count > 0 ) AND " . $comment_status; 1860 1861 $clauses['orderby'] = str_replace( 'wp_comments.', '', $clauses['orderby'] ); 1862 1863 return $clauses; 1864 } 1865 1866 /** 1867 * Function to add a language selector to comments admin page. 1868 * 1869 * @uses the restrict_manage_comments action 1870 * 1871 * @since 0.7.0 1872 * 1873 * @return void 1874 */ 1875 public function monk_admin_add_comments_language_selector() { 1876 $comment_status = filter_input( INPUT_GET, 'comment_status' ); 1877 $comment_status = 'all' === $comment_status ? 'total_comments' : $comment_status; 1878 $comment_status = empty( $comment_status ) ? 'total_comments' : $comment_status; 1879 $comment_class = wp_count_comments(); 1880 1881 foreach ( $comment_class as $status => $number ) { 1882 1883 if ( $comment_status === $status && intval( $number ) > 0 ) { 1884 $monk_languages = monk_get_available_languages(); 1885 $languages = get_option( 'monk_active_languages', array() ); 1886 $url_language = filter_input( INPUT_GET, 'lang' ); 1887 1888 require plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/admin-monk-comments-language-selector-render.php'; 1889 break; 1890 } 1891 } 1892 } 1793 1893 } -
monk/trunk/admin/css/monk-admin.css
r1712354 r1807041 106 106 } 107 107 108 fieldset.menu-settings-group { 109 margin: 0 0 10px; 110 overflow: hidden; 111 padding-left: 18%; 112 } 113 108 114 .add-menu-translation { 109 115 text-align: right; … … 116 122 } 117 123 124 legend.howto { 125 float: left; 126 clear: both; 127 width: 21.951%; 128 padding: 3px 0 0; 129 margin-left: -21.951%; 130 } 131 118 132 .menu-flag { 119 133 font-size: 15px; 120 134 margin-right: 5px; 135 margin-left: 0 !important; 121 136 } 122 137 -
monk/trunk/admin/js/monk-admin.js
r1734509 r1807041 90 90 if ( response.success ) { 91 91 if ( response.data ) { 92 $( '#monk-downloading' ).addClass( 'monk-hide' ); 93 if ( -1 < $.inArray( false, response.data ) ) { 92 $( '#monk-downloading' ).addClass( 'monk-hide' ); 93 if ( -1 < $.inArray( false, response.data ) ) { 94 94 $( '#monk-error' ).removeClass( 'monk-hide' ); 95 } else { 95 } else { 96 96 $( '#monk-submit-settings' ).click(); 97 97 } … … 123 123 if ( response.hasOwnProperty( 'success' ) ) { 124 124 $( '#monk-bulk-action' ).addClass( 'monk-hide' ); 125 if ( response.success ) { 125 if ( response.success ) { 126 126 $( '#monk-done' ).removeClass( 'monk-hide' ); 127 127 } else { … … 158 158 if ( response.hasOwnProperty( 'success' ) ) { 159 159 $( '#monk-save-options' ).addClass( 'monk-hide' ); 160 if ( response.success ) { 160 if ( response.success ) { 161 161 $( '#monk-done' ).removeClass( 'monk-hide' ); 162 162 } else { … … 213 213 var attachment_id = file_attachment.attributes.id; 214 214 var item = $( '.attachments li.save-ready' ).not( '.uploading, .saved-language, [data-id]' ); 215 215 216 216 if ( typeof undefined === typeof item.attr( 'data-id' ) ) { 217 217 item.find( '.attachment-preview' ).click(); … … 229 229 if ( /\bnav-menus.php?\b/.test( window.location.pathname ) ) { 230 230 if ( $( '.add-menu-translation' ).length ) { 231 $( ' div#nav-menu-header .major-publishing-actions' ).append( $( '.add-menu-translation' ) );232 $( $( 'fieldset.menu-language' ) ).insertBefore( ' fieldset.auto-add-pages' );231 $( '#nav-menu-header .major-publishing-actions' ).append( $( '.add-menu-translation' ) ); 232 $( $( 'fieldset.menu-language' ) ).insertBefore( '.auto-add-pages' ); 233 233 $( $( '.menu-translations' ) ).insertAfter( '.menu-settings' ); 234 234 235 235 if ( $( '#monk-menu-translation-message' ).length ) { 236 236 $( '.menu-theme-locations' ).append( $( '#monk-menu-translation-message' ) ); 237 $( '.menu-theme-locations > div.checkbox-input' ).remove();237 $( '.menu-theme-locations > .checkbox-input' ).remove(); 238 238 } 239 239 if ( $( '#monk-checkbox-wrapper' ).length ) { … … 244 244 } 245 245 $( '.menu-theme-locations' ).append( $( '#monk-checkbox-wrapper' ) ); 246 $( '.menu-theme-locations > div.checkbox-input' ).remove();246 $( '.menu-theme-locations > .checkbox-input' ).remove(); 247 247 } 248 248 } else { 249 $( ' div#nav-menu-header .major-publishing-actions' ).append( $( '.new-menu-language' ) );249 $( '#nav-menu-header .major-publishing-actions' ).append( $( '.new-menu-language' ) ); 250 250 } 251 251 -
monk/trunk/admin/partials/admin-monk-active-languages-render.php
r1712354 r1807041 16 16 $monk_languages = monk_get_available_languages(); 17 17 18 $active_languages = get_option( 'monk_active_languages', false );19 $default_language = get_option( 'monk_default_language', false );18 $active_languages = $this->active_languages; 19 $default_language = $this->default_language; 20 20 ?> 21 21 <fieldset> -
monk/trunk/admin/partials/admin-monk-language-name-render.php
r1734509 r1807041 19 19 <?php $language = get_post_meta( filter_input( INPUT_POST, 'post_id' ), '_monk_post_language', true ); ?> 20 20 <?php else : ?> 21 <?php $language = get_option( 'monk_default_language', false ); ?>21 <?php $language = $this->default_language; ?> 22 22 <?php endif; ?> 23 23 <?php endif; ?> -
monk/trunk/admin/partials/admin-monk-menu-translation-fields-render.php
r1708712 r1807041 52 52 </select> 53 53 <?php else : ?> 54 <span class="menu-flag flag-icon flag-icon-<?php echo esc_attr( $monk_languages[ $menu_language ]['slug']); ?>"></span>54 <span class="menu-flag flag-icon flag-icon-<?php echo esc_attr( strtolower( $menu_language ) ); ?>"></span> 55 55 <span><?php echo esc_html( $monk_languages[ $menu_language ]['english_name'] ); ?></span> 56 56 <input type="hidden" name="monk_language" value="<?php echo esc_attr( $menu_language ); ?>"> -
monk/trunk/admin/partials/admin-monk-post-meta-box-field-render.php
r1708712 r1807041 47 47 </p> 48 48 <?php if ( $post_translations && $post->ID !== $monk_id ) : ?> 49 <?php if ( get_the_title( $monk_id ) ) : ?> 49 <?php if ( get_the_title( $monk_id ) ) : ?> 50 50 <?php $title = get_the_title( $monk_id ); ?> 51 51 <?php else : ?> … … 66 66 $post_translations = get_option( $option_current_name ); 67 67 foreach ( $active_languages as $code ) { 68 if ( $post_translations && array_key_exists( $code , $post_translations ) ) {68 if ( $post_translations && array_key_exists( $code, $post_translations ) ) { 69 69 $translation_counter = $translation_counter + 1; 70 70 } … … 94 94 'monk_id' => $monk_id, 95 95 ), $monk_translation_url ); 96 $lang_id = sanitize_title( $lang_code );96 $lang_id = sanitize_title( $lang_code ); 97 97 if ( array_key_exists( $lang_code, $monk_languages ) && ! array_key_exists( $lang_code, $post_translations ) ) : 98 98 $lang_name = $monk_languages[ $lang_code ]['english_name']; … … 120 120 foreach ( $active_languages as $lang_code ) : 121 121 $language_url = add_query_arg( array( 122 'lang' => $lang_code,123 'monk_id' => $monk_id,122 'lang' => $lang_code, 123 'monk_id' => $monk_id, 124 124 ), $monk_translation_url ); 125 $lang_id = sanitize_title( $lang_code );125 $lang_id = sanitize_title( $lang_code ); 126 126 if ( array_key_exists( $lang_code, $monk_languages ) && ! array_key_exists( $lang_code, $post_translations ) ) : 127 127 $lang_name = $monk_languages[ $lang_code ]['english_name']; … … 155 155 <span id="current-language"><?php echo esc_html( $monk_languages[ $post_default_language ]['english_name'] ); ?></span> 156 156 157 <!-- 157 <!-- 158 158 Gives the option to alter the current post language 159 159 When the user select this feature, -
monk/trunk/admin/partials/admin-monk-select-menu-to-edit-render.php
r1708712 r1807041 79 79 80 80 <?php 81 $menu_id = empty( $menu ) || 'delete' === filter_input( INPUT_GET, 'action' ) ? get_user_option( 'nav_menu_recently_edited' ) : $menu;81 $menu_id = empty( $menu ) || 'delete' === filter_input( INPUT_GET, 'action' ) ? get_user_option( 'nav_menu_recently_edited' ) : $menu; 82 82 83 83 if ( is_nav_menu( $menu_id ) ) : … … 92 92 } 93 93 94 $menu_name = $menu->name;94 $menu_name = $menu->name; 95 95 ?> 96 96 <?php if ( array_key_exists( $default_language, $menu_translations ) && $menu_language !== $default_language ) : ?> … … 103 103 <?php if ( ! $locations_tab ) : ?> 104 104 <div class="hide-if-no-js" id="monk-menu-translation-message"> 105 <?php $locations = array_keys( $menus, $menu ); ?>105 <?php $locations = array_keys( $menus, $menu, true ); ?> 106 106 <?php if ( $locations ) : ?> 107 107 <?php foreach ( $locations as $location ) : ?> … … 111 111 <?php endforeach; ?> 112 112 <?php else : ?> 113 <div><?php esc_html_e( 'No ne', 'monk' ); ?></div>113 <div><?php esc_html_e( 'No assigned location', 'monk' ); ?></div> 114 114 <?php endif; ?> 115 115 </div> -
monk/trunk/admin/partials/admin-monk-site-description-render.php
r1720925 r1807041 14 14 } 15 15 ?> 16 <input type="text" name="blogdescription" value="<?php echo esc_attr( $site_description ); ?>" class="regular-text"><span class="monk-language-flag flag-icon flag-icon-<?php echo esc_attr( $default_slug); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $default_language ]['native_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $default_language ]['native_name'] ); ?>"></span><br>16 <input type="text" name="blogdescription" value="<?php echo esc_attr( $site_description ); ?>" class="regular-text"><span class="monk-language-flag flag-icon flag-icon-<?php echo esc_attr( strtolower( $default_language ) ); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $default_language ]['native_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $default_language ]['native_name'] ); ?>"></span><br> 17 17 <?php foreach ( $active_languages as $lang ) : ?> 18 18 <?php if ( $lang !== $default_language ) : ?> 19 19 <?php $site_description = get_option( 'monk_' . $lang . '_blogdescription', '' ); ?> 20 <input type="text" name="<?php echo esc_attr( 'monk_' . $lang . '_blogdescription' ); ?>" value="<?php echo esc_attr( $site_description ); ?>" placeholder="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>" class="regular-text"><span class="monk-language-flag flag-icon flag-icon-<?php echo esc_attr( $monk_languages[ $lang ]['slug']); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>"></span><br>20 <input type="text" name="<?php echo esc_attr( 'monk_' . $lang . '_blogdescription' ); ?>" value="<?php echo esc_attr( $site_description ); ?>" placeholder="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>" class="regular-text"><span class="monk-language-flag flag-icon flag-icon-<?php echo esc_attr( strtolower( $lang ) ); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>"></span><br> 21 21 <?php endif; ?> 22 22 <?php endforeach; ?> -
monk/trunk/admin/partials/admin-monk-site-name-render.php
r1720925 r1807041 14 14 } 15 15 ?> 16 <input type="text" name="blogname" value="<?php echo esc_attr( $site_name ); ?>" class="regular-text"><span class="monk-language-flag flag-icon flag-icon-<?php echo esc_attr( $default_slug); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $default_language ]['native_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $default_language ]['native_name'] ); ?>"></span><br>16 <input type="text" name="blogname" value="<?php echo esc_attr( $site_name ); ?>" class="regular-text"><span class="monk-language-flag flag-icon flag-icon-<?php echo esc_attr( strtolower( $default_language ) ); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $default_language ]['native_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $default_language ]['native_name'] ); ?>"></span><br> 17 17 <?php foreach ( $active_languages as $lang ) : ?> 18 18 <?php if ( $lang !== $default_language ) : ?> 19 19 <?php $site_name = get_option( 'monk_' . $lang . '_blogname', '' ); ?> 20 <input type="text" name="<?php echo esc_attr( 'monk_' . $lang . '_blogname' ); ?>" value="<?php echo esc_attr( $site_name ); ?>" placeholder="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>" class="regular-text"><span class="monk-language-flag flag-icon flag-icon-<?php echo esc_attr( $monk_languages[ $lang ]['slug']); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>"></span><br>20 <input type="text" name="<?php echo esc_attr( 'monk_' . $lang . '_blogname' ); ?>" value="<?php echo esc_attr( $site_name ); ?>" placeholder="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>" class="regular-text"><span class="monk-language-flag flag-icon flag-icon-<?php echo esc_attr( strtolower( $lang ) ); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $lang ]['native_name'] ); ?>"></span><br> 21 21 <?php endif; ?> 22 22 <?php endforeach; ?> -
monk/trunk/admin/partials/admin-monk-term-language-selector-render.php
r1734509 r1807041 3 3 * Provides the view for monk_add_term_language_filter function. 4 4 * 5 * @since 0. 5.25 * @since 0.7.0 6 6 * 7 7 * @package Monk … … 13 13 die; 14 14 } 15 16 15 $monk_languages = monk_get_available_languages(); 17 16 $languages = get_option( 'monk_active_languages' ); 18 17 $url_language = filter_input( INPUT_GET, 'lang' ); 18 19 19 ?> 20 20 … … 23 23 <option value="all"><?php esc_html_e( 'All Languages', 'monk' ); ?></option> 24 24 <?php foreach ( $languages as $language ) : ?> 25 <option value="<?php echo esc_attr( $language ); ?>" 25 <option value="<?php echo esc_attr( $language ); ?>" 26 26 <?php 27 27 if ( isset( $url_language ) && ! empty( $url_language ) ) { -
monk/trunk/admin/partials/monk-language-column.php
r1720925 r1807041 18 18 <?php if ( $monk_language ) : ?> 19 19 <div class="monk-flag-wrapper"> 20 <span class="monk-selector-flag flag-icon <?php echo esc_attr( 'flag-icon-' . $monk_languages[ $monk_language ]['slug']); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $monk_language ]['english_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $monk_language ]['english_name'] ); ?>"></span>20 <span class="monk-selector-flag flag-icon <?php echo esc_attr( 'flag-icon-' . strtolower( $monk_language ) ); ?>" aria-label="<?php echo esc_attr( $monk_languages[ $monk_language ]['english_name'] ); ?>" title="<?php echo esc_attr( $monk_languages[ $monk_language ]['english_name'] ); ?>"></span> 21 21 </div> 22 22 <?php if ( $available_languages ) : ?> -
monk/trunk/admin/partials/monk-language-filter.php
r1734509 r1807041 15 15 16 16 $monk_languages = monk_get_available_languages(); 17 $languages = get_option( 'monk_active_languages' );17 $languages = $this->active_languages; 18 18 $url_language = filter_input( INPUT_GET, 'monk_language_filter' ); 19 19 ?> … … 21 21 <option value=""><?php esc_html_e( 'All Languages', 'monk' ); ?></option> 22 22 <?php foreach ( $languages as $language ) : ?> 23 <option value="<?php echo esc_attr( $language ); ?>" 23 <option value="<?php echo esc_attr( $language ); ?>" 24 24 <?php 25 25 if ( isset( $url_language ) && ! empty( $url_language ) ) { … … 27 27 selected( $monk_language_filter, $language ); 28 28 } elseif ( ! isset( $url_language ) ) { 29 selected( get_option( 'monk_default_language' ), $language );29 selected( $this->default_language, $language ); 30 30 } 31 31 ?> -
monk/trunk/includes/class-monk-activator.php
r1720925 r1807041 33 33 $language = get_locale() ? get_locale() : 'en_US'; 34 34 35 $default_post_category = get_term( get_option( 'default_category' ) );35 $default_post_category = get_term( get_option( 'default_category' ), OBJECT ); 36 36 $uncategorized_term = get_term_by( 'id', 1, 'category' ); 37 37 -
monk/trunk/includes/class-monk-i18n.php
r1712354 r1807041 19 19 class Monk_I18n { 20 20 21 /** 22 * The default language of the plugin. 23 * 24 * @since 0.7.0 25 * @access private 26 * @var string $default_language The default language of the plugin. 27 */ 28 private $default_language; 29 30 /** 31 * The active languages of the plugin. 32 * 33 * @since 0.7.0 34 * @access private 35 * @var array $active_languages The active languages of the plugin. 36 */ 37 private $active_languages; 38 39 /** 40 * Initialize the class and set its properties. 41 * 42 * @since 0.7.0 43 * @param string $default_language The default language of the plugin. 44 * @param array $active_languages The active languages of the plugin. 45 * @return void 46 */ 47 public function __construct( $default_language, $active_languages ) { 48 $this->default_language = $default_language; 49 $this->active_languages = $active_languages; 50 } 21 51 22 52 /** … … 69 99 $slug = $matches[0]; 70 100 $locale = monk_get_locale_by_slug( $slug ); 71 $active_languages = get_option( 'monk_active_languages', false );101 $active_languages = $this->active_languages; 72 102 73 103 if ( ! in_array( $locale, $active_languages, true ) ) { 74 $locale = get_option( 'monk_default_language', false );104 $locale = $this->default_language; 75 105 } 76 106 } elseif ( $slug ) { 77 107 $locale = monk_get_locale_by_slug( $slug ); 78 108 } else { 79 $locale = get_option( 'monk_default_language', false );109 $locale = $this->default_language; 80 110 } 81 111 -
monk/trunk/includes/class-monk-links.php
r1712354 r1807041 77 77 * 78 78 * @access private 79 * @var string $site_ languageThe main site language set by user.80 */ 81 private $site_ language;79 * @var string $site_slug The main site language set by user. 80 */ 81 private $site_slug; 82 82 83 83 /** … … 90 90 */ 91 91 private $site_root; 92 93 /** 94 * The default language of the plugin. 95 * 96 * @since 0.7.0 97 * @access private 98 * @var string $default_language The default language of the plugin. 99 */ 100 private $default_language; 101 102 /** 103 * The active languages of the plugin. 104 * 105 * @since 0.7.0 106 * @access private 107 * @var array $active_languages The active languages of the plugin. 108 */ 109 private $active_languages; 92 110 93 111 /** … … 98 116 * @param string $monk The name and ID of the plugin. 99 117 * @param string $version The plugin version. 100 */ 101 public function __construct( $monk, $version ) { 118 * @param string $default_language The default language of the plugin. 119 * @param array $active_languages The active languages of the plugin. 120 */ 121 public function __construct( $monk, $version, $default_language, $active_languages ) { 102 122 $monk_languages = monk_get_available_languages(); 103 123 104 $this->plugin_name = $monk; 105 $this->version = $version; 106 $this->index = 'index.php'; 107 $this->site_home = home_url(); 108 $this->structure = get_option( 'permalink_structure', false ); 109 $this->site_root = preg_match( '#^/*' . $this->index . '#', $this->structure ) ? $this->index . '/' : ''; 110 111 $default_language = get_option( 'monk_default_language', false ); 124 $this->plugin_name = $monk; 125 $this->version = $version; 126 $this->index = 'index.php'; 127 $this->site_home = home_url(); 128 $this->structure = get_option( 'permalink_structure', false ); 129 $this->site_root = preg_match( '#^/*' . $this->index . '#', $this->structure ) ? $this->index . '/' : ''; 130 131 $this->default_language = $default_language; 132 $this->active_languages = $active_languages; 112 133 113 134 if ( $default_language ) { 114 $this->site_ language = $monk_languages[ $default_language ]['slug'];135 $this->site_slug = $monk_languages[ $this->default_language ]['slug']; 115 136 } 116 137 } … … 131 152 132 153 $active_languages = array(); 133 $languages = get_option( 'monk_active_languages', false );154 $languages = $this->active_languages; 134 155 135 156 if ( $languages ) { … … 286 307 287 308 $url_language = get_query_var( 'lang' ); 288 $language = ( empty( $url_language ) ) ? $this->site_ language: $url_language;309 $language = ( empty( $url_language ) ) ? $this->site_slug : $url_language; 289 310 $default_language_url = get_option( 'monk_default_language_url', false ); 290 311 $path_index = strripos( $link, $path ); … … 292 313 293 314 if ( $this->monk_using_permalinks() ) { 294 if ( empty( $default_language_url ) && $this->site_ language=== $language ) {315 if ( empty( $default_language_url ) && $this->site_slug === $language ) { 295 316 $link = trailingslashit( $link ); 296 317 } else { … … 299 320 } else { 300 321 $monk_languages = monk_get_available_languages(); 301 if ( empty( $default_language_url ) && $this->site_ language=== $language ) {322 if ( empty( $default_language_url ) && $this->site_slug === $language ) { 302 323 $link = $link; 303 324 } else { … … 320 341 */ 321 342 public function monk_change_language_url( $url, $lang ) { 322 $monk_languages = monk_get_available_languages();323 324 $default_language = $this->site_ language;343 $monk_languages = monk_get_available_languages(); 344 345 $default_language = $this->site_slug; 325 346 $default_language_url = get_option( 'monk_default_language_url', false ); 326 347 $active_languages = $this->monk_get_active_languages(); … … 372 393 $post_language = get_post_meta( $post->ID, '_monk_post_language', true ); 373 394 $url_language = get_query_var( 'lang' ); 374 $language = ( empty( $post_language ) ) ? $this->site_ language: $post_language;395 $language = ( empty( $post_language ) ) ? $this->site_slug : $post_language; 375 396 $link = $this->monk_change_language_url( $link, $language ); 376 397 … … 392 413 public function monk_add_language_page_permalink( $link, $post_id ) { 393 414 $page_language = get_post_meta( $post_id, '_monk_post_language', true ); 394 $language = ( empty( $page_language ) ) ? $this->site_ language: $page_language;415 $language = ( empty( $page_language ) ) ? $this->site_slug : $page_language; 395 416 $link = $this->monk_change_language_url( $link, $language ); 396 417 … … 413 434 $active_languages = $this->monk_get_active_languages(); 414 435 $url_language = get_query_var( 'lang' ); 415 $language = ( in_array( $url_language, $active_languages, true ) ) ? $url_language : $this->site_ language;436 $language = ( in_array( $url_language, $active_languages, true ) ) ? $url_language : $this->site_slug; 416 437 $link = $this->monk_change_language_url( $link, $language ); 417 438 … … 433 454 public function monk_add_language_date_permalink( $link ) { 434 455 $monk_languages = monk_get_available_languages(); 435 $language = ( get_query_var( 'lang' ) ) ? get_query_var( 'lang' ) : $this->site_ language;436 $default_language = get_option( 'monk_default_language', false );456 $language = ( get_query_var( 'lang' ) ) ? get_query_var( 'lang' ) : $this->site_slug; 457 $default_language = $this->default_language; 437 458 $default_slug = $monk_languages[ $default_language ]['slug']; 438 459 $default_language_url = get_option( 'monk_default_language_url', false ); … … 458 479 $monk_languages = monk_get_available_languages(); 459 480 $term_language = get_term_meta( $term->term_id, '_monk_term_language', true ); 460 $language = ( empty( $term_language ) ) ? $this->site_ language: $monk_languages[ $term_language ]['slug'];481 $language = ( empty( $term_language ) ) ? $this->site_slug : $monk_languages[ $term_language ]['slug']; 461 482 $link = $this->monk_change_language_url( $link, $language ); 462 483 … … 478 499 public function monk_add_language_attachment_permalink( $link, $post_id ) { 479 500 $attachment_language = get_post_meta( $post_id, '_monk_post_language', true ); 480 $language = ( empty( $attachment_language ) ) ? $this->site_ language: $attachment_language;501 $language = ( empty( $attachment_language ) ) ? $this->site_slug : $attachment_language; 481 502 $link = $this->monk_change_language_url( $link, $language ); 482 503 … … 495 516 public function monk_add_language_author_permalink( $link, $author_id ) { 496 517 $monk_languages = monk_get_available_languages(); 497 $default_language = get_option( 'monk_default_language', false );518 $default_language = $this->default_language; 498 519 $default_slug = $monk_languages[ $default_language ]['slug']; 499 520 $default_language_url = get_option( 'monk_default_language_url', false ); 500 $language = ( get_query_var( 'lang' ) ) ? get_query_var( 'lang' ) : $this->site_ language;521 $language = ( get_query_var( 'lang' ) ) ? get_query_var( 'lang' ) : $this->site_slug; 501 522 502 523 if ( ! $this->monk_using_permalinks() ) { … … 519 540 */ 520 541 public function monk_add_language_search_permalink( $link ) { 521 $language = get_query_var( 'lang' ) ? get_query_var( 'lang' ) : $this->site_ language;542 $language = get_query_var( 'lang' ) ? get_query_var( 'lang' ) : $this->site_slug; 522 543 523 544 $link = $this->monk_change_language_url( $link, $language ); … … 541 562 if ( $form ) { 542 563 $monk_languages = monk_get_available_languages(); 543 $default_language = get_option( 'monk_default_language', false );564 $default_language = $this->default_language; 544 565 $default_slug = $monk_languages[ $default_language ]['slug']; 545 566 $default_language_url = get_option( 'monk_default_language_url', false ); 546 567 $page_language = get_query_var( 'lang' ); 547 $language = ( empty( $page_language ) ) ? $this->site_ language: $page_language;568 $language = ( empty( $page_language ) ) ? $this->site_slug : $page_language; 548 569 549 570 // Replace the closing form tag with the hidden field. … … 584 605 585 606 // First get the correct url and scheme. 586 $requested_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];607 $requested_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 587 608 588 609 // Get current active languages. … … 608 629 } elseif ( is_home() || is_front_page() || is_archive() && ! ( is_tax() || is_tag() || is_category() ) ) { 609 630 // From valid query var. 610 $slug = get_query_var( 'lang', $this->site_ language);631 $slug = get_query_var( 'lang', $this->site_slug ); 611 632 } 612 633 613 634 // If is not any of the above content cases, the fallback is the default language. 614 635 if ( empty( $slug ) ) { 615 $slug = $this->site_ language;636 $slug = $this->site_slug; 616 637 $redirect_url = $requested_url; 617 638 } else { … … 656 677 public function monk_previous_and_next_posts( $join, $in_same_term, $excluded_terms, $taxonomy, $post ) { 657 678 global $wpdb; 658 $post_id = $post->ID;659 $post_language = get_post_meta( $post_id, '_monk_post_language', true );660 $language = get_option( 'monk_default_language', false );679 $post_id = $post->ID; 680 $post_language = get_post_meta( $post_id, '_monk_post_language', true ); 681 $language = $this->default_language; 661 682 662 683 if ( $post_language ) { -
monk/trunk/includes/class-monk.php
r1734509 r1807041 56 56 57 57 /** 58 * The default language of the plugin. 59 * 60 * @since 0.7.0 61 * @access protected 62 * @var string $default_language The default language of the plugin. 63 */ 64 protected $default_language; 65 66 /** 67 * The active languages of the plugin. 68 * 69 * @since 0.7.0 70 * @access protected 71 * @var array $active_languages The active languages of the plugin. 72 */ 73 protected $active_languages; 74 75 /** 58 76 * Define the core functionality of the plugin. 59 77 * … … 67 85 public function __construct() { 68 86 69 $this->plugin_name = 'Monk'; 70 $this->version = '0.6.0'; 87 $this->plugin_name = 'Monk'; 88 $this->version = '0.7.0'; 89 $this->default_language = get_option( 'monk_default_language', false ); 90 $this->active_languages = get_option( 'monk_active_languages', array() ); 71 91 72 92 $this->load_dependencies(); 73 $this->set_locale( );93 $this->set_locale( $this->get_default_language(), $this->get_active_languages() ); 74 94 $this->define_global_hooks(); 75 $this->define_admin_hooks( );76 $this->define_public_hooks( );77 $this->define_link_hooks( );95 $this->define_admin_hooks( $this->get_default_language(), $this->get_active_languages() ); 96 $this->define_public_hooks( $this->get_default_language(), $this->get_active_languages() ); 97 $this->define_link_hooks( $this->get_default_language(), $this->get_active_languages() ); 78 98 $this->define_widget_hooks(); 79 99 } … … 151 171 * with WordPress. 152 172 * 153 * @since 0.1.0 154 * @access private 155 * @return void 156 */ 157 private function set_locale() { 158 159 $monk_i18n = new Monk_I18n(); 173 * @param string $default_language The language defined by user. 174 * @param array $active_languages Active languages to be used accorss the site. 175 * 176 * @since 0.1.0 177 * @access private 178 * @return void 179 */ 180 private function set_locale( $default_language, $active_languages ) { 181 182 $monk_i18n = new Monk_I18n( $default_language, $active_languages ); 160 183 161 184 $this->loader->add_action( 'plugins_loaded', $monk_i18n, 'load_plugin_textdomain' ); … … 180 203 * of the plugin. 181 204 * 182 * @since 0.1.0 183 * @access private 184 * @return void 185 */ 186 private function define_admin_hooks() { 187 188 $plugin_admin = new Monk_Admin( $this->get_plugin_name(), $this->get_version() ); 205 * @param string $default_language The default language of the plugin. 206 * @param array $active_languages The active languages of the plugin. 207 * 208 * @since 0.1.0 209 * @access private 210 * @return void 211 */ 212 private function define_admin_hooks( $default_language, $active_languages ) { 213 $plugin_admin = new Monk_Admin( $this->get_plugin_name(), $this->get_version(), $default_language, $active_languages ); 189 214 190 215 $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' ); … … 202 227 $this->loader->add_action( 'delete_attachment', $plugin_admin, 'monk_delete_post_data' ); 203 228 $this->loader->add_action( 'restrict_manage_posts', $plugin_admin, 'monk_admin_languages_selector' ); 229 $this->loader->add_action( 'restrict_manage_comments', $plugin_admin, 'monk_admin_add_comments_language_selector' ); 204 230 $this->loader->add_filter( 'pre_get_posts', $plugin_admin, 'monk_admin_posts_filter' ); 205 231 $this->loader->add_filter( 'get_terms_defaults', $plugin_admin, 'monk_admin_terms_filter', 10, 2 ); 232 $this->loader->add_filter( 'comments_clauses', $plugin_admin, 'monk_admin_filter_comment_clauses', 10, 2 ); 206 233 $this->loader->add_filter( 'manage_posts_columns', $plugin_admin, 'monk_language_column_head' ); 207 234 $this->loader->add_filter( 'manage_pages_columns', $plugin_admin, 'monk_language_column_head' ); … … 232 259 * of the plugin. 233 260 * 234 * @since 0.1.0 235 * @access private 236 * @return void 237 */ 238 private function define_public_hooks() { 239 240 $plugin_public = new Monk_Public( $this->get_plugin_name(), $this->get_version() ); 261 * @param string $default_language The default language of the plugin. 262 * @param array $active_languages The active languages of the plugin. 263 * 264 * @since 0.1.0 265 * @access private 266 * @return void 267 */ 268 private function define_public_hooks( $default_language, $active_languages ) { 269 270 $plugin_public = new Monk_Public( $this->get_plugin_name(), $this->get_version(), $default_language, $active_languages ); 241 271 242 272 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' ); 243 273 $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' ); 244 274 $this->loader->add_action( 'wp_head', $plugin_public, 'monk_print_localization_tags' ); 245 275 $this->loader->add_action( 'pre_get_posts', $plugin_public, 'monk_public_posts_filter' ); 246 276 $this->loader->add_filter( 'get_terms_defaults', $plugin_public, 'monk_public_terms_filter' ); 247 277 $this->loader->add_filter( 'wp_nav_menu_args', $plugin_public, 'monk_filter_nav_menus' ); 278 $this->loader->add_filter( 'option_page_on_front', $plugin_public, 'monk_page_on_front_translations' ); 248 279 249 280 $options = array( … … 271 302 * Register all of the hooks related to links and permalinks 272 303 * 304 * @param string $default_language The default language of the plugin. 305 * @param array $active_languages The active languages of the plugin. 306 * 273 307 * @since 0.2.0 274 308 * @access private 275 309 */ 276 private function define_link_hooks( ) {277 278 $plugin_links = new Monk_Links( $this->get_plugin_name(), $this->get_version() );310 private function define_link_hooks( $default_language, $active_languages ) { 311 312 $plugin_links = new Monk_Links( $this->get_plugin_name(), $this->get_version(), $default_language, $active_languages ); 279 313 280 314 $this->loader->add_action( 'init', $plugin_links, 'monk_add_home_rewrite_rule' ); … … 324 358 */ 325 359 public function add_term_hooks() { 326 $plugin_admin = new Monk_Admin( $this->get_plugin_name(), $this->get_version() );327 $taxonomies = get_taxonomies();360 $plugin_admin = new Monk_Admin( $this->get_plugin_name(), $this->get_version(), $this->get_default_language(), $this->get_active_languages() ); 361 $taxonomies = get_taxonomies(); 328 362 329 363 foreach ( $taxonomies as $taxonomy ) { … … 411 445 } 412 446 447 /** 448 * Retrieve the default language of the plugin. 449 * 450 * @since 0.7.0 451 * @return string The default language of the plugin. 452 */ 453 public function get_default_language() { 454 return $this->default_language; 455 } 456 457 /** 458 * Retrieve the active languages of the plugin. 459 * 460 * @since 0.7.0 461 * @return array The active languages of the plugin. 462 */ 463 public function get_active_languages() { 464 return $this->active_languages; 465 } 413 466 } -
monk/trunk/includes/monk-functions.php
r1734509 r1807041 22 22 $languages_codes = array_keys( $monk_languages ); 23 23 24 return in_array( $language_code , $language_codes, true );24 return in_array( $language_code, $language_codes, true ); 25 25 } 26 26 … … 54 54 55 55 foreach ( $monk_languages as $locale => $data ) { 56 if ( $data['slug'] === $slug ) {56 if ( $data['slug'] === $slug || $slug === $locale ) { 57 57 return $locale; 58 58 } … … 71 71 */ 72 72 function monk_get_url_args( $arg ) { 73 $url = $_SERVER['HTTP_REFERER'];74 $query =parse_url( $url );75 $query = array_key_exists( 'query',$query ) ? $query['query'] : '';76 $query = parse_str( $query, $name );73 $url = $_SERVER['HTTP_REFERER']; 74 $query = wp_parse_url( $url ); 75 $query = array_key_exists( 'query', $query ) ? $query['query'] : ''; 76 $query = parse_str( $query, $name ); 77 77 78 78 if ( isset( $name[ $arg ] ) ) { … … 96 96 97 97 if ( ! $monk_languages ) { 98 $monk_languages['en_US'] = array(98 $monk_languages['en_US'] = array( 99 99 'native_name' => 'English (United States)', 100 100 'english_name' => __( 'English (United States)', 'monk' ), … … 130 130 case 'es_CL': 131 131 case 'es_AR': 132 case 'es_CR': 132 133 case 'fr_CA': 133 134 case 'fr_BE': … … 167 168 return $monk_languages; 168 169 } 170 171 /** 172 * Retrieves translation data for current page. 173 * 174 * @since 0.7.0 175 * 176 * @return array $translation_data 177 */ 178 function monk_get_translations() { 179 $monk = new Monk(); 180 $monk_languages = monk_get_available_languages(); 181 182 $translation_data = array(); 183 $active_languages_slug = array(); 184 $current_language_slug = ''; 185 $active_languages = $monk->get_active_languages(); 186 $default_language = $monk->get_default_language(); 187 $has_default_language_url = get_option( 'monk_default_language_url', false ); 188 $current_locale = monk_get_locale_by_slug( get_query_var( 'lang' ) ); 189 $default_slug = $monk_languages[ $default_language ]['slug']; 190 191 if ( $current_locale && in_array( $current_locale, $active_languages, true ) ) { 192 $current_language_slug = sanitize_text_field( get_query_var( 'lang' ) ); 193 } else { 194 $current_language_slug = $monk_languages[ $default_language ]['slug']; 195 $current_locale = $default_language; 196 } 197 198 foreach ( $monk_languages as $lang_code => $list ) { 199 if ( in_array( $lang_code, $active_languages, true ) ) { 200 $translation_data[ $list['slug'] ]['id'] = 0; 201 $translation_data[ $list['slug'] ]['code'] = $lang_code; 202 $translation_data[ $list['slug'] ]['slug'] = $list['slug']; 203 $translation_data[ $list['slug'] ]['current'] = false; 204 $translation_data[ $list['slug'] ]['native_name'] = $list['native_name']; 205 $translation_data[ $list['slug'] ]['english_name'] = $list['english_name']; 206 $translation_data[ $list['slug'] ]['url'] = null; 207 } 208 } 209 210 if ( is_front_page() || is_post_type_archive() || is_date() || is_404() || is_author() || is_search() ) { 211 212 foreach ( $active_languages as $code ) { 213 $active_languages_slug[] = $monk_languages[ $code ]['slug']; 214 } 215 216 foreach ( $active_languages_slug as $lang_slug ) { 217 $current_url = monk_get_current_url(); 218 $locale_by_slug = monk_get_locale_by_slug( $lang_slug ); 219 220 if ( $lang_slug !== $current_language_slug ) { 221 if ( get_option( 'permalink_structure', false ) ) { 222 if ( get_query_var( 'lang' ) ) { 223 $pattern = '/\/(' . implode( '|', $active_languages_slug ) . ')/'; 224 $current_url = remove_query_arg( 'lang', $current_url ); 225 $current_url = is_ssl() ? str_replace( 'https://', '', $current_url ) : str_replace( 'http://', '', $current_url ); 226 227 if ( empty( $has_default_language_url ) && $lang_slug === $default_slug ) { 228 $current_url = preg_replace( $pattern, '', $current_url ); 229 } else { 230 $current_url = preg_replace( $pattern, '/' . $lang_slug, $current_url ); 231 } 232 233 $current_url = is_ssl() ? 'https://' . $current_url : 'http://' . $current_url; 234 } else { 235 if ( dirname( $_SERVER['PHP_SELF'] ) === '\\' || dirname( $_SERVER['PHP_SELF'] ) === '/' ) { 236 $current_url = str_replace( home_url(), home_url() . $lang_slug . '/', $current_url ); 237 } else { 238 $current_url = str_replace( dirname( $_SERVER['PHP_SELF'] ), trailingslashit( dirname( $_SERVER['PHP_SELF'] ) ) . $lang_slug, $current_url ); 239 } 240 } 241 $translation_data[ $lang_slug ]['url'] = $current_url; 242 } else { 243 if ( empty( $has_default_language_url ) && $lang_slug === $default_slug ) { 244 $translation_data[ $lang_slug ]['url'] = remove_query_arg( 'lang', $current_url ); 245 } else { 246 $translation_data[ $lang_slug ]['url'] = add_query_arg( 'lang', sanitize_key( $lang_slug ) ); 247 } 248 } 249 } 250 } 251 } // End if(). 252 253 if ( ( is_singular() && ! is_front_page() ) ) { 254 $current_id = get_the_id(); 255 $current_locale = get_post_meta( $current_id, '_monk_post_language', true ); 256 $translations_id = get_post_meta( $current_id, '_monk_post_translations_id', true ); 257 $total_translations = get_option( 'monk_post_translations_' . $translations_id, false ); 258 259 if ( $current_locale ) { 260 $current_language_slug = $monk_languages[ $current_locale ]['slug']; 261 } else { 262 $current_language_slug = $monk_languages[ $default_language ]['slug']; 263 $current_locale = $default_language; 264 } 265 266 if ( is_array( $total_translations ) ) { 267 foreach ( $total_translations as $lang_code => $post_id ) { 268 if ( in_array( $lang_code, $active_languages, true ) || $monk_languages[ $lang_code ]['slug'] === $current_language_slug ) { 269 $monk_translations[ $lang_code ] = $post_id; 270 } 271 } 272 } else { 273 $monk_translations[ $current_locale ] = $current_id; 274 } 275 276 foreach ( $monk_translations as $lang_code => $post_id ) { 277 $translation_data[ $monk_languages[ $lang_code ]['slug'] ]['url'] = get_permalink( $post_id ); 278 $translation_data[ $monk_languages[ $lang_code ]['slug'] ]['id'] = $post_id; 279 } 280 281 foreach ( $active_languages as $code ) { 282 if ( in_array( $code, $monk_translations, true ) ) { 283 $translation_data[ $monk_languages[ $code ]['slug'] ]['code'] = $code; 284 $translation_data[ $monk_languages[ $code ]['slug'] ]['native_name'] = $monk_languages[ $code ]['native_name']; 285 $translation_data[ $monk_languages[ $code ]['slug'] ]['english_name'] = $monk_languages[ $code ]['english_name']; 286 } 287 } 288 } // End if(). 289 290 if ( is_archive() && ( is_category() || is_tag() || is_tax() ) ) { 291 $monk_term_translations_id = get_term_meta( get_queried_object_id(), '_monk_term_translations_id', true ); 292 $total_translations = get_option( 'monk_term_translations_' . $monk_term_translations_id, false ); 293 294 if ( get_term_meta( get_queried_object_id(), '_monk_term_language', true ) ) { 295 $current_language_slug = $monk_languages[ get_term_meta( get_queried_object_id(), '_monk_term_language', true ) ]['slug']; 296 $current_locale = get_term_meta( get_queried_object_id(), '_monk_term_language', true ); 297 } else { 298 $current_language_slug = $monk_languages[ $default_language ]['slug']; 299 $current_locale = $default_language; 300 } 301 302 if ( is_array( $total_translations ) ) { 303 foreach ( $total_translations as $lang_code => $term_id ) { 304 if ( in_array( $lang_code, $active_languages, true ) || $monk_languages[ $lang_code ]['slug'] === $current_language_slug ) { 305 $monk_translations[ $lang_code ] = $term_id; 306 } 307 } 308 } else { 309 $monk_translations[ $current_locale ] = get_the_id(); 310 } 311 312 if ( $monk_translations ) { 313 foreach ( $monk_translations as $lang_code => $term_id ) { 314 if ( $monk_languages[ $lang_code ]['slug'] !== $current_language_slug ) { 315 $translation_data[ $monk_languages[ $lang_code ]['slug'] ]['url'] = get_term_link( $term_id ); 316 } 317 } 318 } else { 319 $current_language_slug = $monk_languages[ $monk->get_default_language() ]['slug']; 320 $monk_translations[ $current_language_slug ] = get_queried_object_id(); 321 322 foreach ( $monk_translations as $lang_code => $term_id ) { 323 if ( $lang_code !== $current_language_slug ) { 324 $translation_data[ $monk_languages[ $lang_code ]['slug'] ]['url'] = get_term_link( $term_id ); 325 } 326 } 327 } 328 } // End if(). 329 330 foreach ( $translation_data as $slug => $list ) { 331 if ( $current_language_slug === $slug ) { 332 $translation_data[ $slug ]['current'] = true; 333 } 334 } 335 336 return $translation_data; 337 } 338 339 /** 340 * Function to get post translation id. 341 * 342 * Retrieves ID of translation in a given language or in current site language. 343 * 344 * @param int $id Id of the post. 345 * @param string $lang Language slug. 346 * 347 * @return int $id Id of post translation. 348 */ 349 function monk_translated_post_id( $id, $lang = null ) { 350 if ( empty( $lang ) ) { 351 $monk = new Monk(); 352 $default_language = $monk->get_default_language(); 353 $lang = get_query_var( 'lang', $default_language ); 354 } 355 356 $current_language = monk_get_locale_by_slug( $lang ); 357 $post_group_id = get_post_meta( $id, '_monk_post_translations_id', true ); 358 $page_group = get_option( 'monk_post_translations_' . $post_group_id, array() ); 359 360 $id = array_key_exists( $current_language, $page_group ) ? $page_group[ $current_language ] : $id; 361 362 return $id; 363 } -
monk/trunk/languages/monk.pot
r1734509 r1807041 2 2 # Copyright (C) 2016 3 3 # This file is distributed under the GNU General Public License v2 or later. 4 #, fuzzy 4 5 msgid "" 5 6 msgstr "" 6 7 "Project-Id-Version: Monk 0.1.0\n" 7 8 "Report-Msgid-Bugs-To: Monk\n" 8 "POT-Creation-Date: 201 7-09-22 18:42-0300\n"9 "POT-Creation-Date: 2018-01-22 08:54-0200\n" 9 10 "PO-Revision-Date: \n" 10 11 "Last-Translator: Breno Alves\n" … … 19 20 "X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html_x:1,2c;esc_html__;" 20 21 "esc_attr_e;esc_attr_x:1,2c;esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;" 21 "_x:1,2c;_n:1,2;_n_noop:1,2;__ngettext:1,2;__ngettext_noop:1,2;_c,_nc:4c,1,2\n" 22 "_x:1,2c;_n:1,2;_n_noop:1,2;__ngettext:1,2;__ngettext_noop:1,2;_c," 23 "_nc:4c,1,2\n" 22 24 "X-Poedit-Basepath: ..\n" 23 "X-Generator: Poedit 1.5.4\n"25 "X-Generator: Poedit 2.0.3\n" 24 26 "X-Poedit-SearchPath-0: .\n" 25 27 26 #: includes/monk-functions.php:100 27 msgid "English (United States)" 28 msgstr "" 29 30 #: widgets/class-monk-language-switcher.php:32 31 msgid "Switch between site translations." 32 msgstr "" 33 34 #: widgets/class-monk-language-switcher.php:34 35 #: widgets/class-monk-language-switcher.php:231 36 msgid "Language Switcher" 37 msgstr "" 38 39 #: widgets/class-monk-language-switcher.php:49 40 #: widgets/partials/admin-monk-language-switcher.php:16 41 msgid "Languages" 42 msgstr "" 43 44 #: widgets/class-monk-language-switcher.php:246 45 msgid "Background" 46 msgstr "" 47 48 #: widgets/class-monk-language-switcher.php:261 49 msgid "Text" 50 msgstr "" 51 52 #: widgets/class-monk-language-switcher.php:276 53 msgid "Background Hover" 54 msgstr "" 55 56 #: widgets/class-monk-language-switcher.php:291 57 msgid "Text Hover" 58 msgstr "" 59 60 #: widgets/partials/admin-monk-language-switcher.php:21 61 msgid "Title: " 62 msgstr "" 63 64 #: widgets/partials/admin-monk-language-switcher.php:25 65 msgid "Hide Flags" 66 msgstr "" 67 68 #: widgets/partials/admin-monk-language-switcher.php:29 69 msgid "Monk Love" 70 msgstr "" 71 72 #: widgets/partials/public-monk-language-switcher.php:43 73 msgid "No other translations" 74 msgstr "" 75 76 #: widgets/partials/public-monk-language-switcher.php:68 77 #, php-format 78 msgid "Made with %1$s by %2$s" 79 msgstr "" 80 81 #: admin/class-monk-admin.php:74 82 msgid "Language packs updated" 83 msgstr "" 84 85 #: admin/class-monk-admin.php:75 86 msgid "Error on update language packs! Try again." 87 msgstr "" 88 89 #: admin/class-monk-admin.php:76 90 msgid "Posts and terms language updated" 91 msgstr "" 92 93 #: admin/class-monk-admin.php:77 94 msgid "Error on update posts and terms language! Try again." 95 msgstr "" 96 97 #: admin/class-monk-admin.php:78 98 msgid "Select the checkbox." 99 msgstr "" 100 101 #: admin/class-monk-admin.php:79 102 msgid "Site title and description updated" 103 msgstr "" 104 105 #: admin/class-monk-admin.php:80 106 msgid "Error on update site title and descripition! Try again." 107 msgstr "" 108 109 #: admin/class-monk-admin.php:132 28 #: admin/class-monk-admin.php:145 110 29 msgid "Monk Settings" 111 30 msgstr "" 112 31 113 #: admin/class-monk-admin.php:1 5532 #: admin/class-monk-admin.php:168 114 33 #: admin/partials/admin-monk-settings-tabs-render.php:18 115 34 msgid "Tools" 116 35 msgstr "" 117 36 118 #: admin/class-monk-admin.php:1 6337 #: admin/class-monk-admin.php:176 119 38 #: admin/partials/admin-monk-settings-tabs-render.php:19 120 39 msgid "Options" 121 40 msgstr "" 122 41 123 #: admin/class-monk-admin.php:1 7242 #: admin/class-monk-admin.php:185 124 43 msgid "General Settings" 125 44 msgstr "" 126 45 127 #: admin/class-monk-admin.php:1 8246 #: admin/class-monk-admin.php:195 128 47 msgid "Default site language" 129 48 msgstr "" 130 49 131 #: admin/class-monk-admin.php: 19150 #: admin/class-monk-admin.php:204 132 51 #: admin/partials/admin-monk-post-meta-box-field-render.php:80 133 52 msgid "Add new translation" 134 53 msgstr "" 135 54 136 #: admin/class-monk-admin.php:2 0055 #: admin/class-monk-admin.php:213 137 56 msgid "Set default language to all posts and terms without language" 138 57 msgstr "" 139 58 140 #: admin/class-monk-admin.php:2 0959 #: admin/class-monk-admin.php:222 141 60 msgid "Show default language in URL" 142 61 msgstr "" 143 62 144 #: admin/class-monk-admin.php:2 1863 #: admin/class-monk-admin.php:231 145 64 msgid "Site Title" 146 65 msgstr "" 147 66 148 #: admin/class-monk-admin.php:2 2767 #: admin/class-monk-admin.php:240 149 68 msgid "Tagline" 150 69 msgstr "" 151 70 152 #: admin/class-monk-admin.php:2 5571 #: admin/class-monk-admin.php:268 153 72 msgid "Here you can configure your language preferences." 154 73 msgstr "" 155 74 156 #: admin/class-monk-admin.php:2 5675 #: admin/class-monk-admin.php:269 157 76 msgid "" 158 77 "Select a default language for your site and check the languages you will " … … 160 79 msgstr "" 161 80 162 #: admin/class-monk-admin.php:429 admin/class-monk-admin.php:831 163 #: admin/class-monk-admin.php:1311 164 #: admin/partials/admin-monk-language-update-term.php:20 81 #: admin/class-monk-admin.php:442 admin/class-monk-admin.php:852 82 #: admin/class-monk-admin.php:1335 165 83 #: admin/partials/admin-monk-language-term.php:19 166 84 #: admin/partials/admin-monk-language-term.php:39 85 #: admin/partials/admin-monk-language-update-term.php:20 167 86 msgid "Language" 168 87 msgstr "" 169 88 170 #: admin/class-monk-admin.php:12 1689 #: admin/class-monk-admin.php:1237 171 90 msgid "No translations available" 172 91 msgstr "" 173 92 174 #: admin/class-monk-admin.php:13 1793 #: admin/class-monk-admin.php:1341 175 94 msgid "Translate" 176 95 msgstr "" 177 96 178 #: admin/partials/admin-monk-select-menu-to-edit-render.php:35 179 #, php-format 180 msgid "Translations of %s" 181 msgstr "" 182 183 #: admin/partials/admin-monk-select-menu-to-edit-render.php:55 184 msgid "— Select a Menu —" 185 msgstr "" 186 187 #: admin/partials/admin-monk-select-menu-to-edit-render.php:113 188 msgid "None" 189 msgstr "" 190 97 #: admin/partials/admin-monk-comments-language-selector-render.php:19 191 98 #: admin/partials/admin-monk-term-language-selector-render.php:23 192 99 #: admin/partials/monk-language-filter.php:21 193 100 msgid "All Languages" 194 msgstr ""195 196 #: admin/partials/admin-monk-settings-tabs-render.php:17197 msgid "General"198 msgstr ""199 200 #: admin/partials/admin-monk-term-translation.php:21201 #: admin/partials/admin-monk-post-meta-box-field-render.php:74202 msgid "Translations"203 msgstr ""204 205 #: admin/partials/admin-monk-term-translation.php:47206 msgid "Add a translation +"207 msgstr ""208 209 #: admin/partials/admin-monk-term-translation.php:50210 msgid "You must set a language before add translations."211 101 msgstr "" 212 102 … … 223 113 msgstr "" 224 114 115 #: admin/partials/admin-monk-language-term.php:50 116 msgid "This is a translation of " 117 msgstr "" 118 119 #: admin/partials/admin-monk-menu-translation-fields-render.php:22 120 msgid "Add translation +" 121 msgstr "" 122 123 #: admin/partials/admin-monk-menu-translation-fields-render.php:62 124 msgid "Menu Translations" 125 msgstr "" 126 127 #: admin/partials/admin-monk-menu-translation-fields-render.php:65 128 msgid "This menu does not have translations. " 129 msgstr "" 130 131 #: admin/partials/admin-monk-menu-translation-fields-render.php:67 132 msgid "You can add one here. " 133 msgstr "" 134 135 #: admin/partials/admin-monk-notice-render.php:13 136 msgid "Monk: " 137 msgstr "" 138 139 #: admin/partials/admin-monk-notice-render.php:13 140 msgid "You need to " 141 msgstr "" 142 143 #: admin/partials/admin-monk-notice-render.php:14 144 msgid "configure your language preferences" 145 msgstr "" 146 225 147 #: admin/partials/admin-monk-options-description.php:16 226 148 msgid "Here you can translate some data referring to your site." 227 149 msgstr "" 228 150 229 #: admin/partials/admin-monk-notice-render.php:13 230 msgid "Monk: " 231 msgstr "" 232 233 #: admin/partials/admin-monk-notice-render.php:13 234 msgid "You need to " 235 msgstr "" 236 237 #: admin/partials/admin-monk-notice-render.php:14 238 msgid "configure your language preferences" 151 #: admin/partials/admin-monk-post-meta-box-field-render.php:21 152 msgid "Post language" 153 msgstr "" 154 155 #. translators: This is a message to display the post being translated 156 #: admin/partials/admin-monk-post-meta-box-field-render.php:57 157 #, php-format 158 msgid "Translating \"%s\"." 159 msgstr "" 160 161 #: admin/partials/admin-monk-post-meta-box-field-render.php:74 162 #: admin/partials/admin-monk-term-translation.php:21 163 msgid "Translations" 164 msgstr "" 165 166 #: admin/partials/admin-monk-post-meta-box-field-render.php:78 167 #: admin/partials/monk-language-column.php:29 168 msgid "Add+" 169 msgstr "" 170 171 #: admin/partials/admin-monk-post-meta-box-field-render.php:150 172 #: admin/partials/admin-monk-post-meta-box-field-render.php:189 173 msgid "Cancel" 174 msgstr "" 175 176 #: admin/partials/admin-monk-post-meta-box-field-render.php:165 177 msgid "Edit" 178 msgstr "" 179 180 #: admin/partials/admin-monk-post-meta-box-field-render.php:167 181 msgid "Change current language" 182 msgstr "" 183 184 #: admin/partials/admin-monk-post-meta-box-field-render.php:208 185 msgid "Not translated, add one" 186 msgstr "" 187 188 #. translators: This is a label to display the translations group 189 #: admin/partials/admin-monk-select-menu-to-edit-render.php:35 190 #, php-format 191 msgid "Translations of %s" 192 msgstr "" 193 194 #: admin/partials/admin-monk-select-menu-to-edit-render.php:55 195 msgid "— Select a Menu —" 196 msgstr "" 197 198 #: admin/partials/admin-monk-select-menu-to-edit-render.php:113 199 msgid "No assigned location" 200 msgstr "" 201 202 #: admin/partials/admin-monk-settings-render.php:60 203 msgid "Select the checkbox." 239 204 msgstr "" 240 205 … … 249 214 #: admin/partials/admin-monk-settings-render.php:76 250 215 msgid "Downloading packages..." 216 msgstr "" 217 218 #: admin/partials/admin-monk-settings-render.php:80 219 msgid "Done!" 220 msgstr "" 221 222 #: admin/partials/admin-monk-settings-render.php:81 223 msgid "Error. Try again." 224 msgstr "" 225 226 #: admin/partials/admin-monk-settings-tabs-render.php:17 227 msgid "General" 228 msgstr "" 229 230 #: admin/partials/admin-monk-term-translation.php:47 231 msgid "Add a translation +" 232 msgstr "" 233 234 #: admin/partials/admin-monk-term-translation.php:50 235 msgid "You must set a language before add translations." 251 236 msgstr "" 252 237 … … 260 245 msgstr "" 261 246 262 #: admin/partials/monk-language-column.php:29 263 #: admin/partials/admin-monk-post-meta-box-field-render.php:78 264 msgid "Add+" 247 #: admin/partials/admin-monk-widget-notice.php:24 248 msgid "Remember to activate the " 249 msgstr "" 250 251 #: admin/partials/admin-monk-widget-notice.php:24 252 msgid "language switcher." 265 253 msgstr "" 266 254 … … 269 257 msgstr "" 270 258 271 #: admin/partials/admin-monk-language-term.php:50 272 msgid "This is a translation of " 273 msgstr "" 274 275 #: admin/partials/admin-monk-menu-translation-fields-render.php:22 276 msgid "Add translation +" 277 msgstr "" 278 279 #: admin/partials/admin-monk-menu-translation-fields-render.php:62 280 msgid "Menu Translations" 281 msgstr "" 282 283 #: admin/partials/admin-monk-menu-translation-fields-render.php:65 284 msgid "This menu does not have translations. " 285 msgstr "" 286 287 #: admin/partials/admin-monk-menu-translation-fields-render.php:67 288 msgid "You can add one here. " 289 msgstr "" 290 291 #: admin/partials/admin-monk-post-meta-box-field-render.php:21 292 msgid "Post language" 293 msgstr "" 294 295 #: admin/partials/admin-monk-post-meta-box-field-render.php:57 259 #: includes/monk-functions.php:100 260 msgid "English (United States)" 261 msgstr "" 262 263 #: widgets/class-monk-language-switcher.php:52 264 msgid "Switch between site translations." 265 msgstr "" 266 267 #: widgets/class-monk-language-switcher.php:54 268 #: widgets/class-monk-language-switcher.php:134 269 msgid "Language Switcher" 270 msgstr "" 271 272 #: widgets/class-monk-language-switcher.php:69 273 #: widgets/partials/admin-monk-language-switcher.php:16 274 msgid "Languages" 275 msgstr "" 276 277 #: widgets/class-monk-language-switcher.php:149 278 msgid "Background" 279 msgstr "" 280 281 #: widgets/class-monk-language-switcher.php:164 282 msgid "Text" 283 msgstr "" 284 285 #: widgets/class-monk-language-switcher.php:179 286 msgid "Background Hover" 287 msgstr "" 288 289 #: widgets/class-monk-language-switcher.php:194 290 msgid "Text Hover" 291 msgstr "" 292 293 #: widgets/partials/admin-monk-language-switcher.php:21 294 msgid "Title: " 295 msgstr "" 296 297 #: widgets/partials/admin-monk-language-switcher.php:25 298 msgid "Hide Flags" 299 msgstr "" 300 301 #: widgets/partials/admin-monk-language-switcher.php:29 302 msgid "Monk Love" 303 msgstr "" 304 305 #. translators: This is a message that says a content has no translations 306 #: widgets/partials/public-monk-language-switcher.php:45 307 msgid "No other translations" 308 msgstr "" 309 310 #. translators: This is a message to say the user is with us 311 #: widgets/partials/public-monk-language-switcher.php:70 296 312 #, php-format 297 msgid "Translating \"%s\"." 298 msgstr "" 299 300 #: admin/partials/admin-monk-post-meta-box-field-render.php:150 301 #: admin/partials/admin-monk-post-meta-box-field-render.php:189 302 msgid "Cancel" 303 msgstr "" 304 305 #: admin/partials/admin-monk-post-meta-box-field-render.php:165 306 msgid "Edit" 307 msgstr "" 308 309 #: admin/partials/admin-monk-post-meta-box-field-render.php:167 310 msgid "Change current language" 311 msgstr "" 312 313 #: admin/partials/admin-monk-post-meta-box-field-render.php:208 314 msgid "Not translated, add one" 315 msgstr "" 316 317 #: admin/partials/admin-monk-widget-notice.php:24 318 msgid "Remember to activate the " 319 msgstr "" 320 321 #: admin/partials/admin-monk-widget-notice.php:24 322 msgid "language switcher." 323 msgstr "" 313 msgid "Made with %1$s by %2$s" 314 msgstr "" -
monk/trunk/monk.php
r1734509 r1807041 4 4 * Plugin URI: https://wordpress.org/plugins/monk 5 5 * Description: Monk is a lightweight translation plugin to make your content reach the world. 6 * Version: 0. 6.06 * Version: 0.7.0 7 7 * Author: Breno Alves 8 8 * Author URI: https://github.com/brenoalvs -
monk/trunk/public/class-monk-public.php
r1720925 r1807041 36 36 37 37 /** 38 * The default language of the plugin. 39 * 40 * @since 0.7.0 41 * @access private 42 * @var string $default_language The default language of the plugin. 43 */ 44 private $default_language; 45 46 /** 47 * The active languages of the plugin. 48 * 49 * @since 0.7.0 50 * @access private 51 * @var array $active_languages The active languages of the plugin. 52 */ 53 private $active_languages; 54 55 /** 38 56 * Initialize the class and set its properties. 39 57 * 40 * @since 0.1.0 41 * @param string $monk The name of the plugin. 42 * @param string $version The version of this plugin. 43 * @return void 44 */ 45 public function __construct( $monk, $version ) { 46 $this->plugin_name = $monk; 47 $this->version = $version; 58 * @since 0.1.0 59 * @param string $monk The name of the plugin. 60 * @param string $version The version of this plugin. 61 * @param string $default_language The default language of the plugin. 62 * @param array $active_languages The active languages of the plugin. 63 * @return void 64 */ 65 public function __construct( $monk, $version, $default_language, $active_languages ) { 66 $this->plugin_name = $monk; 67 $this->version = $version; 68 $this->default_language = $default_language; 69 $this->active_languages = $active_languages; 48 70 } 49 71 … … 82 104 $filter_main_query = false; 83 105 84 if ( is_home() || is_ front_page() || is_archive() || is_search() ) {106 if ( is_home() || is_archive() || is_search() ) { 85 107 $filter_main_query = true; 86 108 } … … 93 115 94 116 $query_args = array(); 95 $default_language = get_option( 'monk_default_language', false );96 $active_languages = get_option( 'monk_active_languages', false );117 $default_language = $this->default_language; 118 $active_languages = $this->active_languages; 97 119 $default_slug = $monk_languages[ $default_language ]['slug']; 98 $current_language = get_query_var( 'lang', $default_slug ); 99 $current_language = monk_get_locale_by_slug( $current_language ); 120 $lang = get_query_var( 'lang', $default_slug ); 121 $current_language = monk_get_locale_by_slug( $lang ); 122 123 // Hotfix for translatable static front page. 124 if ( is_home() && 'page' === get_option( 'show_on_front' ) && ! is_page( get_option( 'page_for_posts' ) ) ) { 125 $front_page_id = get_option( 'page_on_front' ); 126 $group_id = get_post_meta( $front_page_id, '_monk_post_translations_id', true ); 127 $translation_group = get_option( 'monk_post_translations_' . $group_id, false ); 128 129 $query->set( 'page_id', $translation_group[ $current_language ] ); 130 $query->is_home = false; 131 $query->is_page = true; 132 $query->is_singular = true; 133 return; 134 } 100 135 101 136 if ( $current_language && in_array( $current_language, $active_languages ) ) { … … 120 155 } 121 156 122 $query->set( 'meta_query', array( $query_args ) ); 157 $meta_query = $query->get( 'meta_query' ); 158 159 if ( is_array( $meta_query ) ) { 160 $query_args = array_merge( $meta_query, $query_args ); 161 } 162 163 $query->set( 'meta_query', $query_args ); 123 164 } 124 165 … … 138 179 $monk_languages = monk_get_available_languages(); 139 180 140 $default_language = get_option( 'monk_default_language', false );141 $active_languages = get_option( 'monk_active_languages', false );181 $default_language = $this->default_language; 182 $active_languages = $this->active_languages; 142 183 $default_slug = $monk_languages[ $default_language ]['slug']; 143 184 $current_language = get_query_var( 'lang', $default_slug ); 144 185 $current_language = monk_get_locale_by_slug( $current_language ); 186 $old_meta_query = $args['meta_query']; 145 187 146 188 if ( $current_language && in_array( $current_language, $active_languages ) ) { … … 167 209 } 168 210 211 if ( is_array( $old_meta_query ) ) { 212 $args['meta_query'] = array_merge( $old_meta_query, $args['meta_query'] ); 213 } 214 169 215 return $args; 170 216 } … … 182 228 $menus = get_nav_menu_locations(); 183 229 $language = get_query_var( 'lang' ); 184 $default_language = get_option( 'monk_default_language', false );230 $default_language = $this->default_language; 185 231 186 232 if ( $language ) { … … 199 245 } else { 200 246 $menu_id_fallback = array_shift( $monk_translations ); 201 $args['menu'] = $menu_id_fallback;247 $args['menu'] = $menu_id_fallback; 202 248 } 203 249 } … … 218 264 */ 219 265 public function monk_filter_translatable_option( $pre_option, $option ) { 220 $default_language = get_option( 'monk_default_language', false );266 $default_language = $this->default_language; 221 267 $current_slug = get_query_var( 'lang', false ); 222 268 $current_locale = monk_get_locale_by_slug( $current_slug ); … … 228 274 return $pre_option; 229 275 } 276 277 /** 278 * Retrieves translation in current language for page_on_front option. 279 * 280 * @param int $page_id The page on front ID configured by user. 281 * @return int Page on front translation ID. 282 */ 283 public function monk_page_on_front_translations( $page_id ) { 284 if ( ! is_admin() ) { 285 $page_id = monk_translated_post_id( $page_id ); 286 } 287 288 return $page_id; 289 } 290 291 /** 292 * Prints the hreflang tags according to the current content. 293 * 294 * @return void 295 */ 296 public function monk_print_localization_tags() { 297 if ( is_admin() ) { 298 return; 299 } 300 301 $monk_localization_data = array(); 302 $translation_data = monk_get_translations(); 303 304 foreach ( $translation_data as $slug => $data ) { 305 $monk_localization_data[ $slug ] = $data['url']; 306 } 307 308 $monk_localization_data = apply_filters( 'monk_hreflang_tags', $monk_localization_data ); 309 310 foreach ( $monk_localization_data as $slug => $url ) { 311 if ( null !== $url ) { 312 echo '<link rel="alternate" href="' . esc_url( $url ) . '" hreflang="' . esc_attr( $slug ) . '" />' . PHP_EOL; 313 } 314 } 315 } 230 316 } -
monk/trunk/widgets/class-monk-language-switcher.php
r1734509 r1807041 23 23 24 24 /** 25 * The default language of the plugin. 26 * 27 * @since 0.7.0 28 * @access private 29 * @var string $default_language The default language of the plugin. 30 */ 31 private $default_language; 32 33 /** 34 * The active languages of the plugin. 35 * 36 * @since 0.7.0 37 * @access private 38 * @var array $active_languages The active languages of the plugin. 39 */ 40 private $active_languages; 41 42 /** 25 43 * Sets up the widgets classname and description. 26 44 * … … 28 46 */ 29 47 public function __construct() { 30 $widget_options = array( 48 $this->default_language = get_option( 'monk_default_language', false ); 49 $this->active_languages = get_option( 'monk_active_languages', array() ); 50 $widget_options = array( 31 51 'classname' => 'monk_language_switcher', 32 52 'description' => __( 'Switch between site translations.', 'monk' ), … … 50 70 $flag = ! empty( $instance['flag'] ) ? true : false; 51 71 $monk_love = ! empty( $instance['monk_love'] ) ? true : false; 52 $active_languages = get_option( 'monk_active_languages' );72 $active_languages = $this->active_languages; 53 73 $current_language = ''; 54 74 $monk_languages_reverted = array(); 55 $default_language = get_option( 'monk_default_language', false );75 $default_language = $this->default_language; 56 76 $default_slug = $monk_languages[ $default_language ]['slug']; 57 77 $has_default_language_url = get_option( 'monk_default_language_url', false ); 58 $current_locale = monk_get_locale_by_slug( get_query_var( 'lang' ) ); 59 60 if ( get_query_var( 'lang' ) && in_array( $current_locale, $active_languages ) ) { 61 $current_language = sanitize_text_field( get_query_var( 'lang' ) ); 62 } else { 63 $current_language = $monk_languages[ $default_language ]['slug']; 78 $current_locale = monk_get_locale_by_slug( get_query_var( 'lang' ) ); 79 80 $translation_data = monk_get_translations(); 81 82 foreach ( $translation_data as $slug => $data ) { 83 if ( ! empty( $data['url'] ) ) { 84 $switchable_languages[ $slug ] = $data['url']; 85 } 86 if ( true === $translation_data[ $slug ]['current'] ) { 87 $current_language = $slug; 88 } 64 89 } 65 66 if ( is_front_page() || is_post_type_archive() || is_date() || is_404() || is_author() || is_search() ) {67 68 foreach ( $active_languages as $code ) {69 $active_languages_slug[] = $monk_languages[ $code ]['slug'];70 }71 72 foreach ( $active_languages_slug as $lang_code ) {73 $current_url = monk_get_current_url();74 75 if ( $lang_code !== $current_language ) {76 if ( get_option( 'permalink_structure', false ) ) {77 if ( get_query_var( 'lang' ) ) {78 $pattern = '/\/(' . implode( '|', $active_languages_slug ) . ')/';79 $current_url = remove_query_arg( 'lang', $current_url );80 $current_url = is_ssl() ? str_replace( 'https://', '', $current_url ) : str_replace( 'http://', '', $current_url );81 82 if ( empty( $has_default_language_url ) && $lang_code === $default_slug ) {83 $current_url = preg_replace( $pattern, '', $current_url );84 } else {85 $current_url = preg_replace( $pattern, '/' . $lang_code, $current_url );86 }87 88 $current_url = is_ssl() ? 'https://' . $current_url : 'http://' . $current_url;89 } else {90 if ( dirname( $_SERVER['PHP_SELF'] ) === '\\' || dirname( $_SERVER['PHP_SELF'] ) === '/' ) {91 $current_url = str_replace( home_url(), home_url() . $lang_code . '/', $current_url );92 } else {93 $current_url = str_replace( dirname( $_SERVER['PHP_SELF'] ), trailingslashit( dirname( $_SERVER['PHP_SELF'] ) ) . $lang_code, $current_url );94 }95 }96 $switchable_languages[ $lang_code ] = $current_url;97 } else {98 if ( empty( $has_default_language_url ) && $lang_code === $default_slug ) {99 $switchable_languages[ $lang_code ] = remove_query_arg( 'lang', $current_url );100 } else {101 $switchable_languages[ $lang_code ] = add_query_arg( 'lang', sanitize_key( $lang_code ) );102 }103 }104 }105 }106 } // End if().107 108 if ( is_singular() ) {109 $current_id = get_the_id();110 $monk_post_translations_id = get_post_meta( $current_id, '_monk_post_translations_id', true );111 $monk_total_translations = get_option( 'monk_post_translations_' . $monk_post_translations_id, false );112 113 if ( get_post_meta( $current_id, '_monk_post_language', true ) ) {114 $current_language = $monk_languages[ get_post_meta( $current_id, '_monk_post_language', true ) ]['slug'];115 $current_locale = get_post_meta( $current_id, '_monk_post_language', true );116 } else {117 $current_language = $monk_languages[ $default_language ]['slug'];118 $current_locale = $default_language;119 }120 121 if ( is_array( $monk_total_translations ) ) {122 foreach ( $monk_total_translations as $lang_code => $post_id ) {123 if ( in_array( $lang_code, $active_languages, true ) || $monk_languages[ $lang_code ]['slug'] === $current_language ) {124 $monk_translations[ $lang_code ] = $post_id;125 }126 }127 } else {128 $monk_translations[ $current_locale ] = $current_id;129 }130 131 if ( $monk_translations ) {132 foreach ( $monk_translations as $lang_code => $post_id ) {133 if ( $monk_languages[ $lang_code ]['slug'] !== $current_language ) {134 $switchable_languages[ $monk_languages[ $lang_code ]['slug'] ] = get_permalink( $post_id );135 }136 }137 } else {138 $current_language = $monk_languages[ get_option( 'monk_default_language', false ) ]['slug'];139 $monk_translations[ $current_language ] = $current_id;140 foreach ( $monk_translations as $lang_code => $post_id ) {141 if ( $lang_code !== $current_language ) {142 $switchable_languages[ $lang_code ] = get_permalink( $post_id );143 }144 }145 }146 } // End if().147 148 if ( is_archive() && ( is_category() || is_tag() || is_tax() ) ) {149 $monk_term_translations_id = get_term_meta( get_queried_object_id(), '_monk_term_translations_id', true );150 $monk_total_translations = get_option( 'monk_term_translations_' . $monk_term_translations_id, false );151 152 if ( get_term_meta( get_queried_object_id(), '_monk_term_language', true ) ) {153 $current_language = $monk_languages[ get_term_meta( get_queried_object_id(), '_monk_term_language', true ) ]['slug'];154 $current_locale = get_term_meta( get_queried_object_id(), '_monk_term_language', true );155 } else {156 $current_language = $monk_languages[ $default_language ]['slug'];157 $current_locale = $default_language;158 }159 160 if ( is_array( $monk_total_translations ) ) {161 foreach ( $monk_total_translations as $lang_code => $term_id ) {162 if ( in_array( $lang_code, $active_languages, true ) || $monk_languages[ $lang_code ]['slug'] === $current_language ) {163 $monk_translations[ $lang_code ] = $term_id;164 }165 }166 } else {167 $monk_translations[ $current_locale ] = get_the_id();168 }169 170 if ( $monk_translations ) {171 foreach ( $monk_translations as $lang_code => $term_id ) {172 if ( $monk_languages[ $lang_code ]['slug'] !== $current_language ) {173 $switchable_languages[ $monk_languages[ $lang_code ]['slug'] ] = get_term_link( $term_id );174 }175 }176 } else {177 $current_language = $monk_languages[ get_option( 'monk_default_language', false ) ]['slug'];178 $monk_translations[ $current_language ] = get_queried_object_id();179 180 foreach ( $monk_translations as $lang_code => $term_id ) {181 if ( $lang_code !== $current_language ) {182 $switchable_languages[ $lang_code ] = get_term_link( $term_id );183 }184 }185 }186 } // End if().187 90 188 91 require plugin_dir_path( dirname( __FILE__ ) ) . 'widgets/partials/public-monk-language-switcher.php'; … … 228 131 public function monk_language_customizer( $wp_customize ) { 229 132 230 $wp_customize->add_section( 'monk_language_switcher' , array(133 $wp_customize->add_section( 'monk_language_switcher', array( 231 134 'title' => __( 'Language Switcher', 'monk' ), 232 135 'priority' => 700, -
monk/trunk/widgets/partials/public-monk-language-switcher.php
r1734509 r1807041 15 15 16 16 foreach ( $monk_languages as $lang_code => $list ) { 17 if ( $list['slug'] === $current_language ) { 18 $current_language = $lang_code; 19 $current_slug = $list['slug']; 17 if ( in_array( $lang_code, $active_languages, true ) ) { 18 if ( $list['slug'] === $current_language ) { 19 $current_language = $lang_code; 20 $current_slug = $list['slug']; 21 } 22 $monk_languages_reverted[ $list['slug'] ] = $list; 20 23 } 21 $monk_languages_reverted[ $list['slug'] ] = $list;22 24 } 23 25 … … 36 38 </div> 37 39 <ul class="monk-language-dropdown"> 38 <?php if ( empty( $switchable_languages ) ) : ?>40 <?php if ( 1 > count( $switchable_languages ) ) : ?> 39 41 <li class="monk-lang"> 40 42 <option> … … 45 47 </option> 46 48 </li> 47 <?php else : ?> 49 <?php else : ?> 48 50 <?php foreach ( $switchable_languages as $code => $url ) : ?> 49 51 <?php if ( $code !== $monk_languages[ $current_language ]['slug'] ) : ?>
Note: See TracChangeset
for help on using the changeset viewer.