web-dev-qa-db-fra.com

Masquer la sortie de add_settings_field ()

La sortie de la fonction add_settings_field() de l'API de configuration est la suivante:

<tr>
 <th scope="row">Your title</th>
 <td> Your field output </td>
</tr>

Je sais que je ne peux pas changer la façon dont cela est produit, mais je me demandais s'il était possible de mettre un display:none; sur le <tr> avec PHP? Je ne veux pas le faire avec Javascript car il y a alors un flash de contenu non-stylé.

En gros, je veux un moyen de masquer une ligne générée via add_settings_field(), car j'en ai besoin sur le front-end - mais plus tard dans mon flux.

1
PoeHaH

Vous pouvez le cacher en utilisant jQuery qui sera inséré dans l'en-tête wp-admin:

add_action( 'admin_head', 'wpse_239421_hide_section' );
function wpse_239421_hide_section() {
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
        $('[scope=row]').closest('tr').hide();
        } );
    </script>
    <?php
}

Cela supprimera les bases tr du placard sur le scope=row.

2

Le sixième paramètre ($args) de la fonction add_settings_field peut contenir une valeur class qui sera ajoutée au <tr>.

Vous pouvez l'utiliser avec la classe d'admin css intégrée .hidden

add_settings_field(
    'field_id',
    'Useless Field Label',
    'render_hidden_field_function',
    'some_settings_page',
    'a_section_slug',
    [
        'class' => 'hidden'
    ]
);
1
Lachlan Arthur
    jQuery(document).ready(function(){
    jQuery('.my_add_settings_field_class').find('[scope=row]').hide();  
    });
0
welek