web-dev-qa-db-fra.com

Plugin "Meta Box": Implémentation de méta-boîtes dans un type de post personnalisé

Je suis un débutant WP et je vois le potentiel du plug-in "Meta Box" ( http://wordpress.org/plugins/meta-box/ ). J'ai déjà activé le plugin. Jusqu'à présent, j'ai réussi à télécharger le fichier demo.php et à afficher les différentes boîtes à méta dans la fenêtre de publication du blog.

J'ai déjà lu la documentation, mais je ne sais toujours pas comment enregistrer les méta-boîtes pour mon type de message personnalisé. Comment est-ce que je les implémente?

Le code de mon type de message personnalisé (il s'agit de la liste des artistes) se présente comme suit:

add_action('init', 'add_cpt_artists');
function add_cpt_artists() {
$labels = array(
      'name' => _x('Artists', 'post type general name'),
      'singular_name' => _x('Artist', 'post type singular name'),
      'add_new' => _x('Add', 'artist'),
      'add_new_item' => __('Add new artist'),
      'edit_item' => __('Edit artist'),
      'new_item' => __('New artist'),
      'view_item' => __('View artist'),
      'search_items' => __('Search for artist'),
      'not_found' =>  __('No artist found'),
      'not_found_in_trash' => 
      __('No artist in trash'),
      'parent_item_colon' => ''
   );
$supports = array('title', 'editor', 'thumbnail', 'excerpt');
$args = array(
      'labels' => $labels,
      'public' => true,
      'publicly_queryable' => true,
      'show_ui' => true, 
      '_builtin' => false,
      'show_in_menu' => true, 
      'query_var' => true,
      'rewrite' => array("slug" => "artists"),
      'capability_type' => 'post',
      'hierarchical' => false,
      'has_archive' => true, 
      'hierarchical' => false,
      'menu_position' => 10,
      'supports' => $supports
   );
register_post_type('artists',$args);
}

Supposons que du plugin Meta Box, je souhaite ajouter deux zones de texte et une case avec des cases à cocher.

  • Où pourrais-je insérer le code?
  • À quoi ressemblerait le code?
  • Comment puis-je récupérer le contenu de mon modèle de page?
1
Kent Miller

Dans ce cas, vous devez trouver le point d'ancrage dans la métabox spécifique et ajouter votre type de publication personnalisé à son tableau pages, par exemple:

$meta_boxes['test_metabox'] = array(
    'id' => 'test_metabox',
    'title' => 'Test Metabox',
    'pages' => array('post','page','artists'), //list custom post types here!
    'context' => 'normal',
    'priority' => 'high',

Le plugin Meta Box ajoute essentiellement une classe qui facilite le codage des métaboxes. Vous devez toujours enregistrer et coder les métaboxes eux-mêmes dans les fichiers de votre thème (voir exemple ci-dessous). Pour afficher uniquement sur votre type d'article personnalisé, vous devez modifier le tableau pages (pour ajouter 'artists' à ce tableau, comme indiqué ci-dessus).

Exemple de code (non testé)

En supposant que le plug-in soit installé et activé, vous devriez pouvoir ajouter des zones de texte et des méta-cases à cocher en collant le code suivant dans votre fichier themes functions.php:

add_filter( 'rwmb_meta_boxes', 't129292_register_meta_boxes' );

function t129292_register_meta_boxes( $meta_boxes ) {

$prefix = 'rw_';
// Register the metabox
$meta_boxes[] = array(
    'id'       => 'personal',
    'title'    => 'Personal Information',
    'pages'    => array( 'artists' ), //displays on artists post type only
    'context'  => 'normal',
    'priority' => 'high',
    'fields' => array(

        // add a text area
        array(
            'name'  => 'Text Area',
            'desc'  => 'Description',
            'id'    => $prefix . 'text1',
            'type'  => 'textarea',
            'cols' => 20,
            'rows' => 3,                
        ),
        // add another text area
        array(
            'name'  => 'Text Area',
            'desc'  => 'Description',
            'id'    => $prefix . 'text2',
            'type'  => 'textarea',
            'cols' => 20,
            'rows' => 3             
        ),
        // CHECKBOX
        array(
            'name' => __( 'Checkbox', 'rwmb' ),
            'id'   => $prefix . 'checkbox',
            'type' => 'checkbox',
            // Value can be 0 or 1
            'std'  => 1,
        )
    )
);

return $meta_boxes;

}

Ensuite, pour afficher les options sur le front-end dans vos fichiers de thème, vous pouvez utiliser la fonction d'assistance, par exemple.

echo rwmb_meta( 'rw_text1' ); //echo the contents from the first textarea
echo rwmb_meta( 'rw_text2' ); //echo the contents from the second textarea
echo rwmb_meta( 'rw_checkbox' ); //echo 1 or 0 if the checkbox is checked

Ces exemples sont modifiés à partir du Github repo du plugin où le fichier de démonstration (lié) contient du code sur l'utilisation de divers types de métabox, et pas seulement les zones de texte et les cases à cocher.

1
MBL

Ce tutoriel pourrait être utile.

Vous pouvez ensuite récupérer les données de votre thème en utilisant get_post_meta()

0
Max