Я только что установил Polylang (бесплатная версия), и у меня есть группа полей, которая должна отображаться на титульная страница .
В админке, поля отображаются правильно на главной странице основного языка, но не на переведенной главной странице.
Я искал, чтобы увидеть, что может пойти не так, и это, очевидно, из-за ACF , то естьтолько проверяя, находимся ли мы на первой странице с get_option('page_on_front')
.
И кажется, что polylang не фильтрует значение, чтобы установить правую главную страницу.
Так что я нашел это mu-plugin :
<?php
class ACF_Page_Type_Polylang {
// Whether we hooked page_on_front
private $filtered = false;
public function __construct() {
add_filter( 'acf/location/rule_match/page_type', array( $this, 'hook_page_on_front' ) );
}
public function hook_page_on_front( $match ) {
if ( ! $this->filtered ) {
add_filter( 'option_page_on_front', array( $this, 'translate_page_on_front' ) );
// Prevent second hooking
$this->filtered = true;
}
return $match;
}
public function translate_page_on_front( $value ) {
if ( function_exists( 'pll_get_post' ) ) {
$value = pll_get_post( $value );
}
return $value;
}
}
new ACF_Page_Type_Polylang();
, но это не решает проблему, и я не знаю почему, код кажется правильным.
Если я только приму эту часть:
add_filter( 'option_page_on_front', array( $this, 'translate_page_on_front' ) );
и преобразовать его в:
add_filter( 'option_page_on_front',function() { return '346' });
( 346 - переведенный идентификатор главной страницы)
корректно фильтрует параметрpage_on_front и мои поля отображаются правильно.
Можете ли вы помочь мне заставить работать плагин mu?