将多个WordPress部分和页面保存到一个选项中(设置API)

时间:2018-11-04 19:50:08

标签: wordpress

晚上好。

我想使用设置API将WordPress插件的多个页面和多个部分保存在一个选项中。不幸的是,我总是遇到这样的问题:如果我要保存一个节,它将覆盖该选项并且不存储其他页面和节中的值。是否可以将整个插件的所有选项保存在多个页面和部分的一个选项条目中?

basic.php     

*sev

basic2.php

    <?php settings_errors(); ?>
    <form method="POST" action="options.php">
        <?php
            if ( $active_tab === '1' ) {
                ?>
                    <?php
                        settings_fields( 'options_group' );
                        do_settings_sections( 'section1' );
                    ?> 
                <?php
            }
            else if ( $active_tab === '2' ) {
                ?>
                    <?php
                        settings_fields( 'options_group' );
                        do_settings_sections( 'section2' );
                    ?>
                <?php
            }
            else if ( $active_tab === '3' ) {
                ?>
                    <?php
                        settings_fields( 'options_group' );
                        do_settings_sections( 'section3' );
                    ?>
                <?php
            }
            submit_button();
        ?>
    <form>
</div>

要注册各个字段,我使用以下功能。

<div class="tab-content">
    <?php
        if ( $active_tab === '1' ) {

        }
        else if ( $active_tab === '2' ) {
            ?>
                <?php settings_errors(); ?>
                <form method="POST" action="options.php">
                    <?php
                        settings_fields( 'options_group' );
                        do_settings_sections( 'section4' );
                        submit_button();
                    ?>
                </form>
            <?php
        }
    ?>
</div>

最后是我注册的部分和字段。

public function register_custom_fields() {
    foreach ( $this->settings as $setting ) {
        register_setting ( $setting['option_group'], $setting['option_name'], ( isset( $setting['callback'] ) ? 
            $setting['callback'] : '' ) );
    }
    foreach ( $this->sections as $section ) {
        add_settings_section ( $section['id'], $section['title'], ( isset( $section['callback'] ) ? 
            $section['callback'] : '' ), $section['page'] );
    }
    foreach ( $this->fields as $field ) {
        add_settings_field ( $field['id'], $field['title'], ( isset( $field['callback'] ) ? $field['callback'] : '' ),
            $field['page'], $field['section'], ( isset( $field['args'] ) ? $field['args'] : '' ) );
    }
}

0 个答案:

没有答案