Crear tipos de publicaciones personalizadas de WordPress manualmente

Publicado: 2020-12-15

En nuestro primer artículo sobre los tipos de publicaciones personalizadas de WordPress, analizamos cómo puede crear fácilmente sus propios tipos de publicaciones personalizadas utilizando el excelente complemento IU de tipo de publicación personalizada. En este segundo artículo, veremos cómo puede hacerlo manualmente (es decir, codificando). Entonces, ¿por qué si es tan fácil crear un tipo de publicación personalizado usando un complemento, querrías hacer esto de la manera más larga?

El uso de un complemento para agregar funciones personalizadas puede funcionar extremadamente bien (y la amplia biblioteca de complementos que ayudan a ampliar la funcionalidad es una de las razones por las que WordPress es tan popular). Sin embargo, pueden surgir problemas si un complemento deja de ser compatible (ya que el autor del complemento elige no continuar actualizándolo y desarrollándolo). Si esto sucede, es posible que la funcionalidad proporcionada por el complemento ya no funcione, lo que podría ser un problema grave si su sitio web se basa en una característica particular proporcionada por un complemento.

Como tal, si puede codificar la funcionalidad directamente en lugar de depender de un complemento, entonces es una buena opción a considerar.

Hoy lo guiaremos a través de cómo puede crear su propio tipo de publicación personalizada sin usar un complemento. También demostraremos algunas configuraciones básicas como definir las etiquetas CPT (Tipo de publicación personalizado) junto con cosas como habilitar imágenes destacadas y más. Luego agregaremos una taxonomía personalizada y, finalmente, veremos cómo puede mostrar su contenido de tipo de publicación personalizada en la interfaz de su sitio web.

Crear el tipo de publicación personalizada

Si siguió nuestro tutorial anterior y aún tiene instalado el complemento de la interfaz de usuario de CPT, desactívelo para que no surja confusión al crear su nuevo CPT manualmente.

Como anteriormente, usaremos Recetas como el enfoque para nuestro nuevo tipo de publicación personalizada. Para comenzar, lo primero que tenemos que hacer es crear el tipo de publicación personalizada insertando el código correcto en nuestro archivo functions.php .

Configuración básica

Por ahora, crearemos nuestros tipos de publicaciones con argumentos mínimos usando la función register_post_type que proporciona WordPress.

 register_post_type( string $post_type, array|string $args = array() )

La estructura de esta función requiere dos parámetros. La clave de tipo de publicación que solo debe contener caracteres alfanuméricos en minúsculas, guiones y guiones bajos y un segundo parámetro opcional, $args para argumentos adicionales. Nos centraremos solo en algunos de estos argumentos en este artículo, pero si desea experimentar un poco más, puede encontrar la lista completa de los argumentos disponibles en la documentación relacionada de WordPress.

A los efectos de este artículo, utilizaremos el siguiente código.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );

Si está siguiendo, inicie su editor de texto favorito y agregue este código a su archivo functions.php .

Verá en este código que usamos la matriz de 'etiquetas' para definir los nombres singulares y plurales para nuestro tipo de publicación, el argumento show_in_rest para activar el editor de Gutenberg para las publicaciones de recetas, así como el argumento public .

El argumento public en realidad hace tres cosas diferentes. Muestra el menú de publicaciones personalizadas del administrador, incluye el menú de publicaciones personalizadas en los resultados de la búsqueda del sitio web y también muestra el menú de publicaciones personalizadas en el área del menú de administración de WordPress. Estas opciones se pueden modificar por separado usando los show_in_nav_menus , exclude_from_search y show_ui respectivamente. Los valores predeterminados show_in_nav_menus y show_ui heredan el valor public , pero el valor predeterminado exclude_from_search es el opuesto del valor public .

También usamos el argumento de supports que define qué funciones admitirá una publicación personalizada. Por ahora, solo habilitaremos 'título', 'editor' y 'miniatura' (se mostrarán algunas opciones adicionales en artículos futuros).

Con este fragmento de código agregado a nuestro archivo functions.php y guardado (¡siempre haga una copia de seguridad de su sitio web antes de realizar un trabajo como este!), Ahora verá un elemento de menú completamente nuevo en el administrador de WordPress (en este caso, 'Recetas').

A continuación, si nos dirigimos a Apariencia > Menús, podemos confirmar que las Recetas se han agregado como una opción. Esto confirma que las cosas funcionan como deberían.

Nota: Si va al área del menú y no ve el elemento de menú 'Recetas', es posible que no se haya marcado en las Opciones de pantalla. Para hacer esto, diríjase a la parte superior de la página y abra la barra de Opciones de pantalla y asegúrese de que su nuevo tipo de publicación personalizada (Recetas en este ejemplo) esté marcada.

Agregue su taxonomía para su tipo de publicación personalizada

Las taxonomías de WordPress existen para agrupar contenido similar. En este punto, tenemos nuestras publicaciones personalizadas de 'recetas', pero no tenemos la capacidad de categorizarlas de la manera que queremos. Como tal, sería útil crear una categoría separada para nuestras recetas. Agrupemos, por ejemplo, las recetas según el tipo de cocina a la que pertenecen.

Para lograr esto, necesitamos registrar una nueva taxonomía de 'cocinas' y luego vincularla al tipo de publicación 'recetas'.

Para agregar la taxonomía usamos la función register_taxonomy() que proporciona WordPress (ver una lista de argumentos aquí).

 register_taxonomy( string $taxonomy, $object_type, $args )

Los argumentos obligatorios son $taxonomy , que es la clave de la taxonomía, y $object_type , que es el tipo de objeto o la matriz de tipos de objetos con los que se debe asociar la taxonomía, en nuestro caso, 'recetas'. En el parámetro $arg también incluiremos los valores necesarios para etiquetar nuestras instancias de administración de nuestra taxonomía.

 function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );

El booleano show_admin_column define si la taxonomía será visible o no como una columna en la tabla de la lista de administración de recetas.

Ahora, si regresa a su administrador de WordPress y actualiza esto, debería ver la taxonomía 'Cuisines' en el menú Recetas.

También debería ver una columna de "Cocinas" en la tabla de Recetas:

Mostrar su contenido de tipo de publicación personalizado en la interfaz

En este punto, debería poder incluir sus publicaciones personalizadas en su menú, así como las taxonomías personalizadas que ha creado. Para demostrar esto, agregamos dos cocinas 'mediterránea' y 'mexicana' en nuestro menú de taxonomía de cocinas. Luego aparecen como opciones de menú en nuestro menú de WordPress, lo que nos permite crear un menú de recetas como el que se muestra a continuación.

Si ha creado una publicación de recetas y la ha asociado con una categoría de cocina, ahora debería verlas aparecer cuando seleccione la cocina asociada en el menú.

Nota: si intenta ver una publicación de receta en la parte delantera, es posible que obtenga un "404 no encontrado". Esto puede suceder porque es necesario vaciar la memoria caché de Permalink. Esto es fácil de hacer. Simplemente vaya a Configuración > Enlaces permanentes y vuelva a guardar.

Ahora crearemos otro elemento de menú para 'Todas las recetas' utilizando un código personalizado para mostrar un archivo de todas nuestras recetas.

Sin embargo, antes de continuar, debemos asegurarnos de que nuestro argumento de archivo de publicaciones personalizadas esté establecido en verdadero. Regrese a su código en functions.php donde registra el tipo de receta y agrega 'has_archive' => true, en la matriz de argumentos.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );

Después de eso, vaya a Configuración> Enlaces permanentes y vuelva a guardar para asegurarse de que no recibe un error 404 (como mencionamos anteriormente).

Ahora, en la página de construcción del menú, agregue el enlace personalizado para la página de archivos. El texto del enlace podría ser "Todas las recetas".

La URL debe ser "/?post_type=recipes", si sus enlaces permanentes están configurados como "Normal" y '/recetas/' si los enlaces permanentes están configurados como "Nombre de la publicación".

Agregue el elemento del menú, vaya a su sitio web y haga clic en su enlace. Ahora debería ver todas las publicaciones de recetas en una vista de archivo.

Otras lecturas

  • Crear tipos de publicaciones personalizadas de WordPress usando un complemento
  • Tipos de publicaciones personalizadas de WordPress: llevándolo más lejos
  • ¡Cree tipos de publicaciones personalizadas de WordPress usando su propio complemento!

Conclusión

La forma de abordar los tipos de publicaciones personalizadas que examinamos en este artículo puede parecer confusa al principio (especialmente cuando se compara con la facilidad de crear tipos de publicaciones personalizadas usando un complemento). Sin embargo, si está dispuesto a perseverar, la codificación de sus propios tipos de publicaciones personalizadas tiene sus ventajas, es decir, no depende de un complemento en caso de que ese complemento deje de funcionar o deje de ser compatible.