Плагин для дубликатов настроек, независимый и отдельный от вкладки - PullRequest
0 голосов
/ 08 октября 2019

Я создал плагин с настройками, и затем я хочу продублировать эти настройки для другой вкладки с той же формой, но процесс ввода-вывода будет зависеть друг от друга.

Вот код на данный момент:

    function __construct( $prefix )
    {
        $this->setttings_prefix = $prefix;

        if(  wp_verify_nonce($_POST['save_settings_field'], 'save_settings_action') )
        {
            $options = array();
            foreach( $_POST as $key=>$value )
            {
                $options[$key] = $value;
            }
            update_option( $this->setttings_prefix.'_options', $options );

            $this->message = '<div class="alert alert-success">Settings saved</div>';
        }

    }


    function show_settings()
            {
                $current_page = isset($_GET['page']) ? $_GET['page'] : '';
                $active_tab = isset( $_GET[ 'tab' ] ) ? $_GET[ 'tab' ] : 'settings1';
                ?>

                <div class="wrap tw-bs4">

                    <h2 class="nav-tab-wrapper">
                        <a href="?page=wsr_settings&tab=settings1" class="nav-tab  <?php echo $active_tab == "settings1" ? "nav-tab-active" : ""; ?>"><?php _e('Settings1', 'sc'); ?></a>
                        <a href="?page=wsr_settings&tab=settings2" class="nav-tab  <?php echo $active_tab == "settings2" ? "nav-tab-active" : ""; ?>"><?php _e('Settings2', 'sc'); ?></a>
                    </h2>

                    <hr/>

                    <?php
                    if( $active_tab == 'settings1' )
                    {
                    ?>
                        <form class="form-horizontal" method="post" action="">
                            <?php
                                wp_nonce_field( 'save_settings_action', 'save_settings_field'  );
                                $config = get_option( $this->setttings_prefix.'_options1');
                            ?>

                            <fieldset>
                                <?php
                                    foreach( $this->setttings_parameters as $single_page )
                                    {
                                        $hidden_class = 'hidden';
                                        if($single_page['menu_slug'] == $current_page)
                                        {
                                            $hidden_class = '';
                                        }
                                        foreach( $single_page['parameters'] as $key=>$value )
                                        {
                                            switch( $value['type'] )
                                            {
                                                case "separator":
                                                $out .= '
                                                <div class="lead">'.$value['title'].'</div> 
                                                ';
                                                break;
                                                case "text":
                                                $out .= '
                                                <div class="form-group '.$hidden_class.'">
                                                <label class="control-label" for="'.$value['id'].'">'.$value['title'].'</label>
                                                <input type="text"  class="form-control '.$value['class'].'"  name="'.$value['name'].'" id="'.$value['id'].'" placeholder="'.$value['placeholder'].'" value="'.esc_html( stripslashes( $config[$value['name']] ) ).'">
                                                <p class="help-block">'.$value['sub_text'].'</p>
                                                </div>
                                                ';
                                                break;
                                                case "hidden":
                                                $out .= '<input type="hidden"  name="'.$value['name'].'" value="'.esc_html( stripslashes( $config[$value['name']] ) ).'">';
                                                break;
                                                case "button":
                                                $out .= '
                                                <div class="form-group '.$hidden_class.'">
                                                <label class="control-label" for="">&nbsp;</label>
                                                <a class="btn btn-success" href="'.$value['href'].'"   >'.$value['title'].'</a>
                                                </div>
                                                ';
                                                break;
                                                $out .= '
                                            </fieldset>
                                            </div>
                                            ';
                                            break;
                                            }
                                        }
                                    }
                                    echo $out;
                                ?>

                                <div class="form-actions">  
                                    <button type="submit"   class="btn btn-primary">Save Settings</button>  
                                </div>  

                            </fieldset>  
                        </form>
                        <?php
                        echo $this->message;
                    ?>

                </div>
                <?php
                }
                elseif( $active_tab == 'settings2' )
                {
                    .......Same as above......
                }
            }
        }

Код успешно отображает несколько вкладок и форму, но он по-прежнему показывает те же настройки и входы / выходы для каждой вкладки настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...