Пишу плагин Paid Post. Сделал для него пробную страницу настроек (она пока там одна). Выводится страница нормально, но при нажатии «сохранить» настройка не изменяется (галочка всегда включена). Чтение Settings API и изучение чужих плагинов не помогли.
Кусок кода:
// Admin options
function PPOptionsPage() {
add_settings_section("section_main", __("Main options", 'paid-posts'), '', "paid-posts");
add_settings_field(
"pp_display_excerpt",
__("Display post excerpt on a single page before paywall text", 'paid-posts' ),
"PPCheckbox",
"paid-posts",
"section_main",
array( 'label_for' => 'pp_display_excerpt')
);
register_setting("paid-posts", "pp_display_excerpt");
}
function PPCheckbox($options)
{
echo '<input type="checkbox" class="code" name="'. $options['label_for'] .'" id="'. $options['label_for'] .'" value="1"' . checked(1, get_option($options['label_for']), false) . '>';
}
add_action("admin_init", "PPOptionsPage");
function PPAdminMenu() {
add_options_page(
__('Paid Post options', 'paid-posts'),
__('Paid Post', 'paid-posts'),
'manage_options',
'paid-posts',
'PPAdminOptions'
);
}
function PPAdminOptions() {
if ( !current_user_can( 'manage_options' ) ) {
wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
}
?>
<div class="wrap">
<h1><?php echo get_admin_page_title(); ?></h1>
<form method="post" action="">
<?php
settings_fields("section_main");
do_settings_sections("paid-posts");
submit_button();
?>
</form>
</div>
<?php
}
add_action( 'admin_menu', 'PPAdminMenu' );