Я создал плагин с настройками, и затем я хочу продублировать эти настройки для другой вкладки с той же формой, но процесс ввода-вывода будет зависеть друг от друга.
Вот код на данный момент:
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=""> </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......
}
}
}
Код успешно отображает несколько вкладок и форму, но он по-прежнему показывает те же настройки и входы / выходы для каждой вкладки настроек.