web-dev-qa-db-fra.com

Créer un plugin qui ajoutera des options. Où doivent aller les pages du menu des options?

Je crée un plugin pour un thème de restaurant qui fournira quelques options pour ajouter les heures d'ouverture du restaurant. Actuellement, j'utilise un type de message personnalisé pour contrôler les heures de restaurant mais je me suis depuis rendu compte que c'était une mauvaise pratique, car si le thème change, ces informations seront perdues. Je voudrais les séparer via un plugin et utilise des options au lieu d'un type de message personnalisé.

Existe-t-il une pratique standard pour l'emplacement des pages du menu d'options? Page de personnalisation de thème? Paramètres du plugin? Page personnalisée? Nouvelle page sous la section Paramètres?

Mettre à jour

Vous envisagez d’utiliser les API wordpress existantes afin que je ne me préoccupe pas du stockage des données.

1
Jrod

Je lis votre question comme étant "Existe-t-il une pratique standard pour savoir où la page du menu des options devrait être placée?"

Existe-t-il une pratique standard pour savoir où les options devraient être placées?

Je ne pense pas, mais il y a des endroits meilleurs et des endroits pires.

Page de personnalisation de thème?

Non, c'est mauvais pour la même raison que vous vous inquiétez de votre configuration actuelle. Il est lié à un thème particulier et ne serait pas facilement transféré vers un nouveau.

Paramètres du plugin?

Cela pourrait fonctionner, mais les paramètres seraient quelque peu cachés. Obtenir des pages de paramètres de plugin n'est pas particulièrement simple.

Page personnalisée?

Vous voulez dire un nouveau menu de niveau supérieur - A côté de "Messages", "Pages", "Liens", ce genre de chose? Cela pourrait fonctionner aussi, mais je le crains sauf si vous avez plusieurs pages de configuration à ajouter sous le menu principal. Il est très facile de créer beaucoup de fouillis sur la barre latérale.

Nouvelle page sous la section Paramètres?

Cela me semble être le meilleur endroit pour ajouter un seul menu. Logiquement, ce que vous créez entre bien dans "Paramètres" et il serait hors de propos la plupart du temps. Et ce n'est pas associé à un thème particulier.

Il n'est pas clair où vous envisagez d'enregistrer les options dans la base de données, mais je suppose que vous utiliserez l'API d'options pour stocker les données. dans la table *_options. L’API Paramètres mérite d’être étudiée pour faciliter la création/la gestion de formulaires.

3
s_ha_dum

Vous abordez deux choses:

  1. Où stocker les données (signification: quelle table dans la base de données);
  2. Comment changer les paramètres.

Stockage

Tout d’abord, vous voudrez peut-être enregistrer un nouveau paramètre (dans la table options):

register_setting( 'my_restaurant_options', 'my_restaurant_options' );
$restaurant_options = array(
    'option_1' => VALUE,
    ...
    'option_n' => VALUE,
);
update_setting( 'my_restaurant_options', $restaurant_options );

Paramètres

Le moyen le plus simple de modifier les paramètres consiste à utiliser une page dédiée. Où vous placez cette page (nouvelle page de menu, page de sous-menu de paramètres, page de sous-menu d’options, ...), à vous de choisir.

S'il ne s'agit que d'options de thème, pourquoi ne pas ajouter une page de sous-menu dans Design/Theme?

2
tfrommen

Il n'y a absolument rien avec les types de publication personnalisés en tant que tels, mais si vous ne stockez que des données provenant de quelques champs de saisie où chaque champ a son propre objectif spécifique, vous pouvez utiliser les paramètres . API à la place. Et changer les types de post et les paramètres de votre plugin (style) et les fournir à travers un plugin (fonctionnalité) est une décision magnifique.

L'API de paramètres est assez simple. Il permet d’ajouter des champs de paramétrage aux sections de paramétrage existantes (Général, Discussion, liens permanents, etc.) ainsi que d’ajouter des sous-pages à tout élément de navigation de niveau supérieur de la section admin ainsi qu’à vos propres pages de niveau supérieur. Selon vos besoins, vous pouvez ajouter vos champs de paramétrage à une page existante ou ajouter votre propre page.

Ceci est un bon exemple de la manière d'ajouter deux champs à la page des paramètres de lecture, avec une illustration claire ci-dessous. Voici ce que vous feriez pour ajouter une page, une sous-page, une section de paramètres et un champ de paramètres:

// Example code to illustrate page/subpage/setting relationships, might not work as intended or break
function wpse_90342_admin_menu {
    // Top level menu page (http://codex.wordpress.org/Function_Reference/add_menu_page)
    add_menu_page('Page title', 'Menu item title', 'manage_options', basename(__FILE__), 'wpse_90342_page_callback',   plugins_url('images/icon.png', __FILE__), 6);

    // Sub menu page (http://codex.wordpress.org/Function_Reference/add_submenu_page)
    add_submenu_page( basename(__FILE__), 'My Plugin Tools Page Title', 'My Plugin Tools Menu Title', 'manage_options', 'my_plugin_tools', 'wpse_90342_subpage_callback' ); 

    // Settings section
    add_settings_section('eg_setting_section', 'Example settings section on subpage', 'eg_setting_section_callback_function', 'my_plugin_tools');

    // Settings field
    add_settings_field('eg_setting_name', 'Example setting Name', 'eg_setting_callback_function', 'my_plugin_tools', 'eg_setting_section');

    // Register the settings field
    register_setting('my_plugin_tools', 'eg_setting_name');
}
add_action('admin_menu', 'wpse_90342_admin_menu');

function wpse_90342_page_callback() {
    echo "This is the top level page";
}

function wpse_90342_subpage_callback() {
    echo "This is the subpage";

    do_settings_sections('my_plugin_tools' );
    settings_fields( 'my_plugin_tools' );

    submit_button();
}

function eg_setting_section_callback_function() {
    echo "Section header";
}

function eg_setting_callback_function() {
    echo "Settings field";
}

Vous voudrez peut-être consulter la documentation pour add_menu_page et add_submenu_page , car ils requièrent un grand nombre de paramètres qui pourraient devoir être cohérents entre les deux pour que votre page/sous-pages/champs adhère à la hiérarchie prévue.

2
Simon