wpml-resolve-absolute-url.php
1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
class WPML_Resolve_Absolute_Url implements IWPML_Resolve_Object_Url {
/** @var SitePress $sitepress */
private $sitepress;
/** @var WPML_Translate_Link_Targets */
private $translate_link_targets;
/** @var bool */
private $lock;
public function __construct( SitePress $sitepress, WPML_Translate_Link_Targets $translate_link_targets ) {
$this->sitepress = $sitepress;
$this->translate_link_targets = $translate_link_targets;
}
/**
* @param string $url
* @param string $lang
*
* @return string|false
*/
public function resolve_object_url( $url, $lang ) {
if ( $this->lock ) {
return false;
}
$this->lock = true;
$current_lang = $this->sitepress->get_current_language();
$this->sitepress->switch_lang( $lang );
try {
$new_url = $this->translate_link_targets->convert_url( $url );
if ( trailingslashit( $new_url ) === trailingslashit( $url ) ) {
$new_url = false;
}
} catch ( Exception $e ) {
$new_url = false;
}
$this->sitepress->switch_lang( $current_lang );
$this->lock = false;
return $new_url;
}
}