PluginProbe
Polylang / 2.8
Polylang v2.8
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.8, at include/links-default.php

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