web-dev-qa-db-fra.com

Désactiver <le> titre $ dans l'écran des options de plug-in?

Existe-t-il un moyen, à l'aide de l'API de configuration, de désactiver l'utilisation de la cellule du tableau créé pour les options?

Le paramètre add_settings_field 2nd est l'attribut $title (chaîne) et est obligatoire. Cette chaîne est ensuite placée à gauche de la zone de saisie pour le champ de paramètres. Ceci "indente" la zone de saisie.

Je mets la "description" de la zone de saisie des paramètres après la balise de paramètres lors du rendu. Vous n'avez pas besoin d'espace à gauche de la balise <input>.

Quelles sont les recommandations pour supprimer cet espace situé à gauche de la balise <input>, en utilisant l'API de paramètres de manière standard? Par exemple, la page Paramètres, liens permanents contient les zones <input> sur le bord gauche.

Merci.

1
Rick Hellewell

Comme arrière-plan et pour répondre à ma propre question (après quelques recherches), la balise <form> dans un écran Options est généralement générée avec un code similaire à celui-ci:

<form action='options.php' method='post'>
<?php
settings_fields( 'pluginPage' );    // initializes all of the settings fields
do_settings_sections( 'pluginPage' );   // does the settings section; into a table
submit_button();    // creats the submit button
?>
</form>

La fonction do_settings_section() fait partie de l'API Options et est responsable de la création des champs de paramètres d'option définis dans les instructions add_settings_fields. (Voir https://developer.wordpress.org/reference/functions/do_settings_sections/ ).

La fonction do_settings_section() appelle finalement do_settings_fields() qui renvoie (rend) les instructions <input> réelles via le rappel spécifié par add_settings_field(). (Voir https://developer.wordpress.org/reference/functions/do_settings_fields/ ).

Si nous regardons le code pour do_settings_field, nous trouverons des instructions qui affichent chaque champ de paramètres (dans une table - sigh ):

echo "<tr{$class}>";

if ( ! empty( $field['args']['label_for'] ) ) {
    echo '<th scope="row"><label for="' . esc_attr( $field['args']['label_for'] ) . '">' . $field['title'] . '</label></th>';
} else {
    echo '<th scope="row">' . $field['title'] . '</th>';
}
echo '<td>';
call_user_func($field['callback'], $field['args']);
echo '</td>';
echo '</tr>';

Et nous pouvons voir ici le code <th> du champ $title (défini dans la définition du champ de configuration par add_settings_field).

Ainsi, le seul moyen de générer des champs de paramètres sans tableau, au format souhaité, consiste à ignorer la fonction do_settings_section() dans le <form> avec votre propre code, par exemple en utilisant votre propre fonction my_render_fields() dans le formulaire de configuration:

<form action='options.php' method='post'>
<?php
settings_fields( 'pluginPage' );    // initializes all of the settings fields
my_render_fields();     // render fields without do_settings so no table codes
submit_button();    // creates the submit button
?>
</form>

Notez que settings_field() inclura également le 'nonce' dans le formulaire, nécessaire sur les pages de paramètres. (Ne pas avoir un nonce peut provoquer d'autres erreurs sur les écrans de réglages.)

J'espère que cela aide les autres. Explorer le code source des fonctions WP vous donne parfois un aperçu des problèmes. (J'espérais un filtre qui contournerait le rendu du champ, mais une telle chance. Mais créer votre propre fonction de rendu sur le terrain n'est pas difficile.)

1
Rick Hellewell