web-dev-qa-db-fra.com

Page Options du thème avec onglets

J'ai un thème que je développe à partir d'un modèle HTML que j'ai. Je conçois également une page d'options avec une multitude de plugins intégrés au thème lui-même. J'ai choisi une interface à onglets et j'essaie d'apprendre à utiliser les paramètres API de WordPress.

J'utilise une structure de classe pour les fonctions du thème. Ce qui suit est la déclaration des paramètres d'enregistrement et ainsi de suite.

public function __admin_init()
{
    register_setting( 'cncfps_Twitter', 'cncfps_Twitter_options', array( &$this, 'wp_cncfps_Twitter' ) );
    add_settings_section( 'cncfps_Twitter', 'Twitter', array( &$this, 'wp_cncfps_Twitter' ), 'cncfps' );
    add_settings_field( 'cncfps_Twitter_consumer_key', 'Consumer Key', array( &$this, 'Twitter_consumer_key' ), 'cncfps', 'cncfps_Twitter' );
    add_settings_field( 'cncfps_Twitter_consumer_secret', 'Consumer Secret', array( &$this, 'Twitter_consumer_secret' ), 'cncfps', 'cncfps_Twitter' );
    add_settings_field( 'cncfps_Twitter_apikey', 'API Key', array( &$this, 'Twitter_apikey' ), 'cncfps', 'cncfps_Twitter' );
}

public function wp_cncfps_Twitter()
{
    // TODO: wut. ?!?!
    echo "what is this?";
}

public function Twitter_consumer_key()
{
    echo "Hello";
}

public function Twitter_consumer_secret()
{
    echo "World";
}

Lorsque je veux afficher les champs comme indiqué ici , je ne vois rien. Voici comment j'essaie de les afficher. J'ai suivi quelques quelques-unstutoriels mais cela ne clique tout simplement pas dans mon cerveau pour certaines raisons.

settings_fields('cncfps_Twitter');
do_settings_sections('cncfps_Twitter');

enter image description here

3
Zack

L'appel de la fonction do_settings_section() doit correspondre à l'argument $optiongroup que vous transmettez à register_setting(). Pour voir comment toutes les myriades de fonctions s'imbriquent, voir page 10 de mon tutoriel .

Il est assez déroutant d’essayer de suivre la façon dont les différentes fonctions s’enchaînent.

MODIFIER:

Vous semblez utiliser correctement le groupe d'options. Pouvez-vous clarifier ce qui est/n'est pas "en cliquant" pour vous? Vous indiquez dans le titre que vous souhaitez utiliser une interface à onglets, mais le texte de la question elle-même n'indique pas vraiment où vous rencontrez des difficultés.

3
Chip Bennett

J'avais aussi une page blanche lorsque j'ai essayé d'implémenter le code suggéré. Pour une raison quelconque, mon site n'a pas aimé toutes les guillemets doubles de cette section (extrait de la page 3 du didacticiel de Chip):

if ( $tab == $current ) :
    $links[] = "<a class="nav-tab nav-tab-active" href="?page=oenology-    settings&tab=$tab">$name</a>";
else :
    $links[] = "<a class="nav-tab" href="?page=oenology-settings&tab=$tab">$name</a>";
endif;

Je devais le changer et utiliser des guillemets simples:

if ( $tab == $current ) :
    $links[] = '<a class="nav-tab nav-tab-active" href="?page=oenology-settings&tab=' . $tab . '">' . $name . '</a>';
else :
    $links[] = '<a class="nav-tab" href="?page=oenology-settings&tab=' . $tab . '">' . $name . '</a>';
endif;

Cela a semblé résoudre le problème pour moi. Je ne suis pas sûr que ce soit le même problème que vous.

1
Alex Mansfield