WordPress

Wyświetl każdą sekcję ustawień na każdej określonej karcie na tej samej stronie || Ustawienia API

  • 30 marca, 2018
  • 3 min read
Wyświetl każdą sekcję ustawień na każdej określonej karcie na tej samej stronie ||  Ustawienia API


jak wszyscy wiedzą, jeśli chcemy wyświetlić sekcję ustawień na jakiejś konkretnej stronie, zwykle musimy przekazać jej nazwę ślimaka strony, na której chcemy ją wyświetlić. działa w 100%, ale napotkałem problem polegający na tym, że gdy chciałem pracować tylko w jednej opcji strony tematycznej z nawigacją na kartach, starałem się przestrzegać podstawowych zasad, więc zrobiłem to, aby utworzyć dwie sekcje i oddzielić je za pomocą nawigacji w kartach aby nie ingerować w nonces. To jest mój kod.

        // These Are The registering settings for the Fields .
        register_setting( 'busymarket-header-settings', 'busymarkets-breadcrumb-setting' );
        register_setting( 'busymarket-footer-settings', 'busymarkets-main-footer-setting' );
        register_setting( 'busymarket-footer-settings', 'busymarkets-left-btm-footer-setting' );
        register_setting( 'busymarket-footer-settings', 'busymarkets-right-btm-footer-setting' );

        $active_tab = 'header_options';
        if ( isset( $_GET[ 'tab' ] ) ) { 
            if ( $_GET[ 'tab' ] == 'header_options' ) {
                $active_tab = 'header_options';
            } else if ( $_GET[ 'tab' ] == 'footer_options' ) {
                $active_tab = 'footer_options';
            }
        }

        <!-- Create A Tabbed Navigation For The Settings API -->
        <h2 class="nav-tab-wrapper">
            <a href=" echo admin_url("?page=busymarkets-theme-panel&tab=header_options' ); ?>" class="nav-tab<?php echo $active_tab == 'header_options' ? ' nav-tab-active' : ''; ?>">Header Options</a>
            <a href=" echo admin_url("?page=busymarkets-theme-panel&tab=footer_options' ); ?>" class="nav-tab<?php echo $active_tab == 'footer_options' ? ' nav-tab-active' : ''; ?>">Footer Options</a>
        </h2>

        // The 'busymarket-header-settings' is The Option Group For The Header option .
        // The 'busymarket-footer-settings' is The Option Group For The Footer option .
        if ( $active_tab == 'footer_options' ) {
            // Footer Settings Registering .
            settings_fields( 'busymarket-footer-settings' );
            do_settings_sections( 'busymarkets-theme-panel' );

        } else if ( $active_tab == 'header_options' ) {
            // Footer Settings Registering .
            settings_fields( 'busymarket-header-settings' );
            do_settings_sections( 'busymarkets-theme-panel' );
        }

        submit_button();

Problem polega na tym, że właściwie jest to funkcja do_settings_sections() Akceptuje nazwę ślimaka strony, na której chcemy wyświetlić pola sekcji, oraz fakt, że używam nawigacji po kartach. Zrobiłem kod warunkowy, jak widać poniżej, aby nie kolidować z nonces i wyświetlać tylko jedno ustawienie sekcji dla każdej karty , Ale to nie zadziałało.

Warto przeczytać!  WPBeginner Spotlight 02 - Nabytki wtyczek, nowe wydania + więcej wiadomości o WordPressie

W wielu tutorialach widziałem, że niektórzy programiści pracują z konkretną nazwą ślimaka, oddaloną od nazwy ślimaka na stronie. Niezależnie od tego, którą kartę kliknę, widzę to samo pole sekcji, nic się nie dzieje i nic się nie zmienia.

Czy jest jakieś rozwiązanie, które sprawi, że te rzeczy będą działać prawidłowo?


Źródło