¿Cómo crear colecciones que se editan en admin?

2

No estoy seguro de cómo se llama esta función, pero he visto ejemplos de esto antes. Digamos que en mi sitio quiero colecciones adicionales de cosas (además de publicaciones de blog) que tienen sus propias secciones en el área de administración.

Por ejemplo, tengo:

  • una lista de eventos
  • una lista de productos
  • una lista de testimonios

... y cada uno necesita su propia página para enumerarlos.

¿Cómo funciona esto en WordPress y cómo puedo crear el mío?

    
pregunta Andrew 19.04.2015 - 18:21

2 respuestas

12

Creo que a lo que te refieres se llama "Tipos de publicación" . Por defecto, WordPress tiene un tipo completo de publicaciones con las que ya está familiarizado: post (noticias / blog), page (Páginas), attachment (Medios), revision (Revisiones de página / publicación). Puede consultar la lista completa de tipos de publicaciones incorporados en El Códice - Tipos de publicaciones .

Si desea registrar un nuevo Tipo de publicación personalizada (CPT), puede hacerlo con bastante facilidad con algunos conocimientos de PHP. Revisemos y creamos nuestro propio tipo de publicación llamado "Productos".

Paso uno - Conectarse a FTP: no desea hacer esto con Appearance -> Editor .

Paso dos : ubique su tema, si está usando un tema secundario, ábralo y localice el archivo functions.php . Abra el archivo en Notepad ++ o su editor de elección.

Paso tres : registre su tipo de publicación

Hacia la parte superior de su archivo functions.php vamos a enlazar a WordPress init y utilice una función incorporada de WordPress llamada inteligentemente: register_post_type . altamente le sugiero que lea estos enlaces de códice, ya que no explicaré cada punto, sino que ofreceré una breve descripción.

/** 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' );

Paso cuatro - Subir functions.php - una nota importante aquí es también vaciar los enlaces permanentes , que es tan fácil como ir a Settings -> Permalinks y hacer clic en el botón "Guardar" en la parte inferior de la página.

Similar a crear un tipo de publicación, si desea crear Categorías (similar a Publicar categorías) puede hacerlo usando register_taxonomy . Siga los pasos anteriores hasta el paso 3.

Paso 3 - Registrar taxonomía

Los dos primeros parámetros son importantes para vincular la taxonomía al tipo de publicación. La siguiente parte importante es el parámetro hierarchical . Esta será la diferencia entre post_tags (falso) y categories (true). Haremos esta taxonomía jerárquica que es similar a las categorías de publicaciones.

/** 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');
    
respondido por el Howdy_McGee 27.04.2015 - 22:30
0

Estos se denominan tipos de publicación personalizados . Hay varias formas de crear un nuevo tipo de publicación, utilizando un complemento o creando uno mismo.

  • Si prefiere usar un complemento, intente esto: enlace
  • Si desea crearlos usted mismo sin ningún complemento, debe agregar algunos códigos al archivo functions.php en su tema. Este es un ejemplo simple:
function codex_custom_init() {
    $args = array(
      'public' => true,
      'label'  => 'Books'
    );
    register_post_type( 'book', $args );
}
add_action( 'init', 'codex_custom_init' );

Esto agregará un nuevo tipo de contenido (publicación) llamado Libro.

Consulte la página del códice para obtener más información: enlace

    
respondido por el mukto90 27.04.2015 - 22:19

Lea otras preguntas en las etiquetas