PluginProbe
Polylang / 3.7.7
Polylang v3.7.7
3.8.9 3.8.8 3.8.7 3.8.6 3.8.5 3.8.4 3.8.3 2.7 2.7.0.1 2.7.1 2.7.2 2.7.3 2.7.4 2.8 2.8.1 2.8.2 2.8.3 2.8.4 2.9 2.9.1 2.9.2 3.0 3.0.1 3.0.2 3.0.3 All 233 releases
← All changes | include/links-abstract-domain.php +49 -26 2.9 → 3.7.7 View file →
@@ -3,9 +3,9 @@
3 3 * @package Polylang
4 4 */
5 5
6 6 /**
7 - * Links model for use when using one domain or subdomain per language
7 + * Links model for use when using one domain or subdomain per language.
8 8 *
9 9 * @since 2.0
10 10 */
11 11 abstract class PLL_Links_Abstract_Domain extends PLL_Links_Permalinks {
@@ -10,34 +10,36 @@
10 10 */
11 11 abstract class PLL_Links_Abstract_Domain extends PLL_Links_Permalinks {
12 12
13 13 /**
14 - * Constructor
14 + * Constructor.
15 15 *
16 16 * @since 2.0
17 17 *
18 - * @param object $model PLL_Model instance.
18 + * @param PLL_Model $model Instance of PLL_Model.
19 19 */
20 20 public function __construct( &$model ) {
21 21 parent::__construct( $model );
22 22
23 - // Avoid cross domain requests ( mainly for custom fonts ).
23 + // Avoid cross domain requests (mainly for custom fonts).
24 24 add_filter( 'content_url', array( $this, 'site_url' ) );
25 25 add_filter( 'theme_root_uri', array( $this, 'site_url' ) ); // The above filter is not sufficient with WPMU Domain Mapping.
26 26 add_filter( 'plugins_url', array( $this, 'site_url' ) );
27 27 add_filter( 'rest_url', array( $this, 'site_url' ) );
28 28 add_filter( 'upload_dir', array( $this, 'upload_dir' ) );
29 +
30 + // Set the correct domain for each language.
31 + add_filter( 'pll_language_flag_url', array( $this, 'site_url' ) );
29 32 }
30 33
31 34 /**
32 - * Returns the language based on language code in url
33 - * links_model interface
35 + * Returns the language based on the language code in url.
34 36 *
35 37 * @since 1.2
36 - * @since 2.0 add $url argument
38 + * @since 2.0 Add the $url argument.
37 39 *
38 - * @param string $url optional, defaults to current url
39 - * @return string language slug
40 + * @param string $url Optional, defaults to the current url.
41 + * @return string Language slug.
40 42 */
41 43 public function get_language_from_url( $url = '' ) {
42 44 if ( empty( $url ) ) {
43 45 $url = pll_get_requested_url();
@@ -43,43 +45,35 @@
43 45 $url = pll_get_requested_url();
44 46 }
45 47
46 48 $host = wp_parse_url( $url, PHP_URL_HOST );
47 - return ( $lang = array_search( $host, $this->get_hosts() ) ) ? $lang : '';
48 - }
49 + $lang = array_search( $host, $this->get_hosts() );
49 50
50 - /**
51 - * Sets the home urls
52 - *
53 - * @since 2.2
54 - *
55 - * @param object $language
56 - */
57 - protected function set_home_url( $language ) {
58 - $home_url = $this->home_url( $language );
59 - $language->set_home_url( $home_url, $home_url ); // Search url and home url are the same
51 + return is_string( $lang ) ? $lang : '';
60 52 }
61 53
62 54 /**
63 - * Returns the current site url
55 + * Modifies an url to use the domain associated to the current language.
64 56 *
65 57 * @since 1.8
66 58 *
67 - * @param string $url
68 - * @return string
59 + * @param string $url The url to modify.
60 + * @return string The modified url.
69 61 */
70 62 public function site_url( $url ) {
71 63 $lang = $this->get_language_from_url();
64 +
72 65 $lang = $this->model->get_language( $lang );
66 +
73 67 return $this->add_language_to_link( $url, $lang );
74 68 }
75 69
76 70 /**
77 - * Fix the domain for upload directory
71 + * Fixes the domain for the upload directory.
78 72 *
79 73 * @since 2.0.6
80 74 *
81 - * @param array $uploads
75 + * @param array $uploads Array of information about the upload directory. @see wp_upload_dir().
82 76 * @return array
83 77 */
84 78 public function upload_dir( $uploads ) {
85 79 $lang = $this->get_language_from_url();
@@ -86,6 +80,35 @@
86 80 $lang = $this->model->get_language( $lang );
87 81 $uploads['url'] = $this->add_language_to_link( $uploads['url'], $lang );
88 82 $uploads['baseurl'] = $this->add_language_to_link( $uploads['baseurl'], $lang );
89 83 return $uploads;
84 + }
85 +
86 + /**
87 + * Adds home and search URLs to language data before the object is created.
88 + *
89 + * @since 3.4.1
90 + *
91 + * @param array $additional_data Array of language additional data.
92 + * @param array $language Language data.
93 + * @return array Language data with home and search URLs added.
94 + */
95 + public function set_language_home_urls( $additional_data, $language ) {
96 + $language = array_merge( $language, $additional_data );
97 + $additional_data['search_url'] = $this->home_url( $language['slug'] );
98 + $additional_data['home_url'] = $additional_data['search_url'];
99 + return $additional_data;
100 + }
101 +
102 + /**
103 + * Returns language home URL property according to the current domain.
104 + *
105 + * @since 3.4.4
106 + *
107 + * @param string $url Home URL.
108 + * @param array $language Array of language props.
109 + * @return string Filtered home URL.
110 + */
111 + public function set_language_home_url( $url, $language ) {
112 + return $this->home_url( $language['slug'] );
90 113 }
91 114 }