<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HERNANDO J.  CHAVES | DESARROLLADOR WORDPRESS</title>
	<atom:link href="https://hernandochaves.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://hernandochaves.com/</link>
	<description></description>
	<lastBuildDate>Sat, 26 Apr 2025 08:39:40 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://hernandochaves.com/wp-content/uploads/2025/07/cropped-cropped-avatar_rounded-32x32.webp</url>
	<title>HERNANDO J.  CHAVES | DESARROLLADOR WORDPRESS</title>
	<link>https://hernandochaves.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Personalizando Menús en WordPress</title>
		<link>https://hernandochaves.com/personalizando-menus-en-wordpress/</link>
		
		<dc:creator><![CDATA[Hernando J Chaves]]></dc:creator>
		<pubDate>Tue, 19 Nov 2024 14:19:26 +0000</pubDate>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Themes WP]]></category>
		<category><![CDATA[code]]></category>
		<guid isPermaLink="false">https://hernandochaves.com/?p=215</guid>

					<description><![CDATA[<p>A lo largo de mi carrera como desarrollador WordPress, una de las necesidades más recurrentes que he enfrentado ha sido personalizar los menús de navegación. Ya sea para agregar clases CSS específicas, mostrar íconos junto a los elementos del menú o incluso filtrar ciertos enlaces dependiendo del rol de usuario, estas tareas han sido esenciales</p>
<p>The post <a href="https://hernandochaves.com/personalizando-menus-en-wordpress/">Personalizando Menús en WordPress</a> appeared first on <a href="https://hernandochaves.com">HERNANDO J.  CHAVES | DESARROLLADOR WORDPRESS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A lo largo de mi carrera como desarrollador WordPress, una de las necesidades más recurrentes que he enfrentado ha sido personalizar los menús de navegación. Ya sea para agregar clases CSS específicas, mostrar íconos junto a los elementos del menú o incluso filtrar ciertos enlaces dependiendo del rol de usuario, estas tareas han sido esenciales para ofrecer experiencias personalizadas y funcionales.</p>
<p>Recuerdo un proyecto específico en el que un cliente necesitaba mostrar un ícono de «nuevo» junto a las páginas recién agregadas en su sitio web. Mi primer intento fue modificar directamente el HTML generado, pero pronto me di cuenta de que esto no era ni eficiente ni escalable. Fue entonces cuando me topé con la función mágica de WordPress: <code>wp_nav_menu_objects</code>.</p>
<h2>¿Qué es wp_nav_menu_objects y cómo puede ayudarte?</h2>
<p>En este artículo, quiero hablarte sobre cómo esta función puede ser tu mejor aliada para transformar un menú de navegación estándar en algo verdaderamente dinámico y adaptado a las necesidades de tus proyectos. <strong><code>wp_nav_menu_objects</code></strong> te permite modificar los elementos de un menú justo antes de que se rendericen, dándote control total sobre cada aspecto de ellos.</p>
<p>Vamos a ver muchos de sus usos, acompañados de ejemplos prácticos para que puedas implementarlos fácilmente en tus proyectos.</p>
<h2>Personalizando Menús con wp_nav_menu_objects</h2>
<h3>1. <strong>Filtrar Elementos del Menú según el Rol del Usuario</strong></h3>
<p>Una de las aplicaciones más comunes es mostrar ciertos enlaces solo a usuarios con roles específicos. Por ejemplo, un enlace al panel de administración para los administradores.</p>
<pre class=" line-numbers"><code class="language-php">
	add_filter('wp_nav_menu_objects', 'filtrar_menu_por_rol', 10, 2);

	function filtrar_menu_por_rol($items, $args) {
		// Recorremos cada elemento del menú
		foreach ($items as $key =&gt; $item) {
			if ($item-&gt;title === 'Admin Panel' &amp;&amp; !current_user_can('administrator')) {
				unset($items[$key]); // Eliminamos el elemento si no es admin
			}
		}
		return $items;
	}
</code></pre>
<p><strong>Explicación</strong>:</p>
<ul>
<li>El filtro se engancha a <code>wp_nav_menu_objects</code>.</li>
<li>Iteramos cada elemento del menú, comprobamos si el usuario tiene permisos y eliminamos los elementos según corresponda.</li>
</ul>
<h3>2. <strong>Agregar Clases CSS Dinámicamente</strong></h3>
<p>Supongamos que queremos agregar una clase especial a los elementos del menú que están marcados como «destacados».</p>
<p>&nbsp;</p>
<pre class=" line-numbers"><code class="language-php">
	add_filter('wp_nav_menu_objects', 'agregar_clases_a_menu', 10, 2);

	function agregar_clases_a_menu($items, $args) {
		foreach ($items as $item) {
			if (get_post_meta($item-&gt;object_id, 'menu_destacado', true)) {
				$item-&gt;classes[] = 'destacado'; // Añadimos la clase
			}
		}
		return $items;
	}

</code></pre>
<p><strong>Explicación</strong>:</p>
<ul>
<li>Aquí verificamos si una meta clave personalizada (<code>menu_destacado</code>) está activa en la página o entrada asociada al enlace del menú.</li>
<li>Agregamos dinámicamente una clase CSS llamada <code>destacado</code>.</li>
</ul>
<h3>3. <strong>Añadir Íconos a los Elementos del Menú</strong></h3>
<p>Los íconos son una gran manera de mejorar la experiencia visual de los menús.</p>
<pre class=" line-numbers"><code class="language-php">
	add_filter('wp_nav_menu_objects', 'agregar_iconos_a_menu', 10, 2);

	function agregar_iconos_a_menu($items, $args) {
		foreach ($items as $item) {
			if ($item-&gt;title === 'Inicio') {
				$item-&gt;title = '&lt;i class="fas fa-home"&gt;&lt;/i&gt; ' . $item-&gt;title;
			}
		}
		return $items;
	}


</code></pre>
<p><strong>Explicación</strong>:</p>
<ul>
<li>En este ejemplo, añadimos un ícono de Font Awesome al enlace que tiene el título «Inicio».</li>
<li>La clave está en modificar el valor del título (<code>title</code>) del elemento del menú.</li>
</ul>
<h3>4. <strong>Mostrar Etiquetas Personalizadas</strong></h3>
<p>¿Quieres añadir una etiqueta como «Nuevo» junto a los enlaces de las páginas recientes? Aquí tienes:</p>
<pre class=" line-numbers"><code class="language-php">
	add_filter('wp_nav_menu_objects', 'mostrar_etiqueta_nuevo', 10, 2);

	function mostrar_etiqueta_nuevo($items, $args) {
		foreach ($items as $item) {
			$fecha_creacion = get_the_date('U', $item-&gt;object_id);
			if (time() - $fecha_creacion &lt; 30 * DAY_IN_SECONDS) { 
<span class="hljs-variable">                  $item</span>-&gt;title .= <span class="hljs-string">' &lt;span class="etiqueta-nuevo"&gt;Nuevo&lt;/span&gt;'</span>;
			}
		}
		return $items;
	}

</code></pre>
<p><strong>Explicación</strong>:</p>
<ul>
<li>Comparamos la fecha de creación del contenido con la fecha actual. Si fue creado hace menos de 30 días, añadimos una etiqueta «Nuevo».</li>
</ul>
<h3>5. <strong>Crear Menús Condicionales por Ubicación</strong></h3>
<p>Podemos aplicar personalizaciones diferentes dependiendo del lugar donde se utilice el menú.</p>
<pre class=" line-numbers"><code class="language-php">
	add_filter('wp_nav_menu_objects', 'personalizar_por_ubicacion', 10, 2);

	function personalizar_por_ubicacion($items, $args) {
		if ($args-&gt;theme_location === 'header-menu') {
			foreach ($items as $item) {
				$item-&gt;classes[] = 'menu-header';
			}
		}
		return $items;
	}

</code></pre>
<p><strong>Explicación</strong>:</p>
<ul>
<li>Comprobamos si el menú pertenece a una ubicación específica (<code>theme_location</code>) y añadimos clases personalizadas a sus elementos.</li>
</ul>
<h3>6. <strong>Ordenar Elementos del Menú Programáticamente</strong></h3>
<p>En lugar de depender del orden manual, podrías ordenarlos por título, fecha o cualquier otra lógica.</p>
<pre class=" line-numbers"><code class="language-php">
	add_filter('wp_nav_menu_objects', 'ordenar_menu', 10, 2);

	function ordenar_menu($items, $args) {
		usort($items, function ($a, $b) {
			return strcmp($a-&gt;title, $b-&gt;title); // Orden alfabético
		});
		return $items;
	}
</code></pre>
<p><strong>Explicación</strong>:</p>
<ul>
<li>Usamos <code>usort</code> para reordenar los elementos según el título, aunque puedes cambiar la lógica de comparación según tu necesidad.</li>
</ul>
<h2>Conclusión</h2>
<p>La función <code>wp_nav_menu_objects</code> es una herramienta poderosa para personalizar menús en WordPress. Desde agregar clases dinámicas hasta filtrar elementos por rol de usuario o mostrar etiquetas personalizadas, las posibilidades son prácticamente ilimitadas. Lo mejor de todo es que te permite mantener tu código organizado y reutilizable, cumpliendo con las mejores prácticas de desarrollo.</p>
<p>Si estás buscando ofrecer experiencias únicas a tus clientes o usuarios, no dudes en explorar esta función. ¡Los menús de navegación dejarán de ser un simple listado de enlaces y se convertirán en un elemento clave de la interfaz de tus proyectos!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://hernandochaves.com/personalizando-menus-en-wordpress/">Personalizando Menús en WordPress</a> appeared first on <a href="https://hernandochaves.com">HERNANDO J.  CHAVES | DESARROLLADOR WORDPRESS</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cómo optimizar tu Flujo de Trabajo en WordPress aprovechando la Recarga en Caliente de Vite</title>
		<link>https://hernandochaves.com/como-optimizar-tu-flujo-de-trabajo-en-wordpress-aprovechando-la-recarga-en-caliente-de-vite/</link>
		
		<dc:creator><![CDATA[Hernando J Chaves]]></dc:creator>
		<pubDate>Fri, 01 Nov 2024 11:21:49 +0000</pubDate>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Themes WP]]></category>
		<category><![CDATA[Vite]]></category>
		<category><![CDATA[code]]></category>
		<guid isPermaLink="false">https://hernandochaves.com/?p=173</guid>

					<description><![CDATA[<p>En un artículo anterior vimos cómo integrar Vite a un tema WordPress para automatizar algunos procesos y mejorar el flujo de trabajo, en este artículo complementario vamos a aprender cómo aplicar el módulo de recarga en caliente de Vite aplicado al desarrollo de temas de WordPress, es decir que la página se recarga ante cualquier</p>
<p>The post <a href="https://hernandochaves.com/como-optimizar-tu-flujo-de-trabajo-en-wordpress-aprovechando-la-recarga-en-caliente-de-vite/">Cómo optimizar tu Flujo de Trabajo en WordPress aprovechando la Recarga en Caliente de Vite</a> appeared first on <a href="https://hernandochaves.com">HERNANDO J.  CHAVES | DESARROLLADOR WORDPRESS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>En un artículo anterior vimos <a href="https://hernandochaves.com/como-usar-vite-js-en-un-tema-de-wordpress-paso-a-paso/" target="_blank" rel="noopener">cómo integrar Vite a un tema WordPress</a> para automatizar algunos procesos y mejorar el flujo de trabajo, en este artículo complementario vamos a aprender cómo aplicar el módulo de recarga en caliente de <a href="https://vite.dev/" target="_blank" rel="noopener">Vite</a> aplicado al desarrollo de temas de WordPress, es decir que la página se recarga ante cualquier cambio que hagamos cuando estamos trabajando en un ambiente de desarrollo.  Si alguna vez has trabajado sin una herramienta de recarga en caliente, sabes lo tedioso que puede ser el proceso de desarrollo. Entre los problemas más comunes se encuentran:</p>
<ul>
<li><strong>Largos tiempos de espera para ver cambios</strong>: Cada vez que se realiza una modificación en el código es necesario recargar manualmente el navegador lo que consume tiempo y corta el flujo de trabajo.</li>
<li><strong>Errores difíciles de detectar</strong>: Sin recarga en caliente es fácil pasar por alto pequeños errores que podrían haberse solucionado rápidamente al ver los cambios instantáneamente.</li>
<li><strong>Perdida de productividad</strong>: La necesidad de recargar constantemente el navegador no solo es frustrante, sino que también disminuye la eficiencia del desarrollo.</li>
</ul>
<h3>¿Cómo Funciona?</h3>
<p>Cuando realizas un cambio en tu código, Vite automáticamente detecta la modificación y actualiza solo la parte afectada de la página. Esto es posible gracias a los módulos ES nativo del navegador, que permiten una integración más rápida y eficiente. En lugar de reconstruir todo el proyecto byte solo recopila el módulo específico que ha cambiado y lo inyecta en la página.</p>
<h2>Hot Reload de Vite en el desarrollo de temas de WordPress</h2>
<h3>Configurando el archivo vite.config.js</h3>
<p>Lo primero que vamos a hacer es configurar el archivo vite.config.js de Vite para que detecte los archivos .php y envie una señal al servidor y recargue la página, para eso debes agregar las siguientes lineas de código en la sección de plugins:</p>
<pre class=" line-numbers"><code class="language-javascript">
        //Archivo vite.config.js
	plugins: [ // Define un array de plugins que Vite utilizará
            {
				name: 'php', // Nombre del plugin 
				handleHotUpdate({ file, server }) { // maneja la actualización en caliente
					if (file.endsWith('.php')) { // Comprueba si el archivo que ha cambiado termina en '.php'
					server.ws.send({ type: 'full-reload' }); // Envía una señal al servidor para recargar completamente la página si es un archivo PHP
					}
				}
            }
        ]
</code></pre>
<h3>Configurando el archivo funtions.php</h3>
<p>En el archivo functions.php de tu tema de WordPress, vamos a definir algunas constantes, la primera nos servirá para detectar si estamos en un entorno de producción o de desarrollo:</p>
<pre class=" line-numbers"><code class="language-php">
        if ( ! defined( 'DEV' ) ) define( 'DEV', false );
        define('URL_FILE', get_template_directory_uri() . '/dist');
        const URL_ASSETS = DEV ? 'http://localhost:5173/src' : URL_FILE;
</code></pre>
<p>Entonces cuando DEV sea igual a true significa que estamos en un entorno de desarrollo y los archivos seran tomados de la carpeta «src/» y cuando DEV sea false, estaremos en un entorno de producción y encolaremos los archivos que estan en la carpeta «dist» así:</p>
<pre class=" line-numbers"><code class="language-php">
        const URL_ASSETS = DEV ? 'http://localhost:5173/src' : URL_FILE . '/dist';
</code></pre>
<p>Aquí el puerto 5173 es el que abre vite cuando ejecutamos en la consola:</p>
<pre class=" line-numbers"><code class="language-javascript">
        npm run dev
</code></pre>
<p>Ahora vamos a encolar nuestros archivos teniendo en cuenta esta estructura de archivos:</p>
<pre class=" line-numbers"><code class="language-none">
src
└── assets
    ├── js
    │   └── scripts.js
    └── css
        └── custom.js
</code></pre>
<p>Nuestra función de encolamiento dentro de tu archivo functions.php se veria así:</p>
<pre class=" line-numbers"><code class="language-php">
    function hch_scripts() {
        if( DEV ):
            wp_enqueue_script('vite-reload', 'http://localhost:5173/@vite/client', [], null, false);
        endif;

        wp_enqueue_script('scripts', URL_FILES . '/js/scripts.js', [], '1.0.0', true );
        wp_enqueue_style('custom', URL_FILES . '/css/custom.css', [], '1.0.0', 'all');
    }
    add_action( 'wp_enqueue_scripts', 'hch_scripts' );
</code></pre>
<p>Dos cosas importantes a considerar, la primera es que aquí la variable URL_FILES es dinámica en función del entorno de desarrollo en que nos encontremos, y la segunda es que hemos encolado un archivo javascript de vite que es el que hará la magia de la recarga y solo se encolará si estamos en desarrollo:</p>
<pre class=" line-numbers"><code class="language-php">
    if( DEV ):
        wp_enqueue_script('vite-reload', 'http://localhost:5173/@vite/client', [], null, false);
    endif;    
</code></pre>
<p>En estos momentos en tu consola debe estar saliendo el siguiente error:</p>
<pre class=" line-numbers"><code class="language-javascript">
    Uncaught SyntaxError: Cannot use import statement outside a module
</code></pre>
<p>Este error ocurre cuando intentas usar la declaración «import» en un archivo javascript que no está configurado como un módulo ES. Para solucionarlo necesitas asegurarte que tu archivo JavaScript esté siendo tratado como un módulo ES, y eso lo conseguimos con estas lineas de código:</p>
<pre class=" line-numbers"><code class="language-php">
    
    function hch_script_loader_tag( $tag, $handle )
    {
        if( $handle === 'vite-reload' ):
            return str_replace(' src', ' type="module" src', $tag);
        endif;
        return $tag;
    }
    add_filter('script_loader_tag', 'hch_script_loader_tag',10, 2);   
</code></pre>
<p>Aquí lo que hacemos es verificar que el archivo sea el que encolamos de Vite y luego reemplazamos el atributo «src» por el atributo «type» que es el que soluciona el problema.</p>
<h3>Y listo!</h3>
<p>Implementar la recarga en caliente con Vite revoluciona el flujo de trabajo de desarrollo web. Eliminar la necesidad de recargar manualmente el navegador cada vez que se realiza un cambio ahorra tiempo y mejora significativamente la productividad. Además, al ver los resultados de los cambios en tiempo real, los desarrolladores podemos detectar y corregir errores de manera más eficiente, lo que lleva a un producto final de mayor calidad.<br />
Al incorporar Vite en tu desarrollo, no solo optimizas el tiempo y esfuerzo, sino que también enriqueces la experiencia de desarrollo, haciéndola más fluida y gratificante.</p>
<p>The post <a href="https://hernandochaves.com/como-optimizar-tu-flujo-de-trabajo-en-wordpress-aprovechando-la-recarga-en-caliente-de-vite/">Cómo optimizar tu Flujo de Trabajo en WordPress aprovechando la Recarga en Caliente de Vite</a> appeared first on <a href="https://hernandochaves.com">HERNANDO J.  CHAVES | DESARROLLADOR WORDPRESS</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cómo usar Vite JS en un tema de WordPress Paso a Paso</title>
		<link>https://hernandochaves.com/como-usar-vite-en-el-desarrollo-de-un-tema-para-wordpress/</link>
		
		<dc:creator><![CDATA[Hernando J Chaves]]></dc:creator>
		<pubDate>Wed, 11 Sep 2024 10:27:19 +0000</pubDate>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Themes WP]]></category>
		<category><![CDATA[Vite]]></category>
		<category><![CDATA[code]]></category>
		<guid isPermaLink="false">http://hernandochaves.com/?p=26</guid>

					<description><![CDATA[<p>Uno de los problemas comunes que enfrentamos cuando desarrollamos temas para WordPress (Y en general para cualquier proyecto de desarrollo) es la gestión del código y los recursos de manera eficiente. Sin las herramientas adecuadas, el flujo de trabajo puede volverse engorroso y propenso a errores, desde la optimización de recursos hasta la implementación de</p>
<p>The post <a href="https://hernandochaves.com/como-usar-vite-en-el-desarrollo-de-un-tema-para-wordpress/">Cómo usar Vite JS en un tema de WordPress Paso a Paso</a> appeared first on <a href="https://hernandochaves.com">HERNANDO J.  CHAVES | DESARROLLADOR WORDPRESS</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Uno de los problemas comunes que enfrentamos cuando desarrollamos temas para WordPress (Y en general para cualquier proyecto de desarrollo) es la gestión del código y los recursos de manera eficiente. Sin las herramientas adecuadas, el flujo de trabajo puede volverse engorroso y propenso a errores, desde la optimización de recursos hasta la implementación de cambios en tiempo real, lo que lleva a una disminución en la productividad y calidad del código.</p>
<p>Aquí es donde Vite puede ser una solución efectiva. Vite es un builder de módulos de desarrollo rápido que aprovecha la potencia de los módulos ES nativos del navegador para ofrecer una experiencia de desarrollo fluida y rápida. En este artículo, vamos a aprender una forma de utilizar empaquetadores como Vite para optimizar el flujo de trabajo en la creación de temas para WordPress.</p>
<h2>Importancia del Uso de Empaquetadores</h2>
<p>Los empaquetadores son herramientas esenciales en el desarrollo moderno de sitios web. Nos permiten:</p>
<ul>
<li>Combinar y minimizar archivos CSS y JavaScript para mejorar el rendimiento del sitio.</li>
<li>Utilizar módulos ES6 y otras funcionalidades modernas del lenguaje que no son nativamente soportadas por todos los navegadores.</li>
<li>Automatizar tareas repetitivas como la recarga del navegador, preprocesado de CSS (Sass, Less), y la optimización de imágenes.</li>
<li>Garantizar un código más limpio y estructurado, facilitando el mantenimiento y la colaboración en equipos.</li>
</ul>
<h3>1. Instalación de Vite</h3>
<p>Lo primero que necesitas para instalar <a href="https://vite.dev/" target="_blank" rel="noopener">Vite</a>, es tener <a href="https://nodejs.org/en/" target="_blank" rel="noopener">Node.js</a> instalado en tu máquina. Luego, puedes crear un nuevo proyecto con Vite siguiendo estos pasos:</p>
<pre class=" line-numbers"><code class="language-markdown">
    // Inicia un nuevo proyecto
    cd my-wordpress-theme
    npm install -D vite       
    </code></pre>
<h3>2. Estructura del Proyecto</h3>
<p>Organiza tu proyecto para facilitar el desarrollo. Aquí tienes una estructura básica:</p>
<pre class=" line-numbers"><code class="language-none">
src
└── assets
    ├── js
    │   └── scripts.js
    └── css
        └── custom.js
</code></pre>
<h3></h3>
<h3>3. Integración con WordPress</h3>
<p>Asegúrate de que WordPress cargue los archivos generados por Vite. En el archivo functions.php de tu tema, añade el siguiente código:</p>
<pre class=" line-numbers"><code class="language-php">
    function enqueue_vite_assets() {
        wp_enqueue_script('vite-js', get_template_directory_uri() . '/dist/assets/scripts.js', array(), null, true);
        wp_enqueue_style('vite-css', get_template_directory_uri() . '/dist/assets/custom.css', array(), null);
    }
    add_action('wp_enqueue_scripts', 'enqueue_vite_assets');
    </code></pre>
<h3></h3>
<p>En este caso hemos vinculado los archivos finales compilados en la carpeta «dist/», pero si aún estas en étapa de desarrollo debes reemplazar la ruta de los archivos encolados en «dist/» por «src/».</p>
<p>&nbsp;</p>
<h3>4. Configurando Vite en un tema de WordPress</h3>
<h4>1. Importación de Módulos</h4>
<p>Para empezar, necesitas importar las herramientas básicas que utilizarás en tu configuración de Vite.</p>
<pre class=" line-numbers"><code class="language-javascript">
        // Importa el método "resolve" del módulo "path"
        import { resolve } from 'path';

        // Importa el método "defineConfig" de "vite"
        import { defineConfig } from 'vite';
    </code></pre>
<p>&nbsp;</p>
<h4 class="text-base-strong">2. Configuración Básica de Vite</h4>
<p><span class="">Aquí es donde definimos la configuración principal de Vite y la exportamos. Esta configuración básica es crucial para que Vite reconozca y aplique los ajustes que queremos.</span></p>
<pre class=" line-numbers"><code class="language-javascript">
        // Exporta la configuración del proyecto Vite usando "defineConfig", lo que permite a Vite reconocer y aplicar esta configuración.
        export default defineConfig({
            // Define la base pública del proyecto.
            base: '/',
        });
    </code></pre>
<h4></h4>
<h4 class="text-base-strong">3. Opciones de Construcción</h4>
<p><span class="">Para optimizar y gestionar los recursos de manera eficiente, configuramos Rollup, el bundler que Vite utiliza por debajo, con opciones específicas:</span></p>
<pre class=" line-numbers"><code class="language-javascript">
      build: { // Configuración de las opciones de construcción 
        rollupOptions: { // Opciones específicas para Rollup, el bundler que utiliza Vite por debajo
          input: { // Define las entradas del bundle
            custom: resolve(__dirname, 'src/css/custom.css'), // Especifica la ruta del archivo CSS personalizado como una entrada
            scripts: resolve(__dirname, 'src/js/scripts.js') // Especifica la ruta del archivo JavaScript como una entrada
          },
          output: { // Configuración de la salida del bundle
            entryFileNames: 'js/[name].js', // Define el formato de los nombres de los archivos de entrada
            assetFileNames: infoFile =&gt; { // Función para definir los nombres de los archivos de activos (como CSS y otros)
              const name = infoFile.names &amp;&amp; infoFile.names.length &gt; 0 ? infoFile.names[0] : 'default'; // Obtiene el nombre del archivo, o usa 'default' si no hay nombres
              if (name.endsWith('.css')) { // Si el nombre del archivo termina en '.css'
                return `css/${name}`; // Almacena los archivos CSS en la carpeta 'css'
              }
              return name; // De lo contrario, devuelve el nombre tal cual
            }
          }
        }
      },
      
    </code></pre>
<h4 class="text-base-strong">4. Definir la Raíz del Proyecto</h4>
<p><span class="">Este paso es crucial para establecer la raíz del proyecto correctamente, utilizando <code class="font-ligatures-none mx-0.5 rounded-[4px] border border-stroke-300 bg-spot-peach-200/50 px-1 py-px font-mono text-foreground-800 text-sm dark:bg-midnight-900">resolve</code> para obtener la ruta absoluta del directorio actual:</span></p>
<pre class=" line-numbers"><code class="language-javascript">
        // Define la raíz del proyecto utilizando "resolve" para obtener la ruta absoluta del directorio actual (__dirname)
        root: resolve(__dirname),

    </code></pre>
<h4 class="text-base-strong">5. Plugins</h4>
<p><span class="">Para una mayor flexibilidad y funcionalidad, puedes incluir plugins. Por ejemplo, podrías necesitar un plugin para manejar la recarga de archivos PHP, para el manejo de imágenes etc:</span></p>
<pre class=" line-numbers"><code class="language-javascript">
        plugins: [ // Define un array de plugins que Vite utilizará
             ]
      
    </code></pre>
<h2>Conclusión</h2>
<p>Implementar Vite en el desarrollo de un tema para WordPress puede mejorar significativamente la experiencia de desarrollo. Desde la optimización de la carga de recursos hasta la gestión eficiente de dependencias y la actualización en tiempo real, Vite ofrece herramientas poderosas que pueden solucionar muchos de los problemas comunes que enfrentan los desarrolladores. Con esta configuración básica, puedes empezar a disfrutar de un entorno de desarrollo más rápido y eficiente.</p>
<p>The post <a href="https://hernandochaves.com/como-usar-vite-en-el-desarrollo-de-un-tema-para-wordpress/">Cómo usar Vite JS en un tema de WordPress Paso a Paso</a> appeared first on <a href="https://hernandochaves.com">HERNANDO J.  CHAVES | DESARROLLADOR WORDPRESS</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
