Como criar coleções que são editadas em admin?

2

Não sei ao certo como esse recurso é chamado, mas já vi exemplos disso antes. Digamos, no meu site eu quero coleções adicionais de coisas (além de posts) que tenham suas próprias seções na área de administração.

Por exemplo, eu tenho:

  • uma lista de eventos
  • uma lista de produtos
  • uma lista de depoimentos

... e cada um deles precisa da sua própria página para listá-los.

Como isso funciona no WordPress e como posso criar o meu?

    
por Andrew 19.04.2015 / 18:21

2 respostas

12

Eu acredito que o que você está se referindo é chamado "Post Types" . Por padrão, o WordPress possui um tipo de postagem completo com o qual você já está familiarizado - post (news / blog), page (Páginas), attachment (Mídia), revision (Página / Pós-revisões). Você pode ler a lista completa de tipos de postagem incorporados em O Codex - Tipos de Postagens .

Se você deseja registrar um novo Custom Post Type (CPT), você pode fazer facilmente com algum conhecimento do PHP. Vamos analisar e criar nosso próprio tipo de postagem chamado "Produtos".

Primeiro passo - Conecte-se ao FTP - você não deseja fazer isso usando Appearance -> Editor .

Passo Dois - Localize o seu tema, se você estiver usando um tema filho, abra-o e localize o arquivo functions.php . Abra o arquivo em Notepad ++ ou seu editor de escolha.

Terceiro Passo - Registre seu tipo de postagem

Na parte superior do seu arquivo functions.php , vamos ligar ao WordPress init e use uma função interna do WordPress habilmente chamada: register_post_type . Eu altamente sugiro que você leia esses links codex, pois não explicarei cada ponto, mas em vez disso, darei uma breve descrição.

/** Create Post Type **/
function cpt_init() {

    // Products Custom Post Type
    register_post_type( 'cpt_products', array(                  // Internal name 'cpt_products' - this is what we test against in queries
        'labels'            =>  array(                          // An array of Administrative labels
            'name'          =>      __( 'Products' ),
            'singular_name' =>      __( 'Product' ),
            'all_items'     =>      __( 'View Products' ),
            'add_new'       =>      __( 'New Product' ),
            'add_new_item'  =>      __( 'New Product' ),
            'edit_item'     =>      __( 'Edit Product' ),
            'view_item'     =>      __( 'View Product' ),
            'search_items'  =>      __( 'Search Products' ),
            'no_found'      =>      __( 'No Products Found' ),
            'not_found_in_trash' => __( 'No Products in Trash' )
        ),
        'public'            =>  true,                           // Whether it will be publically available or only in the admin panel
        'publicly_queryable'=>  true,                           // "                                                                "
        'show_ui'           =>  true,                           // Whether we want this post type to show up in the admin panel
        'show_in_nav_menus' =>  false,                          // If we want Products to show up in the 'Appearance -> Menu'
        'capability_type'   =>  'page',                         // Mostly used for user capability
        'hierarchical'      =>  false,                          // If you will allow products to have child products / assigned a parent
        'rewrite'           =>  array( 'slug' => 'product', 'with_front' => false ),        // This is going to be what the single post will be located at '/product/product-name/'
        'menu_icon'         =>  'dashicons-cart',               // https://developer.wordpress.org/resource/dashicons/#welcome-widgets-menus
        'menu_position'     =>  5,                              // Where you want it to show up in the admin panel
        'supports'          =>  array( 'title', 'editor', 'page-attributes', 'revisions' )  // What is actually shown when a new product is added - admin panel
    ) );
}
add_action( 'init', 'cpt_init' );

Quarto passo - Carregar functions.php - uma observação importante aqui é liberar permalinks , que é tão fácil quanto ir para Settings -> Permalinks e clicar no botão "Salvar" na parte inferior da página.

Similar à criação de um tipo de postagem, se você quiser criar Categorias (semelhantes às Categorias de Postagens), use o register_taxonomy . Siga os passos acima descritos até o Passo 3.

Etapa 3 - Registre a taxonomia

Os dois primeiros parâmetros são importantes para vincular a taxonomia ao tipo de postagem. A próxima parte importante é o parâmetro hierarchical - essa será a diferença entre post_tags (false) e categories (true). Faremos essa taxonomia hierárquica, que é semelhante a postar categorias.

/** Add Custom Taxonomy **/
function tax_init() {
    // Product Categories
    register_taxonomy( 
        'tax_products',         // Taxonomy slug
        'cpt_products',         // What post type we're assigning the taxonomy to.
        array(                  // Array of Arguments
            'labels'            =>  array(                                  // User Friendly Labels
                'name'              => __( 'Product Categories' ),
                'singular_name'     => __( 'Product Category' ),
                'search_items'      => __( 'Search Product Categories' ),
                'all_items'         => __( 'All Product Categories' ),
                'parent_item'       => __( 'Parent Product Category' ),
                'parent_item_colon' => __( 'Parent Product Category:' ),
                'edit_item'         => __( 'Edit Product Category' ), 
                'update_item'       => __( 'Update Product Category' ),
                'add_new_item'      => __( 'Add New Product Category' ),
                'new_item_name'     => __( 'New Product Category' ),
                'menu_name'         => __( 'Product Categories' )
            ),
            'public'            =>  true,               // Whether it will be public or only used in the admin panel
            'hierarchical'      =>  true,               // The differnce between *Tags* and *Categories*
            'show_in_nav_menus' =>  true,               // To show up in 'Appearance -> Menus' or not.
            'show_admin_column' =>  true,               // If we want an column next to the title when listing our products
            'rewrite'           =>  array( 'slug' => 'products/category', 'with_front' => false, 'hierarchical' => true )       // Similar to post type, where to find the categories 'products/category/category-1/'
        ) 
    );
}
add_action( 'init', 'tax_init');
    
por Howdy_McGee 27.04.2015 / 22:30
0

Estes são chamados tipos de postagem personalizados . Existem várias maneiras de criar um novo tipo de postagem, usando um plug-in ou criando você mesmo.

  • Se você preferir usar um plug-in, tente este- enlace
  • Se você quiser criá-los você mesmo sem nenhum plug-in, precisará adicionar alguns códigos ao arquivo functions.php em seu tema. Este é um exemplo simples:
function codex_custom_init() {
    $args = array(
      'public' => true,
      'label'  => 'Books'
    );
    register_post_type( 'book', $args );
}
add_action( 'init', 'codex_custom_init' );

Isso adicionará um novo tipo de conteúdo (post) chamado Book.

Veja a página do códice para mais detalhes - enlace

    
por mukto90 27.04.2015 / 22:19