rozwój wtyczki – funkcja do_settings_section($page) generuje błąd „Wyczerpano dopuszczalny rozmiar pamięci… bajtów”
Tworzę wtyczkę do automatycznego usuwania postów/wydarzeń. Utworzyłem stronę ustawień WP, aby zarządzać domyślnymi ustawieniami automatycznego usuwania.
Postępowałem zgodnie z każdym krokiem register_setting
, add_settings_field
I add_settings_section
dla funkcji $callback.
Potem dzwonię settings_fields
, do_settings_sections
i „submit_button” wewnątrz tego $callback
Moje pola_ustawień muszą być polem wyboru, więc używam wp checked
funkcja wewnątrz wejścia, aby sprawdzić wartość danych przechowywanych w wp_options.
Wszystko wyświetla się poprawnie bez do_settings_sections
używać. Gdy tylko użyję tej funkcji, pojawia się błąd „wyczerpany rozmiar pamięci”, a część HTML replikuje się w nieskończoność.
Wreszcie sprawdzony atrybut nie jest zarejestrowany
Nie mogę znaleźć mojego błędu:
Dodaj do menu:
function stm_addmenu_auto_delete_event() {
add_menu_page(
'Automatic deletion',
'Automatic <br/> deletion',
'manage_options',
'manage-auto-delete-page',
'auto_delete_settings_callback',
'dashicons-fas fa-trash',
21
);
}
add_action( 'admin_menu', 'stm_addmenu_auto_delete_event','manage_options');
dodaj ustawienia do strony:
function new_settings_auto_delete() {
add_settings_section(
'default_auto_delete_section',
'Manage the automatic deletion of posts',
'',
'manage-auto-delete-page'
);
register_setting(
'manage-auto-delete-page',
'default_auto_delete_field',
array(
'type' => 'string',
'sanitize_callback' =>'sanitize_text_field',
'default' => ''
)
);
add_settings_field(
'default_auto_delete_field',
'By default activate automatic deletion',
'auto_delete_settings_callback',
'manage-auto-delete-page',
'default_auto_delete_section'
);
}
add_action( 'admin_init', 'new_settings_auto_delete' );
funkcja wywołania zwrotnego:
<?php
function auto_delete_settings_callback(){
$option_auto_delete = get_option('default_auto_delete_field');
?>
<stmwrapper>
<form action="options.php" method="post" id="stm_auto_delete_manager_form_style">
<?php
do_settings_sections('manage-auto-delete-page');
?>
<div id="stm_auto_delete_manager_container">
<property class="default_activation">
<!--<span>By default activate automatic deletion</span>-->
<?php settings_fields('manage-auto-delete-page'); ?>
<input class="default_auto_deletion_toggle" type="checkbox" id="default_auto_deletion_toggle" name="default_auto_delete_field" value="" <?php checked( '1', $option_auto_delete); ?>>
<label class="slider-btn" for="default_auto_deletion_toggle">
<span class="off">Non</span>
<span class="on">Oui</span>
</label>
</property>
<?php
submit_button( 'Save' );
?>
</div>
</form>
</stmwrapper>
<?php
}