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.
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?
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.