WordPress: añadir tipos de posts

Logo de WordPress

Apunte, resumen, tutorial, codekata para generar tipos de contenidos en el backend de un WordPress. En el origen de los tiempos todo eran Posts del mismo tipo.. xD ¡y se crearon los tipos de post! Con lo que ya podemos tener de base también las páginas, y podemos generar nuestros propios tipos de posts.

Esto sirve para crear páginas de gestión de por ejemplo productos, servicios, locales, personal, etc..

Al grano, el código fuente

Esto se puede hacer en un plugin nuevo, que podemos poner en el fichero:
wp-content/plugins/jnj-tools/jnj-tools.php
..cuyo contenido podría ser:

<?php
/**
 * Plugin Name: Jnj tools
 * Plugin URI: https://jnjsite.com/
 * Description: General plugin for testing purposes only..
 * Version: 1.0
 * Author: Jaime Niñoles
 * Author URI: https://jnjsite.com/.
 */
defined('ABSPATH') or die('No no no');
define('JNJT_PATH', plugin_dir_path(__FILE__));

add_action('init', 'jnjtools_cpt_create');
function jnjtools_cpt_create()
{
    $labels = [
         'name' => 'JnjTools',
         'singular_name' => 'tool',
         'add_new' => 'Add tool',
         'add_new_item' => 'Add new tool',
         'edit_item' => 'Edit tool',
         'new_item' => 'New tool',
         'view_item' => 'View tool',
         'search_items' => 'Search tool',
         'not_found' => 'Tool not found',
         'not_found_in_trash' => 'Tools not found in trash',
         'parent_item_colon' => '',
    ];

    $args = [
         'label' => 'JnjTools',
         'labels' => $labels,
         'description' => 'Tools for share..',
         'public' => true,
         'hierarchical' => false,
         'exclude_from_search' => false,
         'publicly_queryable' => true,
         'show_ui' => true,
         'show_in_menu' => true,
         'show_in_nav_menus' => true,
         'show_in_admin_bar' => true,
         //'show_in_rest' => true,
         //'rest_base' => 'post_type',
         //'rest_controller_class' => 'WP_REST_Posts_Controller',
         'menu_position' => 10,
         'menu_icon' => 'dashicons-admin-tools',
         'capability_type' => 'post',
         'capabilities' => array('edit_post', 'read_post', 'delete_post', 'edit_posts', 'edit_others_posts',
             'delete_posts', 'publish_posts', 'read_private_posts'),
         'map_meta_cap' => true,
         'supports' => array('title', 'editor', 'comments', 'revisions', 'trackbacks', 'author', 'excerpt',
             'page-attributes', 'thumbnail', 'custom-fields',  'post-formats'),
         'supports' => ['title', 'editor', 'thumbnail', 'excerpt'],
         'register_meta_box_cb' => null,
         'taxonomies' => 'jnjtools_taxonomy',
         'has_archive' => false,
         'rewrite' => true,
         //'rewrite' => ['slug' => 'jnjtool', 'with_front' => true],
         'slug' => 'jnjtool',
         'with_front' => true,
         'feeds' => true,
         'pages' => true,
         //'ep_mask' =>EP_PERMALINK,
         //'query_var' => 'jnjtool',
         //'can_export' => true,
         //'delete_with_user' => false,
         '_builtin' => false,
         //'_edit_link' => 'post.php?post=%d',
    ];

    register_post_type('jnjtool', $args);
}
WordPress, haciendo custom post types nuevos para organizar el contenido que queramos.

Más información en la documentación oficial aquí:
https://developer.wordpress.org/reference/functions/register_post_type/

¡Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *