La mejor manera de crear una lista de conciertos de músicos en WordPress

4

Actualmente estoy diseñando el tema de wordpress de un músico, y estoy buscando crear una lista de conciertos dinámica controlada por el usuario. He hecho esto antes de usar PHP, pero me pregunto cuál sería la mejor manera de hacerlo en WordPress.

He probado un método utilizando tipos de publicación personalizados, pero creo que algunos usuarios se confundirán al crear una "publicación" para un evento y luego tendrán que escribir la fecha en un campo personalizado en la parte inferior.

¿Cómo puedo hacer que mi tema cree su propia tabla en la base de datos wp? ¿Puedo evitar eso y crear mi propia interfaz de "inserción de concierto" que crea un tipo de publicación personalizada, pero con una "fecha, lugar, lugar" más fácil de entender acerca de la forma de ingresar la información?

    
pregunta marctain 28.02.2012 - 22:23

3 respuestas

8

Crea un tipo de publicación personalizado llamado "Gig" y WordPress se encargará de la creación de la interfaz de usuario, entonces todo lo que te queda es agregar un Metabox con los campos que deseas (fecha, lugar, aproximadamente).

Aquí hay una guía paso a paso simple:

Primero: registre su tipo de publicación de concierto

//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 );
}

Esto te dará un nuevo tipo de publicación y una interfaz de usuario de administrador para crear tus conciertos:

Acontinuación,debecrearunMetabox(paraevitarelusodeloscampospersonalizadosregulares)

HayunmillóndetutorialesenlíneasobrecómocrearyagregartuMetabox,asíquenovoyaentrareneso,perotemostraréunamanerarápidayfácildehacerlo. Descarga esta clase y una vez que hayas puesto esto en tu tema, la creación de Metabox debería ser algo como esto:

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();
}

Terminarás con algo similar a esto:

Aquíhayotraimagenparamostrareleleganteselectordetiempo:

Para leer más sobre los tipos de campo que puede usar y agregar a su Metabox lea esto .

Eso es todo! Para finalizar, lo estoy publicando como un complemento para probar, pero asegúrate de descargar primero la clase Metabox para que funcione.

<?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();
}
    
respondido por el Bainternet 28.02.2012 - 23:12
1

He usado GigPress antes y funciona muy bien.

enlace

    
respondido por el Brian Fegter 28.02.2012 - 22:51
0

¿Puedo sugerir Organizador de eventos ?

Revelación completa: este es un complemento que he desarrollado

Básicamente, hace lo que está intentando lograr (crea un tipo de publicación personalizado), permite la selección de fechas, lugares y campos personalizados para que pueda extenderse para su uso particular.

En cuanto a incorporarlo a su tema, hay cuatro plantillas de 'ejemplo' básicas con las que viene el complemento. Simplemente copie estos en su carpeta de temas y podrá editarlos como desee, haciendo uso de las funciones de plantilla que vienen con el complemento para mostrar los detalles del evento / lugar.

    
respondido por el Stephen Harris 29.02.2012 - 00:52

Lea otras preguntas en las etiquetas