在同一页面内的每个特定选项卡中显示每个设置部分||设置接口

时间:2018-03-30 作者:Simo Patrek

众所周知,当我们想在某个特定页面中显示某个设置部分时,通常我们必须将要显示该部分的页面的slug名称传递给它。它可以百分之百地工作,但我面临的问题是,当我只想在一个主题页选项中使用选项卡式导航时,我试图遵循核心规则,因此我创建了两个部分,并使用选项卡式导航将它们分隔开,以避免干扰nonce。这是我的密码。

        // 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="<?php 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="<?php 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();
这里的问题是do_settings_sections() 接受我们要在其中输出节字段的页面的slug名称,以及我正在使用选项卡导航的事实,我编写了一个条件代码,如下所示,以不干扰nonces,只为每个选项卡显示一个节设置,但它不起作用。

我在很多教程中看到,一些开发人员使用的特定段塞名称与页面的段塞名称相差甚远,无论我单击哪个选项卡,我都会看到相同的节字段,不会发生任何变化。

那么,请问有什么办法可以让这些东西正常工作吗?

1 个回复
SO网友:WPhil

如果有人无意中发现了这个问题,我最近遇到了同样的问题,并且能够使用do_setting_fields( $page, $section ) 而不是do_settings_sections( $page ).

根据settings api, do\\u settings\\u sections打印添加到特定设置页面的所有设置部分,而do\\u settings\\u fields打印特定设置部分的设置字段。

结束

相关推荐