Melhor maneira de criar uma lista de músicos no WordPress

4

Atualmente, estou criando o tema wordpress de um músico e estou tentando criar uma lista de shows dinâmicos controlada pelo usuário. Eu fiz isso antes de usar o PHP, mas estou querendo saber qual seria a melhor maneira de fazer isso no WordPress.

Eu testei um método usando tipos de post personalizado, mas sinto que alguns usuários ficariam confusos sobre a criação de "post" para um evento e depois teriam que escrever a data em um campo personalizado na parte inferior.

Como posso obter meu tema para criar sua própria tabela no banco de dados wp? Posso evitar isso e criar minha própria interface de "inserir apresentação" que cria um tipo de postagem personalizado, mas com uma maneira mais fácil de entender "data, local, sobre" como inserir as informações?

    
por marctain 28.02.2012 / 22:23

3 respostas

8

Crie um tipo de postagem personalizado chamado "Gig" e o WordPress cuidará da criação da interface do usuário, então tudo o que resta para você é adicionar um Metabox com os campos desejados (data, local, aproximadamente).

Aqui está um simples guia passo a passo:

Primeiro: registre o seu tipo de postagem no Google

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

Isso fornecerá um novo tipo de postagem e uma interface administrativa para a criação de seus shows:

Emseguida,vocêprecisacriarumMetabox(paraevitarousodoscampospersonalizadosregulares)

Háummilhãodetutoriaison-linesobrecomocriareadicionarseuMetabox,entãonãovouentrarnisso,masmostrareiumamaneirarápidaefácildefazerisso. Faça o download desta classe e uma vez que você coloque isso no seu tema, a criação do Metabox deve ser algo assim:

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

Você vai acabar com algo parecido com isso:

Aquiestáoutraimagemparamostrarotimepickersofisticado:

Para ler mais sobre os tipos de campo que você pode usar e adicionar ao seu Metabox leia este .

É sobre isso! Apenas para finalizar estou postando isso como um plugin para testar, mas certifique-se de baixar a classe Metabox primeiro 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();
}
    
por Bainternet 28.02.2012 / 23:12
1

Eu já usei o GigPress antes e ele funciona muito bem.

enlace

    
por Brian Fegter 28.02.2012 / 22:51
0

Posso sugerir organizador de eventos ?

Divulgação completa: este é um plug-in que desenvolvi

Ele essencialmente faz o que você está tentando alcançar (cria um tipo de postagem personalizado), permite seleção de datas, locais e campos personalizados para que ele possa ser estendido para seu próprio uso particular.

Quanto a incorporá-lo ao seu tema, existem quatro modelos básicos de 'exemplos' que o plug-in vem com. Basta copiá-los na pasta do tema e editá-los como quiser, fazendo uso das funções de modelo que acompanham o plug-in para exibir detalhes do evento / local.

    
por Stephen Harris 29.02.2012 / 00:52