Я использую плагин metabox для WordPress, и у меня странная проблема с плагином и его расширением: страница настроек. Я создаю простую страницу с вкладкой, включающей только поле выбора. Я использую класс для создания экземпляра всего компонента и его места непосредственно в моей теме, это не плагин. Поле выбора позволяет вернуть простую строку (имя шрифта). Моя проблема в том, что когда я выполняю команду rmwb_meta ('field_id'), она возвращает пустое значение.
<?php
class FontSettings {
/**
* Add actions and filter.
*
* @author PL
*/
public function __construct() {
add_action('init_root_style', array($this, 'init_font'));
add_filter('mb_settings_pages', array($this, 'register_global_settings_page'));
add_filter('rwmb_meta_boxes', array($this, 'register_global_meta_boxes'));
}
/**
* Add new meta boxes for the settings admin page
*
* @author PL
*/
public function register_global_meta_boxes($meta_boxes) {
$meta_boxes[] = array(
'id' => 'font-select',
'title' => __( 'Typography' ),
'settings_pages' => 'theme-settings',
'tab' => 'typography',
'fields' => array(
array(
'name' => __( 'Font variable' ),
'id' => 'font-variable',
'type' => 'select',
'desc' => __( 'Select the font of theme' ),
'placeholder' => __( 'Select a font to use' ),
'options' => array(
'noko' => 'Noko sans JP',
'hind' => 'Hind',
'open' => 'Open sans',
'lato' => 'Lato',
'nunito' => 'Nunito'
),
),
),
);
return $meta_boxes;
}
/**
* Add the new tab 'theme settings' in admin menu
*
* @author PL
*/
public function register_global_settings_page($settings_pages) {
$settings_pages[] = [
'id' => 'theme-settings',
'option_name' => 'theme_settings',
'menu_title' => 'Theme settings',
'icon_url' => 'dashicons-admin-generic',
'style' => 'no-boxes',
'columns' => 1,
'tab_style' => 'left',
'tabs' => array(
'typography' => 'typography',
),
];
return $settings_pages;
}
/**
* return the choosed one font
*
* @author PL
* @created : 2020-03-31
*/
public function init_font() {
$font-data = rwmb_meta('font-variable'); <-- $font-data is empty
echo($font-data);
}
}
$lugiaSettings = new LugiaSettings();
//////////////////////////////////////////////////
In wordpress page.php I call my fonction like so:
<?php do_action('init_font', null); ?>