web-dev-qa-db-fra.com

Comment masquer les valeurs de la boîte à méta de la liste des champs personnalisés?

J'ai créé un metabox:

function drama_description_metabox_markup() {
    global $post;
    $drama_description_metabox_markup = get_post_meta( $post->ID, 'drama_description', true );
    ?>
        <div>
            <label for="meta-box-text">Description</label>          
            <textarea name="drama_description" style="width: 100%"><?php if ($drama_description_metabox_markup) { echo $drama_description_metabox_markup; }?></textarea>
        </div>
<?php }

function drama_description_metabox(){
    $post_types = array ( 'dramas', 'reality_shows' );
     foreach( $post_types as $post_type )
    {
        $id             = 'drama-description';
        $title          = 'Description';
        $callback       = 'drama_description_metabox_markup';
        $screen         = $post_type;
        $context        = 'normal';
        $priority       = 'high';
        $callback_args  = 'null';
        add_meta_box($id, $title, $callback, $screen, $context, $priority, $callback_args);
    }
}

add_action("add_meta_boxes", "drama_description_metabox");

et voici comment je sauvegarde la valeur de la boîte méta:

function save_drama_description_meta_box($post_id)
{
    global $post;   
    //skip auto save
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }
    //check for DRAMAS and REALITY_SHOWS post type only
if( $post->post_type == ("dramas" || "reality_shows") ) {
        if( isset($_POST['drama_description']) ) { 
            update_post_meta( $post->ID, 'drama_description', $_POST['drama_description'] );
        }
    }
}

add_action("save_post", "save_drama_description_meta_box", 10, 3);

Maintenant, la méta clé drama_description est affichée à la fois dans meta box et liste des champs personnalisés area.

 LIST 

 LIST2 

Je souhaite utiliser la liste des champs personnalisés. Donc, je ne veux pas cacher la zone de liste de champ personnalisé complètement.

La clé méta ci-dessus drama_description doit être masquée de la liste des champs personnalisés, mais PAS de la boîte méta.

J'ai lu de vieux articles qui préfixent les méta-clés utilisées pour metabox par un trait de soulignement _

Mais je ne sais pas où mettre ce trait de soulignement. Selon mes codes ci-dessus, dans quelle ligne dois-je mettre le _ pour masquer la clé méta de la liste des champs personnalisés?

4
Foolish Coder

Ajoutez simplement un trait de soulignement avant l'ID de metabox afin que la partie de votre code où vous ajoutez une métabox ressemble à ceci:

$id             = '_drama-description';
$title          = 'Description';
$callback       = 'drama_description_metabox_markup';
$screen         = $post_type;
$context        = 'normal';
$priority       = 'high';
$callback_args  = 'null';
add_meta_box($id, $title, $callback, $screen, $context, $priority, $callback_args);

Vous devez également remplacer chaque occurrence de drama-description par _drama-description dans la partie où vous enregistrez les données. J'espère que ça aide.

7
Dmitry Mayorov