PluginProbe
Polylang / 2.1.1
Polylang v2.1.1
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-default.php

links-default.php in Polylang 2.1.1, at include/links-default.php

101 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Links model for default permalinks
5 * for example mysite.com/?somevar=something&lang=en
6 * implements the "links_model interface"
7 *
8 * @since 1.2
9 */
10 class PLL_Links_Default extends PLL_Links_Model {
11 public $using_permalinks = false;
12
13 /**
14 * Adds language information to an url
15 * links_model interface
16 *
17 * @since 1.2
18 *
19 * @param string $url url to modify
20 * @param object $lang language
21 * @return string modified url
22 */
23 public function add_language_to_link( $url, $lang ) {
24 return empty( $lang ) || ( $this->options['hide_default'] && $this->options['default_lang'] == $lang->slug ) ? $url : add_query_arg( 'lang', $lang->slug, $url );
25 }
26
27 /**
28 * Removes the language information from an url
29 * links_model interface
30 *
31 * @since 1.2
32 *
33 * @param string $url url to modify
34 * @return string modified url
35 */
36 public function remove_language_from_link( $url ) {
37 return remove_query_arg( 'lang', $url );
38 }
39
40 /**
41 * Returns the link to the first page
42 * links_model interface
43 *
44 * @since 1.2
45 *
46 * @param string $url url to modify
47 * @return string modified url
48 */
49 function remove_paged_from_link( $url ) {
50 return remove_query_arg( 'paged', $url );
51 }
52
53 /**
54 * Returns the link to the paged page when using pretty permalinks
55 *
56 * @since 1.5
57 *
58 * @param string $url url to modify
59 * @param int $page
60 * @return string modified url
61 */
62 public function add_paged_to_link( $url, $page ) {
63 return add_query_arg( array( 'paged' => $page ), $url );
64 }
65
66 /**
67 * Gets the language slug from the url if present
68 * links_model interface
69 *
70 * @since 1.2
71 * @since 2.0 add $url argument
72 *
73 * @param string $url optional, defaults to current url
74 * @return string language slug
75 */
76 public function get_language_from_url( $url = '' ) {
77 if ( empty( $url ) ) {
78 $url = $_SERVER['REQUEST_URI'];
79 }
80
81 $pattern = '#lang=('.implode( '|', $this->model->get_languages_list( array( 'fields' => 'slug' ) ) ).')#';
82 return preg_match( $pattern, trailingslashit( $url ), $matches ) ? $matches[1] : ''; // $matches[1] is the slug of the requested language
83 }
84
85 /**
86 * Returns the static front page url
87 *
88 * @since 1.8
89 *
90 * @param object $lang
91 * @return string
92 */
93 public function front_page_url( $lang ) {
94 if ( $this->options['hide_default'] && $lang->slug == $this->options['default_lang'] ) {
95 return trailingslashit( $this->home );
96 }
97 $url = home_url( '/?page_id=' . $lang->page_on_front );
98 return $this->options['force_lang'] ? $this->add_language_to_link( $url, $lang ) : $url;
99 }
100 }
101