Чтобы использовать кастомные поля, созданные с помощью Carbon Fields в WordPress, вместе с плагином Polylang для мультиязычных сайтов, вы должны убедиться, что данные корректно синхронизируются и сохраняются для всех языков. Вот шаги, которые вам помогут настроить кастомные поля для отображения на главной странице и их сохранения на разных языках:
1. Создание кастомных полей:
Сначала вам нужно определить кастомные поля с помощью Carbon Fields, как указано в вашем примере. Например:
```php
use Carbon_Fields\Container;
use Carbon_Fields\Field;
add_action( 'carbon_fields_register_fields', 'crb_attach_theme_options' );
function crb_attach_theme_options() {
Container::make( 'post_meta', __( 'Homepage Settings', 'your-text-domain' ) )
->where( 'post_type', '=', 'page' )
->where( 'post_template', '=', 'template-home.php' )
->add_tab(__('Верхний блок', 'your-text-domain'), [
Field::make( 'textarea', 'hero_desc', __( 'Описание', 'your-text-domain') )
]);
}
add_action( 'after_setup_theme', 'crb_load' );
function crb_load() {
require_once( 'vendor/autoload.php' );
\Carbon_Fields\Carbon_Fields::boot();
}
```
2. Отображение кастомных полей:
Чтобы отобразить значение кастомного поля на главной странице, следует использовать функцию `carbon_get_post_meta()`, как вы уже сделали. Но важно убедиться, что вы используете правильный ID страницы для каждого языка.
```php
$homepage_id = (function_exists('pll_get_post')) ? pll_get_post(get_option( 'page_on_front' )) : get_option( 'page_on_front' );
$hero_desc = carbon_get_post_meta( $homepage_id, 'hero_desc' );
echo esc_textarea( $hero_desc );
```
3. Сохранение кастомных полей для всех языков:
Убедитесь, что кастомные поля сохраняются для всех языков. Для этого может потребоваться использование дополнительных хуков Polylang, чтобы связать кастомные поля между переводами страниц. Есть несколько способов это сделать, например через фильтр `pll_copy_post_metas` в Polylang.
```php
function my_pll_copy_post_metas( $keys ) {
// 'hero_desc' это идентификатор поля Carbon Fields. Вы можете добавить еще поля здесь.
$keys[] = 'hero_desc';
return $keys;
}
add_filter( 'pll_copy_post_metas', 'my_pll_copy_post_metas' );
```
Этот код позволит вам копировать данные кастомного поля `hero_desc` во все языковые версии страницы при сохранении или обновлении основной страницы страницы.
Удостоверьтесь, что вы добавили любые функции и хуки в файлы темы WordPress, например, в `functions.php` или предпочитаемое место для кастомного кода в вашей теме.