Отображение параметров настройки с помощью API параметров WordPress

У меня проблемы с получением поля для сохранения с помощью API настроек WordPress

У меня есть 1 вариант страницы, с 1 разделом и 1 полем. Так что все довольно просто. Все выглядит / рендеринг нормально, но я не могу сохранить поля.

class LocalSEOAdmin {

var $slug = 'local_seo_settings';

var $name = "Local SEO";

public function __construct(){

// When WP calls admin_menu, call $this->admin_settings
if ( is_admin() ) {
add_action('admin_menu',  array( &$this, 'add_options_page' ) );  // on admin_menu call $this->init_admin_menu
add_action( 'admin_init', array( &$this, 'add_setting_fields' ) );

}

}

public function add_options_page(){
add_options_page(
$this->name, // Page title
$this->name, // Menu Title
'manage_options',  // Role
$this->slug, // Menu slug
array( &$this, 'local_seo_admin_menu_callback' ) // Callback to render the option page
);
}

public function local_seo_admin_menu_callback(){
?>
<div class='wrap'>
<h1><?php echo $this->name ?> Options</h1>
<form method='post' action='options.php'>
<?php
settings_fields( 'address_settings_section' );
do_settings_sections( $this->slug );
submit_button();
?>
</form>
</div>
<?php

}

public function add_setting_fields(){

add_settings_section(
'address_settings_section',         // ID used to identify this section and with which to register options
'Address Options',      // Title to be displayed on the administration page
array( &$this, '_render_address_options'),  // Callback used to render the description of the section
$this->slug     // Page on which to add this section of options
);

add_settings_field(
'address_line_1',                       // ID used to identify the field throughout the theme
'Address Line 1',                           // The label to the left of the option interface element
array( &$this, '_render_address_line_1'),   // The name of the function responsible for rendering the option interface
$this->slug,    // The page on which this option will be displayed
'address_settings_section',         // The name of the section to which this field belongs
array(                              // The array of arguments to pass to the callback. In this case, just a description.
__( 'Activate this setting to display the header.', 'sandbox' ),
)
);

register_setting(
'address_settings_section',
'address_settings_section'
);

}

public function _render_address_options(){
echo '<p>Add you address</p>';
}

public function _render_address_line_1(){
$option = get_option( 'address_line_1' );
$html = '<input type="text" id="address_line_1" name="address_line_1" value="' . $option . '" />';
echo $html;
}}

new LocalSEOAdmin;

Я не уверен, что происходит, но я чувствую, что перепутал необходимые поля. Поля отображаются в WordPress, и когда я нажимаю, обновите «настройки сохранены». появляются сообщения, но ничего не сохраняется.

0

Решение

При регистрации настроек возникает небольшая проблема.

основывается на register_setting, вторым параметром является $ option_name, поэтому вы должны указать имя для отправки

    register_setting(
'address_settings_section',
'address_line_1'
);

и теперь это сработало.

Вы можете найти больше о создании страниц параметров в WordPress сайт.

0

Другие решения

В register_setting ()

Первый параметр ваш option group name &
Второй параметр option name который дан в add_settings_field () , в вашем случае это должно быть address_line_1 не address_settings_section

в заключение

register_setting(
'address_settings_section',
'address_line_1'
)
0

По вопросам рекламы [email protected]