web-dev-qa-db-fra.com

Meilleur moyen de créer une liste de concerts de musiciens dans WordPress

Je conçois actuellement un thème wordpress pour musicien et 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 puis-je obtenir 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 publication personnalisé, mais avec une manière plus facile à comprendre "date, lieu, à propos de", moyen de saisir les informations?

4
marctain

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 de votre choix (date, lieu, environ).

Voici un guide simple, étape par étape:

Premièrement: Enregistrez votre type de poste de poste

//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:

Gig Post Type Admin Page

Ensuite, vous devez créer un Metabox (pour éviter d'utiliser les champs personnalisés standard)

Il y a un million de tutoriels en ligne sur la création et l'ajout de votre Metabox, je ne vais donc pas en parler, mais je vais vous montrer un moyen rapide et facile de le faire. Téléchargez cette classe et une fois que vous l'insérez 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 allez vous retrouver avec quelque chose qui ressemble à ceci:

Add New Gig Admin Page

Voici une autre image pour montrer le timepicker de fantaisie:

Gig Timepicker

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

C'est à peu près ça! Pour terminer, je publie ceci sous forme de plug-in à tester, mais assurez-vous de télécharger la classe Metabox en premier 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();
}
8
Bainternet

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

http://gigpress.com/

1
Brian Fegter

Puis-je suggérer 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 qu'il puisse être étendu 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. Copiez-les simplement dans votre dossier de thèmes et modifiez-les à 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.

0
Stephen Harris