web-dev-qa-db-ger.com

Wie verstecke ich Meta-Box-Werte in der Liste der benutzerdefinierten Felder?

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.

 LIST 

 LIST2 

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?

4
Foolish Coder

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.

7
Dmitry Mayorov