WordPress

rozwój wtyczki – funkcja do_settings_section($page) generuje błąd „Wyczerpano dopuszczalny rozmiar pamięci… bajtów”

  • 5 maja, 2024
  • 3 min read
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
}


Źródło

Warto przeczytać!  wp query - date_query nie zaakceptuje parametru dnia, ale zaakceptuje miesiąc i rok dla niestandardowego postu