web-dev-qa-db-fra.com

Comment supprimer un champ personnalisé "suggestions" de la liste déroulante

Lorsque vous utilisez un champ personnalisé standard dans WP, vous devez écrire le nom des champs cusotm la première fois.

La deuxième fois que vous utilisez un champ personnalisé, il reste dans la liste déroulante des champs personnalisés. Mais, parfois, lorsque vous installez des plugins, ils constituent BEAUCOUP de champs personnalisés.

Cette liste devient un peu longue et peut "pousser" certains de mes champs personnalisés hors de la liste. Alors, est-ce que quelqu'un sait comment je peux supprimer facilement des champs personnalisés de ma liste déroulante?

3
Demilio

Vous pouvez filtrer la requête pour ces clés sur'query'. Je commencerais ce filtre le plus tard possible pour éviter les effets secondaires.

Exemple de code, testé :

add_filter( 'postmeta_form_limit', 'wpse_73543_hide_meta_start' );

function wpse_73543_hide_meta_start( $num )
{
    add_filter( 'query', 'wpse_73543_hide_meta_filter' );

    return $num;
}

function wpse_73543_hide_meta_filter( $query )
{
    // Protect further queries.
    remove_filter( current_filter(), __FUNCTION__ );

    $forbidden = array ( 'the', 'keys', 'you', 'want', 'to', 'hide' );
    $where     = "WHERE meta_key NOT IN('" . join( "', '", $forbidden ) . "') ";
    $find      = "GROUP BY";
    $query     = str_replace( $find, "$where\n$find", $query );

    return $query;
}
1
fuxia

Il n'y a pas de moyen de filtrer ce qui apparaît ici, vous pouvez voir où il interroge les clés et restitue ce champ dans la fonction meta_form() dans wp-admin/includes/template.php, mais vous pouvez voir qu'il ignore toute clé précédée d'un trait de soulignement:

HAVING meta_key NOT LIKE '\_%'

c'est ce que les plugins devraient faire avec les clés méta qu'ils créent pour masquer ces clés du menu.

Vous y verrez également un filtre, postmeta_form_limit, qui est défini sur 30 par défaut. Vous pouvez augmenter ce nombre afin que vos clés soient au moins incluses dans la liste et ne tombent pas à la fin.

Une autre option consiste à créer votre propre méta-boîte pour gérer des méta-données spécifiques, plutôt que d'utiliser la méta-zone Champs personnalisés.

0
Milo