PluginProbe
Polylang / 3.1.4
Polylang v3.1.4
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.1.4, at include/links-abstract-domain.php

92 lines 2.3 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
31 /**
32 * Returns the language based on language code in url
33 * links_model interface
34 *
35 * @since 1.2
36 * @since 2.0 add $url argument
37 *
38 * @param string $url optional, defaults to current url
39 * @return string language slug
40 */
41 public function get_language_from_url( $url = '' ) {
42 if ( empty( $url ) ) {
43 $url = pll_get_requested_url();
44 }
45
46 $host = wp_parse_url( $url, PHP_URL_HOST );
47 return ( $lang = array_search( $host, $this->get_hosts() ) ) ? $lang : '';
48 }
49
50 /**
51 * Sets the home urls.
52 *
53 * @since 2.2
54 *
55 * @param PLL_Language $language Language object.
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.
60 }
61
62 /**
63 * Returns the current site url
64 *
65 * @since 1.8
66 *
67 * @param string $url
68 * @return string
69 */
70 public function site_url( $url ) {
71 $lang = $this->get_language_from_url();
72 $lang = $this->model->get_language( $lang );
73 return $this->add_language_to_link( $url, $lang );
74 }
75
76 /**
77 * Fix the domain for upload directory
78 *
79 * @since 2.0.6
80 *
81 * @param array $uploads
82 * @return array
83 */
84 public function upload_dir( $uploads ) {
85 $lang = $this->get_language_from_url();
86 $lang = $this->model->get_language( $lang );
87 $uploads['url'] = $this->add_language_to_link( $uploads['url'], $lang );
88 $uploads['baseurl'] = $this->add_language_to_link( $uploads['baseurl'], $lang );
89 return $uploads;
90 }
91 }
92