Le meilleur moyen de créer une liste de concerts de musiciens dans WordPress

4

Je conçois actuellement un thème wordpress pour musicien et je cherche à créer une liste de concerts dynamiques contrôlée par l'utilisateur. Je l'ai déjà fait avant d'utiliser PHP, mais je me demande quel serait le meilleur moyen de le faire dans WordPress.

J'ai testé une méthode en utilisant des types de publication personnalisés, mais je sens que certains utilisateurs seraient déroutés par la création de "publication" pour un événement et par l'obligation d'écrire la date dans un champ personnalisé en bas.

Comment faire en sorte que mon thème crée sa propre table dans la base de données wp? Puis-je éviter cela et créer ma propre interface "insert gig" qui crée un type de message personnalisé, mais avec une "date, lieu, lieu, à propos de" plus facile à comprendre, pour saisir les informations?

    
posée marctain 28.02.2012 - 22:23

3 réponses

8

Créez un type de message personnalisé nommé "Gig" et WordPress se chargera de la création de l'interface utilisateur. Il ne vous reste plus qu'à ajouter un Metabox contenant les champs souhaités (date, lieu, environ).

Voici un guide simple, étape par étape:

Tout d'abord: enregistrez votre type de message Gig

//register your custom post type gig
add_action( 'init', 'register_cpt_gig' );
function register_cpt_gig() {
    $labels = array( 
        'name'          => _x( 'gigs', 'gig' ),
        'singular_name' => _x( 'gig', 'gig' ),
        'add_new'       => _x( 'Add New', 'gig' ),
        'add_new_item'  => _x( 'Add New gig', 'gig' ),
        'edit_item'     => _x( 'Edit gig', 'gig' ),
        'new_item'      => _x( 'New gig', 'gig' ),
        'view_item'     => _x( 'View gig', 'gig' ),
        'search_items'  => _x( 'Search gigs', 'gig' ),
        'not_found'     => _x( 'No gigs found', 'gig' ),
        'not_found_in_trash' => _x( 'No gigs found in Trash', 'gig' ),
        'parent_item_colon'  => _x( 'Parent gig:', 'gig' ),
        'menu_name'     => _x( 'Gigs', 'gig' ),
    );

    $args = array( 
        'labels'        => $labels,
        'hierarchical'  => false,
        'description'   => 'just a simple "where, when, with who" kind of thing',
        'supports'      => array( 'title', 'custom-fields' ),
        'public'        => true,
        'show_ui'       => true,
        'show_in_menu'  => true,
        'menu_icon'     => 'http://i.imgur.com/4nTMD.png',
        'show_in_nav_menus'     => true,
        'publicly_queryable'    => true,
        'exclude_from_search'   => false,
        'has_archive'   => true,
        'query_var'     => true,
        'can_export'    => true,
        'rewrite'       => true,
        'capability_type'=> 'post'
    );

    register_post_type( 'gig', $args );
}

Cela vous donnera un nouveau type de message et une interface utilisateur pour la création de vos concerts:

VousdevezensuitecréerunMetabox(pouréviterd'utiliserleschampspersonnalisésstandard)

Ilexisteunmilliondedidacticielsenlignesurlacréationetl'ajoutdevotreMetabox,jenevaisdoncpasenparler,maisjevaisvousmontrerunmoyenrapideetfaciledelefaire. Téléchargez cette classe et une fois que vous l'aurez insérée dans votre thème, la création du Metabox devrait ressembler à ceci:

if( is_admin() ) {
    //include the main class file
    require_once( "meta-box-class/my-meta-box-class.php" );
    $prefix = '_gigs';

    //configure your meta box
    $config = array(
        'id'        => 'gigs-info',
        'title'     => 'Gig Info',
        'pages'     => array('gig'),
        'context'   => 'normal', 
        'priority'  => 'high', 
        'fields'    => array(), 
        'local_images'   => false,
        'use_with_theme' => false //change path if used with theme set to true, false for a plugin or anything else for a custom path(default false).
    );
    $my_meta = new AT_Meta_Box( $config );

    //Add fields to your meta box
    $my_meta->addText( $prefix . 'where', array( 'name'=> 'Where is the Gig ' ) );
    $my_meta->addDate( $prefix . 'when', array( 'name'=> 'When is the Gig ' ) );
    $my_meta->addTime( $prefix . 'start_time', array( 'name'=> 'When Does it Start ' ) );
    $my_meta->addTime( $prefix . 'end_time', array( 'name'=> 'When Does it End ' ) );
    $my_meta->addText( $prefix . 'with_who', array( 'name'=> 'With Who is the Gig ' ) );
    $my_meta->addTextarea( $prefix . 'words', array( 'name'=> 'A few words on the gig ' ) );
    $my_meta->Finish();
}

Vous obtiendrez un résultat similaire à celui-ci:

Voiciuneautreimagepourmontrerletimepickerfantaisie:

Pour en savoir plus sur les types de champs que vous pouvez utiliser et ajouter à votre Metabox, lisez ceci. .

C'est à peu près tout! Pour terminer, je publie ceci sous forme de plug-in à tester, mais assurez-vous de télécharger d'abord la classe Metabox pour que cela fonctionne.

<?php
/*
Plugin Name: wp-gigs
Plugin URI: http://en.bainternet.info
Description: create list of gigs.
Version: 0.1
Author: Bainternet
Author URI: http://en.bainternet.info
*/

//register your custom post type gig
add_action( 'init', 'register_cpt_gig' );
function register_cpt_gig() {
    $labels = array( 
        'name'          => _x( 'gigs', 'gig' ),
        'singular_name' => _x( 'gig', 'gig' ),
        'add_new'       => _x( 'Add New', 'gig' ),
        'add_new_item'  => _x( 'Add New gig', 'gig' ),
        'edit_item'     => _x( 'Edit gig', 'gig' ),
        'new_item'      => _x( 'New gig', 'gig' ),
        'view_item'     => _x( 'View gig', 'gig' ),
        'search_items'  => _x( 'Search gigs', 'gig' ),
        'not_found'     => _x( 'No gigs found', 'gig' ),
        'not_found_in_trash' => _x( 'No gigs found in Trash', 'gig' ),
        'parent_item_colon'  => _x( 'Parent gig:', 'gig' ),
        'menu_name'     => _x( 'Gigs', 'gig' ),
    );

    $args = array( 
        'labels'        => $labels,
        'hierarchical'  => false,
        'description'   => 'just a simple "where, when, with who" kind of thing',
        'supports'      => array( 'title', 'custom-fields' ),
        'public'        => true,
        'show_ui'       => true,
        'show_in_menu'  => true,
        'menu_icon'     => 'http://i.imgur.com/4nTMD.png',
        'show_in_nav_menus'     => true,
        'publicly_queryable'    => true,
        'exclude_from_search'   => false,
        'has_archive'   => true,
        'query_var'     => true,
        'can_export'    => true,
        'rewrite'       => true,
        'capability_type' => 'post'
    );

    register_post_type( 'gig', $args );
}

if( is_admin() ) {
    //include the main class file
    require_once( "meta-box-class/my-meta-box-class.php" );
    $prefix = '_gigs';

    //configure your meta box
    $config = array(
        'id'        => 'gigs-info',
        'title'     => 'Gig Info',
        'pages'     => array( 'gig' ),
        'context'   => 'normal', 
        'priority'  => 'high', 
        'fields'    => array(), 
        'local_images'  => false,
        'use_with_theme'=> false //change path if used with theme set to true, false for a plugin or anything else for a custom path(default false).
    );
    $my_meta = new AT_Meta_Box( $config );

    //Add fields to your meta box
    $my_meta->addText( $prefix . 'where', array( 'name'=> 'Where is the Gig ' ) );
    $my_meta->addDate( $prefix . 'when', array( 'name'=> 'When is the Gig ' ) );
    $my_meta->addTime( $prefix . 'start_time', array( 'name'=> 'When Does it Start ' ) );
    $my_meta->addTime( $prefix . 'end_time', array( 'name'=> 'When Does it End ' ) );
    $my_meta->addText( $prefix . 'with_who', array( 'name'=> 'With Who is the Gig ' ) );
    $my_meta->addTextarea( $prefix . 'words', array( 'name'=> 'A few words on the gig ' ) );
    $my_meta->Finish();
}
    
réponse donnée Bainternet 28.02.2012 - 23:12
1

J'ai déjà utilisé GigPress et cela fonctionne vraiment bien.

enlace

    
réponse donnée Brian Fegter 28.02.2012 - 22:51
0

Puis-je suggérer l'organisateur de l'événement ?

Divulgation complète: il s'agit d'un plug-in que j'ai développé

Il fait essentiellement ce que vous essayez d’atteindre (crée un type de publication personnalisé), permet la sélection de date, les sites et les champs personnalisés afin de pouvoir l’extraire pour votre propre utilisation.

En ce qui concerne son intégration dans votre thème, le plug-in est fourni avec quatre modèles "d'exemple" de base. Il vous suffit de les copier dans votre dossier de thèmes et de les modifier à votre guise, en utilisant les fonctions de modèle fournies avec le plug-in pour afficher les détails de l'événement / du lieu.

    
réponse donnée Stephen Harris 29.02.2012 - 00:52

Lire d'autres questions sur les étiquettes