I have the code below to show different settings for each tab. Contents shown depends on the url paratmer action
. When I try selecting a tab, wordpress gives me a Sorry, you are not allowed to access this page.
error. Please see the code below.
function minutes_settings_content() {
?>
<div class="wrap">
<div id="icon-themes" class="icon32"></div>
<h2>Email & SMS Settings</h2>
<?php settings_errors(); ?>
<?php $active_tab = isset( $_GET[ 'action' ] ) ? $_GET[ 'action' ] : 'email_sms_options'; ?>
<h2 class="nav-tab-wrapper">
<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'email_sms_options' ), admin_url( 'edit.php?post_type=wellbeing-minutes&page=minutes-email-settings' ) ) ); ?>" class="nav-tab">Email & SMS</a>
<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'testing_mode_options' ), admin_url( 'edit.php?post_type=wellbeing-minutes&page=minutes-email-settings' ) ) ); ?>" class="nav-tab">Testing Mode</a>
</h2>
<form action='options.php' method='post'>
<?php
if ( $active_tab == 'email_sms_options' ) {
settings_fields( 'EmailSmsMinute' );
do_settings_sections( 'EmailSmsMinute' );
}
elseif ( $active_tab == 'testing_mode_options' ) {
settings_fields( 'wb_minute_testing_mode' );
do_settings_sections( 'wb_minute_testing_mode' );
}
submit_button();
?>
</form>
</div>
<?php
}
I have the code below to show different settings for each tab. Contents shown depends on the url paratmer action
. When I try selecting a tab, wordpress gives me a Sorry, you are not allowed to access this page.
error. Please see the code below.
function minutes_settings_content() {
?>
<div class="wrap">
<div id="icon-themes" class="icon32"></div>
<h2>Email & SMS Settings</h2>
<?php settings_errors(); ?>
<?php $active_tab = isset( $_GET[ 'action' ] ) ? $_GET[ 'action' ] : 'email_sms_options'; ?>
<h2 class="nav-tab-wrapper">
<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'email_sms_options' ), admin_url( 'edit.php?post_type=wellbeing-minutes&page=minutes-email-settings' ) ) ); ?>" class="nav-tab">Email & SMS</a>
<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'testing_mode_options' ), admin_url( 'edit.php?post_type=wellbeing-minutes&page=minutes-email-settings' ) ) ); ?>" class="nav-tab">Testing Mode</a>
</h2>
<form action='options.php' method='post'>
<?php
if ( $active_tab == 'email_sms_options' ) {
settings_fields( 'EmailSmsMinute' );
do_settings_sections( 'EmailSmsMinute' );
}
elseif ( $active_tab == 'testing_mode_options' ) {
settings_fields( 'wb_minute_testing_mode' );
do_settings_sections( 'wb_minute_testing_mode' );
}
submit_button();
?>
</form>
</div>
<?php
}
Share
Improve this question
asked Aug 13, 2019 at 7:49
marccapsmarccaps
592 silver badges8 bronze badges
2
|
1 Answer
Reset to default 1I've found that there are two causes for this error when developing with the settings API:
- you are not running under the 'admin_menu' hook
- some other error has occurred, check the error log.
Both of these derive from current_user not being available at the time.
register_settings
– Makiomar Commented Aug 13, 2019 at 9:40