Forum Replies Created

Viewing 4 replies - 1 through 4 (of 4 total)
  • Thread Starter eideroliveira

    (@eideroliveira)

    This is a patch that solves the issue:

    diff –git a/wordpress/wp-content/plugins/polylang/admin/settings.php b/wordpress/wp-content/plugins/polylang/admin/settings.php
    index b625c2c..be7d11c 100644
    — a/wordpress/wp-content/plugins/polylang/admin/settings.php
    +++ b/wordpress/wp-content/plugins/polylang/admin/settings.php
    @@ -267,7 +267,8 @@ class PLL_Settings {

    if (3 == $this->options[‘force_lang’] && isset($_POST[‘domains’]) && is_array($_POST[‘domains’])) {
    foreach ($_POST[‘domains’] as $key => $domain) {
    – $this->options[‘domains’][$key] = esc_url_raw(trim($domain));
    + //$this->options[‘domains’][$key] = esc_url_raw(trim($domain));
    + $this->options[‘domains’][$key] = preg_split(“/[\s,]+/”, trim($domain));
    }
    }

    diff –git a/wordpress/wp-content/plugins/polylang/admin/view-tab-settings.php b/wordpress/wp-content/plugins/polylang/admin/view-tab-settings.php
    index c29e001..989bf68 100644
    — a/wordpress/wp-content/plugins/polylang/admin/view-tab-settings.php
    +++ b/wordpress/wp-content/plugins/polylang/admin/view-tab-settings.php
    @@ -76,7 +76,8 @@ $page_on_front = ‘page’ == get_option(‘show_on_front’) ? get_option(‘page_on_fro
    ‘<td><input name=”domains[%1$s]” id=”pll-domain[%1$s]” type=”text” value=”%3$s” size=”40″ aria-required=”true” /></td></tr>’,
    esc_attr($lg->slug),
    esc_attr($lg->name),
    – esc_url(isset($this->options[‘domains’][$lg->slug]) ? $this->options[‘domains’][$lg->slug] : ($lg->slug == $this->options[‘default_lang’] ? $this->links_model->home : ”))
    + //esc_url(isset($this->options[‘domains’][$lg->slug]) ? $this->options[‘domains’][$lg->slug] : ($lg->slug == $this->options[‘default_lang’] ? $this->links_model->home : ”))
    + esc_attr(is_array($this->options[‘domains’][$lg->slug]) ? implode(“, “, $this->options[‘domains’][$lg->slug]) : ($lg->slug == $this->options[‘default_lang’] ? $this->links_model->home : ”))
    );
    }?>
    </table>
    diff –git a/wordpress/wp-content/plugins/polylang/include/links-domain.php b/wordpress/wp-content/plugins/polylang/include/links-domain.php
    index af7419d..b9edcd1 100644
    — a/wordpress/wp-content/plugins/polylang/include/links-domain.php
    +++ b/wordpress/wp-content/plugins/polylang/include/links-domain.php
    @@ -20,8 +20,13 @@ class PLL_Links_Domain extends PLL_Links_Permalinks {
    * @return string modified url
    */
    public function add_language_to_link($url, $lang) {
    – if (!empty($lang) && !empty($this->options[‘domains’][$lang->slug]))
    – $url = str_replace($this->home, $this->options[‘domains’][$lang->slug], $url);
    + if (!empty($lang) && !empty($this->options[‘domains’][$lang->slug])) {
    + if (!is_array($this->options[‘domains’][$lang->slug])) {
    + $url = str_replace($this->home, $this->options[‘domains’][$lang->slug], $url);
    + } else {
    + $url = str_replace($this->home, $this->options[‘domains’][$lang->slug][0], $url);
    + }
    + }
    return $url;
    }

    @@ -49,7 +54,20 @@ class PLL_Links_Domain extends PLL_Links_Permalinks {
    * @return string language slug
    */
    public function get_language_from_url() {
    – return ($lang = array_search( (is_ssl() ? ‘https://&#8217; : ‘https://&#8217;) . $_SERVER[‘HTTP_HOST’] . parse_url($this->home, PHP_URL_PATH), $this->options[‘domains’] ) ) ? $lang : $this->options[‘default_lang’];
    + $search = (is_ssl() ? ‘https://&#8217; : ‘https://&#8217;).str_replace(‘www.’, ”, $_SERVER[‘HTTP_HOST’]).parse_url($this->home, PHP_URL_PATH);
    +
    + // default
    + $slug = $this->options[‘default_lang’];
    + foreach ($this->options[‘domains’] as $lang => $domains) {
    + if (is_array($domains)) {
    + if (!(array_search($search, $domains) === FALSE)) {
    + $slug = $lang;
    + }
    + } elseif ($search == $domains) {
    + $slug = $lang;
    + }
    + }
    + return $slug;
    }

    /*
    @@ -62,7 +80,11 @@ class PLL_Links_Domain extends PLL_Links_Permalinks {
    * @return string
    */
    function home_url($lang) {
    – return empty($this->options[‘domains’][$lang->slug]) ? $this->home : $this->options[‘domains’][$lang->slug];
    + $domains = empty($this->options[‘domains’][$lang->slug]) ? $this->home : $this->options[‘domains’][$lang->slug];
    + if (is_array($domains)) {
    + return $domains[0];
    + }
    + return $domains;
    }

    /*
    @@ -73,6 +95,14 @@ class PLL_Links_Domain extends PLL_Links_Permalinks {
    * @return array list of hosts
    */
    public function get_hosts() {
    – return array_map(create_function(‘$v’, ‘return parse_url($v, PHP_URL_HOST);’), $this->options[‘domains’]);
    + $result = array();
    + foreach ($this->options[‘domains’] as $lang => $domains) {
    + if (is_array($domains)) {
    + $result = array_merge($result, array_map(create_function(‘$v’, ‘return parse_url($v, PHP_URL_HOST);’), $domains));
    + } else {
    + array_push($result, $domains);
    + }
    + }
    + return $result;
    }
    }

    Thread Starter eideroliveira

    (@eideroliveira)

    Would it make sense to change options[‘domains’] to support a list of domains, given the first element of the list would be the default url for that language?

    /*
    * returns the language based on language code in url
    * links_model interface
    *
    * @since 1.2
    *
    * @return string language slug
    */
    public function get_language_from_url() {
    return ($lang = array_search( (is_ssl() ? ‘https://&#8217; : ‘https://&#8217;) . $_SERVER[‘HTTP_HOST’] . parse_url($this->home, PHP_URL_PATH), $this->options[‘domains’] ) ) ? $lang : $this->options[‘default_lang’];
    }

    Thread Starter eideroliveira

    (@eideroliveira)

    I gave up on WPML and now I’m really happy with Polylang. Waaaaay faster and easier to use.

    Thread Starter eideroliveira

    (@eideroliveira)

    It turns out that only the Featured Pages are not featuring the translated pages. Even the demo slider is translated, which is really good.

Viewing 4 replies - 1 through 4 (of 4 total)