Ho sviluppato un plug-in di lingua per wordpress che funziona completamente. L'unica cosa che manca ora è la riscrittura dell'URL. Ho visto molti siti Web, fonti e altre domande su StackOverflow, ma non riesco a far funzionare i miei permalink.Wordpress: include la lingua variabile nell'URL
sono stato in grado di aggiungere una variabile stringa di query in questo modo:
public function append_query_string($url)
{
$args = array('lang' => $this->get_locale());
return add_query_arg($args, $url);
}
add_filter('page_link', array($this, 'append_query_string'));
add_filter('post_link', array($this, 'append_query_string'));
add_filter('the_permalink', array($this, 'append_query_string'));
Questo cambia i miei collegamenti a http://www.mylink.com?lang=en_us
per esempio. Quello che voglio ora, è quello di aggiungere un permastruct modo che l'utente possa avere abbastanza di URL (ad es http://www.mylink.com/en/
)
ho aggiunto il seguente pezzo di codice:
public function add_query_var($vars)
{
$vars['lang'] = $this->get_locale();
return $vars;
}
add_filter('request' , array($this, 'add_query_var'), 10, 2);
public function custom_permastruct()
{
add_permastruct('language', '%lang%', false);
}
add_action('wp_loaded', array($this, 'custom_permastruct'));
L'unica cosa che ho bisogno ora è una riscrittura La regola, presumo, ma potrei sbagliarmi completamente. Qualcuno che sa qual è la soluzione migliore per aggiungere questo permastrotto?
EDIT mi hanno cercato di ottenere questo lavoro per un mese e non mi sembra di essere in grado di ottenere una comprensione su permalink, nemmeno con tutte le risposte precedenti e la mia ricerca. Ecco perché sto sbattendo questo post con una taglia ancora una volta. Cosa mi serve: ho una funzione (get_locale) che restituisce un codice lingua. Questo codice lingua dovrebbe essere implementato nel mio url come segue: "http://www.mywebsite.com/LANGUAGE_HERE/..."
So che ho bisogno di registrare la mia struttura permalink per quello, ma è qui che tutto va storto. Di quali filtri ho bisogno e cosa devo inserire nelle funzioni del filtro? Qualsiasi aiuto è molto apprezzato, perché qui sto diventando piuttosto disperato.
EDIT 2
Così ho aggiunto regole di riscrittura, ma non sembrano funzionare. Sto diventando un po 'disperato qui. Comunque, questo è il codice per le regole di riscrittura:
public function add_rewrite_rules()
{
$languages = $this->get_all_languages();
foreach($languages as $language) {
add_rewrite_rule('^' . $language->code . '/([^/]*)/?$', 'index.php?lang=$matches[1]', 'top');
}
}
add_action('init', array($this, 'add_rewrite_rules'));
Questo non è completo, ma riceverai suggerimenti su come procedere. – Yash