web-dev-qa-db-fra.com

Quelle est la bonne manière pour un thème de prendre en charge les interfaces utilisateur de plug-in?

Par exemple, si mon plug-in crée un formulaire sur une page, que puis-je faire pour que les développeurs de thèmes puissent aussi facilement que possible masquer le formulaire?

4
Roman

Tout d’abord, fournissez un formulaire HTML par défaut bien formé . Utilisez <label>, <fieldset> et <legend> le cas échéant. Ce balisage fournit une bonne structure pour le style CSS. L'ajout de certaines classes CSS peut aussi aider.

Fournissez un filtre qui permet aux développeurs de modifier le formulaire par défaut.

Pour aller encore plus loin, vous pouvez permettre aux développeurs de réécrire complètement la sortie du formulaire comme bon leur semble en leur permettant de fournir un fichier de modèle de formulaire personnalisé dans un thème.

if ($custom_form = locate_template('plugin_form.php')) {
    // Load custom form
    include $custom_form;
} else {
    // Default form with filter
    $form = '<form><!-- Default HTML --></form>';
    $form = apply_filters('pluginprefix_form_output', $form);
    echo $form;
}

Examinez la fonction get_search_form() dans wp-includes/general-template.php pour un bon exemple d'implémentation similaire.

3
Geert

En général, less is more, c’est-à-dire qu’il n’y a pas de style à part l’ajout de WP classes standard. Si votre plugin doit se fondre, il devrait ressembler au reste.

Cependant, si vous avez des raisons suffisantes de penser que la sortie de votre plugin doit être stylée différemment du reste du site (c'est-à-dire si vous ajoutez une fonctionnalité visuelle distincte), vous pouvez ajouter - outre les classes standard - vos propres noms de classe à les éléments que vous créez. S'en tenir au moins de classes possible et au plus haut niveau de la hiérarchie, par ex.

<div style="am01_div">
  <ul>
    <li>Test</li>
  </ul>
</div>

est mieux que

<div style="am01_div">
  <ul style="am01_ul">
    <li style="am01_li">Test</li>
  </ul>
</div>

Ensuite, les utilisateurs peuvent créer un thème enfant de leur thème principal dans le CSS duquel ils peuvent ajouter des informations de style pour vos éléments.

(J'avais l'habitude de penser que les plugins devraient fournir des options pour styliser leur sortie, mais j'ai changé d'avis. La séparation des préoccupations doit être appliquée ici: vous créez une sortie (raisonnable), style des utilisateurs s'ils le souhaitent.)

3
Raphael