Ich habe eine Metabox erstellt:
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");
und so speichere ich den meta box wert:
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);
Jetzt wird der Metaschlüssel drama_description
sowohl in Meta Box als auch in Liste benutzerdefinierter Felder Bereich angezeigt.
Ich möchte die Liste der benutzerdefinierten Felder verwenden. Daher möchte ich das Listenfeld für benutzerdefinierte Felder nicht vollständig ausblenden.
Der obige Metaschlüssel drama_description
sollte in der Liste der benutzerdefinierten Felder ausgeblendet werden, NICHT jedoch in der Meta-Box.
Ich habe einige alte Artikel gelesen, die besagen, dass die Metaschlüssel, die für die Metabox verwendet werden, durch einen Unterstrich vorangestellt werden sollen. _
Aber ich bin nicht sicher, wo ich diesen Unterstrich setzen soll. In welcher Zeile muss ich gemäß den obigen Codes den _
eingeben, um den Metaschlüssel aus der Liste der benutzerdefinierten Felder auszublenden?
Fügen Sie einfach einen Unterstrich vor die Metabox-ID ein, damit der Teil Ihres Codes, in dem Sie eine Metabox hinzufügen, ungefähr so aussieht:
$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);
Sie müssen außerdem jedes Vorkommen von drama-description
in _drama-description
in dem Teil ersetzen, in dem Sie die Daten speichern. Ich hoffe es hilft.