Sin duda, el sistema de gestión de contenidos WordPress ha adquirido su gran fama porque va más allá de ser un sistema limitado a blogs, y tiene la capacidad de crear diferentes tipos de sitios web. Quizás la característica más destacada que ha potenciado la capacidad de WordPress para lograrlo es la funcionalidad de tipos de entrada personalizados (Custom Post Types), que ha permitido a los propietarios de sitios crear diferentes tipos de contenido en el sitio además de artículos y páginas. En el artículo de hoy explicaremos en detalle el concepto de tipo de entrada personalizado y su importancia, y aprenderemos cómo podemos crear tipos de entradas personalizadas programáticamente dentro de tu tema WordPress y almacenarlos en la base de datos e interactuar con ellos a través del código. ¿Dónde se almacenan las entradas en WordPress? Las entradas de todos los tipos se almacenan en un sitio WordPress dentro de una tabla en la base de datos llamada wp_posts, y el tipo de contenido se define en la columna post_type dentro de esta tabla. A través de esta columna determinamos si el valor almacenado es un artículo (post), una página (page), medios o archivos, o una entrada personalizada, etc. La tabla wp_posts que almacena las entradas de WordPress El tipo de entrada (Post type) es muy importante para trabajar con contenido en WordPress. Si eres un desarrollador de temas WordPress, puedes crear un tipo de entrada personalizado y crear un nuevo menú en el panel de control dedicado para ingresar esta entrada, y también puedes editarla y eliminarla fácilmente en tu sitio WordPress. En los párrafos siguientes aprenderemos cómo crear una entrada personalizada Custom Post Type con pasos prácticos y cómo mostrarla en la interfaz frontal del sitio. ¿Cómo se definen los tipos de entradas personalizadas en WordPress? Programáticamente, un tipo de entrada personalizado es simplemente una entrada normal, pero el valor del campo post_type en su base de datos es diferente de los tipos de entrada predeterminados en WordPress. Por ejemplo, si estás diseñando un tema WordPress que muestra información sobre libros y quieres crear un tipo de entrada personalizado para indicar el tipo de contenido del libro, primero debes pensar en los campos que necesita este libro, como (nombre del autor, categoría del libro, imagen de portada, número de páginas, editorial, etc.) Lee también: ¿Cuáles son los tipos de entradas personalizadas en WordPress? ¿Cuáles son sus ventajas y desventajas? Puedes hacer esto creando un archivo nuevo dentro de la carpeta del tema y nombrándolo de una manera que refleje el tipo de entrada personalizado, como books.php Es preferible guardar este archivo dentro de una carpeta dedicada llamada (includes o inc) para facilitar la organización. Luego escribes en él un código cuya función es llamar a la función de registro de entrada personalizada register_post_type() La función register_post_type toma la siguiente forma general: register_post_type( string $post_type, array|string $args = array() ): WP_Post_Type|WP_Error Y en el siguiente ejemplo explicaremos cómo usar esta función y pasar los parámetros a ella. Aquí registraremos una entrada personalizada que representa un libro y la agregaremos al tema WordPress gratuito Onepress de la siguiente manera: <?php // Register Custom Post Type called Book
function create_book_cpt(){
// Array of custom labels for our custom post type backend.
$labels = array(
'name' => __( 'books', 'onepress' ), //El nombre general del tipo de entrada y generalmente está en forma plural
'singular_name' => __( 'book', 'onepress' ), //El nombre de un elemento de este tipo de entrada y generalmente está en forma singular
'menu_name' => __( 'كتب', 'onepress' ), // El nombre utilizado en el menú
'name_admin_bar' => __( 'كتاب', 'onepress' ), // La cadena de texto para agregar una nueva entrada personalizada en la barra de control del administrador
'add_new_item' => __( 'أضف كتاب جديد', 'onepress' ), // La cadena de texto para agregar una nueva entrada personalizada
'new_item' => __( 'كتاب جديد', 'onepress' ), // Una nueva entrada personalizada
'edit_item' => __( 'تحرير كتاب', 'onepress' ),// Editar la entrada personalizada
'view_item' => __( 'عرض الكتاب', 'onepress' ), // Ver la entrada personalizada
'all_items' => __( 'كافة الكتب', 'onepress' ), // Texto del submenú para mostrar todos los libros
'search_items' => __( ' البحث عن كتاب', 'onepress' ), // Buscar un libro
'not_found' => __( ' ما من كتب بعد ', 'onepress' ), // La cadena que se muestra cuando no hay entradas de tipo libro
'not_found_in_trash' => __( ' لا توجد كتب في سلة المهملات', 'onepress' ), //La cadena que se muestra cuando no hay entradas de tipo libro en la papelera
'featured_image' => __( ' غلاف الكتاب ', 'onepress' ), //Portada del libro en lugar de la imagen destacada del libro
'set_featured_image' => __( 'قم بتعيين غلاف للكتاب', 'onepress' ), // Establece una portada para el libro
'remove_featured_image' => __( ' أزل غلاف الكتاب', 'onepress' ), // Elimina la portada del libro
'use_featured_image' => __( ' استخدم هذا الغلاف للكتاب', 'onepress' ), // Usa esta imagen como portada del libro
'items_list' =>__( ' لائحة الكتب', 'onepress' ),
'items_list_navigation' => __( ' تنقل في لائحة الكتب', 'onepress' ),
'filter_items_list' => __( ' تصفية عناصر اللائحة', 'onepress' ),
);
$args = array(
'label' => 'Book',
'labels' => $labels,
'description' => __( 'كتب الموقع', 'onepress' ),
'public' => true,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'comments', 'custom-fields', ),
'menu_position' => 20,
'taxonomies' => array( 'category', 'post_tag' ),
'hierarchical' => false,
'show_ui' => true,
'show_in_menu' => true,
'menu_icon' => 'dashicons-format-aside',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
'show_in_rest' => true
);
register_post_type( 'books', $args );
}
add_action( 'init', 'create_book_cpt' ); En este código definimos una función personalizada (función de callback) llamada create_book_cpt() y la vinculamos al gancho de acción init. Dentro de esta función, como puedes ver, llamamos a la función de registro de entrada register_post_type() después de haber definido los parámetros necesarios para que esta función funcione. Primero definimos el parámetro $labels, que es un array que define las diferentes etiquetas que incluye el tipo de entrada personalizado. Luego definimos el parámetro $args, que representa el array de opciones para registrar el tipo de entrada personalizado, y también es un array al que pasamos un conjunto de parámetros o argumentos. Aquí están los significados de los parámetros más importantes: labels Etiquetas de los campos de la entrada personalizada. description Una breve explicación del tipo de entrada personalizado y sus usos en el sitio. public Una variable booleana que configura un conjunto de opciones. Cuando le pasamos el valor true, esto establecerá un conjunto de otras opciones relacionadas con la visibilidad de la entrada personalizada y la consulta del mismo a true también. supports: Este parámetro proporciona soporte de la entrada personalizado para elementos de control de WordPress predeterminados disponibles en el editor. En el caso predeterminado, solo puedes mostrar los campos de título 'title' y editor 'editor' para la entrada predeterminada. Para agregar soporte para más elementos como la imagen destacada 'thumbnail', comentarios 'comments' y revisiones 'revisions' y nombre del autor 'author' y demás, debes especificarlos manualmente a través de este parámetro. (En el siguiente enlace hay una lista de todos los valores que puedes pasar a este parámetro) has_archive: Si este parámetro se establece en true, se creará un archivo personalizado para esta entrada en la siguiente URL https://yourdomin/custom_post_type menu_position Esta opción determina la posición del menú que muestra el tipo de entrada personalizado en el panel de control del administrador o dashboard. Cada pestaña o elemento de menú en el panel de control tiene una prioridad que determina su posición, como se muestra en la siguiente imagen (un número menor significa una prioridad más alta). Orden de elementos de menú del panel de control en WordPress Después de escribir el archivo y guardar los cambios en él, debes importar este archivo al archivo de funciones del tema de la siguiente manera: require(get_template_directory() . '/includes/books.php'); Nota: Puedes agregar el código del archivo books.php anterior directamente al archivo functions.php de tu tema, pero personalmente prefiero definir el tipo de entrada personalizado en un archivo separado para mantener los archivos organizados y fáciles de mantener. En el ejemplo anterior creamos un tipo de entrada personalizado simple, pero puedes expandir este tipo significativamente, y definir etiquetas y categorías personalizadas para él, o permitir las etiquetas y categorías de los artículos predeterminados para este tipo de entrada personalizado. Lee también: Explicación de las categorías (Taxonomies) y su personalización en WordPress También puedes controlar la posición de visualización del tipo de entrada personalizado en el menú, determinar si es buscable o no, especificar el permiso del usuario que puede acceder a él, personalizar los mensajes que muestra WordPress para los tipos de entradas personalizadas y muchas más características. Después de guardar el archivo de entrada personalizado del libro, el nuevo tipo de entrada personalizado de libros aparecerá en el panel de control de tu sitio (el backend del sitio) como un elemento de menú separado. Al hacer clic en él, nos aparece un submenú que contiene 4 elementos de la siguiente manera. Agregar una entrada personalizada a un tema WordPress Ahora, cuando hagas clic en la opción Agregar nuevo para agregar una nueva entrada del tipo libro, WordPress te llevará a la siguiente URL https://yourdomin/wp-admin/post-new.php?post_type=books y abrirá el editor de entradas tradicional pero con nombres de campos personalizados para el libro. Por ejemplo, en nuestro caso, se nos muestra una pestaña llamada libro en lugar de la pestaña (página o artículo) y se muestra un campo llamado portada del libro en lugar de la imagen destacada del artículo o página, como se muestra a continuación. Estas entradas se guardan de manera similar a las otras entradas predeterminadas en WordPress dentro de la tabla wp_posts, pero el valor de la columna post_type para ellas es books para distinguirlas de otros tipos de contenido en el sitio. Mostrar tipos de entradas personalizadas en un sitio WordPress Después de que hemos definido la entrada personalizada de libros y hemos agregado un conjunto de libros a la base de datos del sitio, por supuesto necesitaremos mostrar estos libros en el sitio. Y como mencionamos anteriormente, si pasaste el valor true al parámetro has_archive al crear el tipo de entrada personalizado books, WordPress mostrará un archivo de estas entradas personalizadas en una página dedicada con la siguiente URL https://yourdomin/books/ Por lo tanto, todo lo que debes hacer es navegar a este enlace después de escribir el dominio de tu sitio en lugar de yourdomin en este enlace seguido del nombre de la entrada personalizada, y verás una lista o índice de todos los libros que agregaste de la siguiente manera: Mostrar archivo de entradas personalizadas en WordPress Nota: El archivo de plantilla de tema responsable de manera predeterminada de mostrar este índice de acuerdo con la jerarquía de archivos de plantilla es el archivo archive.php. Si esto no existe, WordPress utilizará el archivo index.php para mostrar el índice de libros. Pero si deseas formatear las páginas de archivo de libros de una manera diferente a las otras páginas de archivo en el sitio, por supuesto puedes escribir un archivo de plantilla personalizado para este tipo llamado archive-books.php.
Lee también: Personaliza la visualización de páginas de archivo en un tema WordPress . También puedes escribir una consulta WP_Query apropiada para mostrar estos libros de la forma que necesitas y en cualquier lugar del sitio donde necesites mostrarlos. Por ejemplo, para mostrar solo la portada del libro (la imagen destacada) y el título del libro, podemos escribir la siguiente consulta:
Últimos libros del sitio
<?php $loop = new WP_Query( array( 'post_type' => 'books' ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php echo get_the_title(); ?>
<?php endwhile; wp_reset_query(); ?>
Resultados de la consulta personalizada sobre entradas personalizadas Por supuesto, después debes escribir estilos apropiados para los resultados de la consulta para que aparezcan de la manera que se adapte al diseño de tu sitio y tu identidad visual. Conclusión Con esto llegamos al final de nuestro artículo de hoy en el que explicamos cómo expandir las características del sistema WordPress y crear características adicionales para un tema WordPress y hacerlo compatible con un tipo de entrada personalizado de acuerdo con la naturaleza del tema y su propósito. Comienza a crear tipos de entradas personalizadas en tu tema WordPress que se adapten a la naturaleza del contenido de tu sitio. Si encuentras algún problema al trabajar con esta entrada, puedes compartirlo con nosotros en la sección de comentarios debajo del artículo. Lee más: La entrada personalizada (Custom Post) y formas de usarlo y crearlo en WordPress #desarrollodetemaswordpress
DROPIDEA
Esperamos que este artículo te haya aportado valor real. En DROPIDEA, siempre nos esforzamos por ofrecer contenido de alta calidad que te ayude a crecer y evolucionar en el espacio digital. Síguenos para más artículos y guías útiles.
Admin
DROPIDEA
Últimos artículos
Peak XV eleva el límite de sus inversiones semilla a 5 millones de dólares
Esperada cena entre el CEO de Anthropic y Donald Trump en medio de desacuerdos sobre la seguridad de la inteligencia artificial
Google prueba las compras directas de Flipkart a través de Gemini en la India
Crusoe cancela un acuerdo de 1.250 millones de dólares para turbinas de centros de datos