PluginProbe
Polylang / 3.6.7
Polylang v3.6.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
polylang / include / links-abstract-domain.php

links-abstract-domain.php in Polylang 3.6.7, at include/links-abstract-domain.php

115 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package Polylang
4 */
5
6 /**
7 * Links model for use when using one domain or subdomain per language.
8 *
9 * @since 2.0
10 */
11 abstract class PLL_Links_Abstract_Domain extends PLL_Links_Permalinks {
12
13 /**
14 * Constructor.
15 *
16 * @since 2.0
17 *
18 * @param PLL_Model $model Instance of PLL_Model.
19 */
20 public function __construct( &$model ) {
21 parent::__construct( $model );
22
23 // Avoid cross domain requests (mainly for custom fonts).
24 add_filter( 'content_url', array( $this, 'site_url' ) );
25 add_filter( 'theme_root_uri', array( $this, 'site_url' ) ); // The above filter is not sufficient with WPMU Domain Mapping.
26 add_filter( 'plugins_url', array( $this, 'site_url' ) );
27 add_filter( 'rest_url', array( $this, 'site_url' ) );
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' ) );
32 }
33
34 /**
35 * Returns the language based on the language code in url.
36 *
37 * @since 1.2
38 * @since 2.0 Add the $url argument.
39 *
40 * @param string $url Optional, defaults to the current url.
41 * @return string Language slug.
42 */
43 public function get_language_from_url( $url = '' ) {
44 if ( empty( $url ) ) {
45 $url = pll_get_requested_url();
46 }
47
48 $host = wp_parse_url( $url, PHP_URL_HOST );
49 $lang = array_search( $host, $this->get_hosts() );
50
51 return is_string( $lang ) ? $lang : '';
52 }
53
54 /**
55 * Modifies an url to use the domain associated to the current language.
56 *
57 * @since 1.8
58 *
59 * @param string $url The url to modify.
60 * @return string The modified url.
61 */
62 public function site_url( $url ) {
63 $lang = $this->get_language_from_url();
64
65 $lang = $this->model->get_language( $lang );
66
67 return $this->add_language_to_link( $url, $lang );
68 }
69
70 /**
71 * Fixes the domain for the upload directory.
72 *
73 * @since 2.0.6
74 *
75 * @param array $uploads Array of information about the upload directory. @see wp_upload_dir().
76 * @return array
77 */
78 public function upload_dir( $uploads ) {
79 $lang = $this->get_language_from_url();
80 $lang = $this->model->get_language( $lang );
81 $uploads['url'] = $this->add_language_to_link( $uploads['url'], $lang );
82 $uploads['baseurl'] = $this->add_language_to_link( $uploads['baseurl'], $lang );
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'] );
113 }
114 }
115