web-dev-qa-db-fra.com

Un metabox pour plusieurs types de post

J'ai ce code

function add_custom_meta_box() {
add_meta_box(
    'custom_meta_box', // $id
    'Custom Meta Box', // $title 
    'show_custom_meta_box', // $callback
     'page', // $page    
    'normal', // $context
    'high'); // $priority
}
add_action('add_meta_boxes', 'add_custom_meta_box');

Je veux ajouter plus de type de message tel que page, post, custom_post_type dans ce code

  'page', // $page 

Comment dois-je réécrire mon code?

5
Flenston F

Définissez un tableau de types de publication et enregistrez la metabox pour chacun séparément:

function add_custom_meta_box() {

    $post_types = array ( 'post', 'page', 'event' );

    foreach( $post_types as $post_type )
    {
        add_meta_box(
            'custom_meta_box', // $id
            'Custom Meta Box', // $title 
            'show_custom_meta_box', // $callback
             $post_type,
            'normal', // $context
            'high' // $priority
        );
    }
}
8
fuxia

Si vous souhaitez ajouter tous types de publication, vous pouvez obtenir le tableau des types de publication avec:

$post_types = get_post_types( array('public' => true) );

Ou ajoutez un argument pour WP types de publications de base ou personnalisées:

// only WP core post types
$post_types = get_post_types( array('public' => true, '_builtin' =>‌ true) );

// only custom post types
$post_types = get_post_types( array('public' => true, '_builtin' =>‌ false) );

Utilisez-le comme ceci:

add_meta_box(
    'custom_meta_box', // $id
    'Custom Meta Box', // $title 
    'show_custom_meta_box', // $callback
     $post_types,
    'normal', // $context
    'high' // $priority
);
2
Christine Cooper