<?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>whmcs &#8211; Blog</title>
	<atom:link href="https://blog.sergiorios.com.ar/tag/whmcs/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.sergiorios.com.ar</link>
	<description>Investigación y Desarrollo, Tecnologías Web &#38; Cloud</description>
	<lastBuildDate>Mon, 23 Feb 2026 12:14:24 +0000</lastBuildDate>
	<language>es-AR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://blog.sergiorios.com.ar/wp-content/uploads/2024/10/cropped-favicon-32x32.png</url>
	<title>whmcs &#8211; Blog</title>
	<link>https://blog.sergiorios.com.ar</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>🧩Integración avanzada WHMCS + WordPress</title>
		<link>https://blog.sergiorios.com.ar/trabajo/integracion-whmcs-wordpress-whmpress-personalizacion/</link>
		
		<dc:creator><![CDATA[sergio]]></dc:creator>
		<pubDate>Wed, 25 Jun 2025 15:09:51 +0000</pubDate>
				<category><![CDATA[Experiencia]]></category>
		<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[moneda]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[shortcodes]]></category>
		<category><![CDATA[whmcs]]></category>
		<category><![CDATA[whmpress]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://blog.sergiorios.com.ar/?p=179</guid>

					<description><![CDATA[👉 En este artículo te muestro cómo hice una integración entre WordPress y WHMCS usando el plugin WHMpress, agregando lógica personalizada en PHP para detectar la moneda según la IP del visitante, mantenerla en sesión, permitir que el usuario la cambie manualmente y mostrar una banderita al lado 👇 ⚙️ ¿Qué es WHMpress? WHMpress es &#8230; <a href="https://blog.sergiorios.com.ar/trabajo/integracion-whmcs-wordpress-whmpress-personalizacion/" class="more-link">Continuá leyendo <span class="screen-reader-text">🧩Integración avanzada WHMCS + WordPress</span></a>]]></description>
										<content:encoded><![CDATA[
<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> En este artículo te muestro cómo hice una integración entre <strong>WordPress</strong> y <strong>WHMCS</strong> usando el plugin <strong>WHMpress</strong>, agregando lógica personalizada en PHP para detectar la moneda según la IP del visitante, mantenerla en sesión, permitir que el usuario la cambie manualmente y mostrar una banderita al lado <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f447.png" alt="👇" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ¿Qué es WHMpress?</h2>



<p><a>WHMpress</a> es un plugin premium que permite conectar <strong>WordPress</strong> con <strong>WHMCS</strong>, ideal si vendés servicios como hosting, dominios o VPS.</p>



<p>Con WHMpress podés mostrar productos y precios de WHMCS directamente en WordPress, usando shortcodes o widgets.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ¿Cuál era la necesidad?</h2>



<p>Una empresa de IT necesitaba que:</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f30d.png" alt="🌍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Los precios se muestren en la moneda del país del visitante (por IP).<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9d1-200d-1f4bb.png" alt="🧑‍💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Si el usuario cambia la moneda manualmente, se respete su elección.<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3c1.png" alt="🏁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Agregar una banderita (o ícono) al lado del precio, según la moneda.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Solución técnica</h2>



<p>A continuación te comparto los <strong>shortcodes</strong> y funciones personalizadas que agregué al archivo <code>functions.php</code> del theme:</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 1. Mostrar la IP del visitante</h3>



<pre class="wp-block-preformatted has-white-color has-dark-gray-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-53f8341b99e4463b5075a3067cd759a0"><code>function shortcode_ip_cliente() {<br>    $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? <br>          $_SERVER['HTTP_X_FORWARDED_FOR'] ?? <br>          $_SERVER['REMOTE_ADDR'] ?? 'IP no detectada';<br>    return esc_html($ip);<br>}<br>add_shortcode('ip_cliente', 'shortcode_ip_cliente');<br></code></pre>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Uso: <code>[ip_cliente]</code><br>Esto permite debuggear o ver desde qué IP se está accediendo.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f30e.png" alt="🌎" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 2. Detectar moneda por IP o por URL</h3>



<pre class="wp-block-preformatted has-white-color has-dark-gray-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-dcde2e15900339921838d2762781ee2f"><code>add_action('init', 'whmpress_definir_moneda_por_url_o_ip');<br><br>function whmpress_definir_moneda_por_url_o_ip() {<br>    if (!session_id()) session_start();<br><br>    $monedas = ['USD' => 1, 'ARS' => 2];<br><br>    if (isset($_GET['currency']) &amp;&amp; isset($monedas[strtoupper($_GET['currency'])])) {<br>        $_SESSION['whmpress_currency'] = $monedas[strtoupper($_GET['currency'])];<br>        setcookie('whmpress_currency', $_SESSION['whmpress_currency'], time() + 86400 * 30, "/");<br>        return;<br>    }<br><br>    if (!isset($_SESSION['whmpress_currency']) &amp;&amp; isset($_COOKIE['whmpress_currency'])) {<br>        $_SESSION['whmpress_currency'] = $_COOKIE['whmpress_currency'];<br>        return;<br>    }<br><br>    if (!isset($_SESSION['whmpress_currency'])) {<br>        $ip = $_SERVER['REMOTE_ADDR'];<br>        $geo = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$ip}"));<br>        $pais = $geo->geoplugin_countryCode ?? 'US';<br>        $_SESSION['whmpress_currency'] = ($pais === 'AR') ? $monedas['ARS'] : $monedas['USD'];<br>        setcookie('whmpress_currency', $_SESSION['whmpress_currency'], time() + 86400 * 30, "/");<br>    }<br>}<br></code></pre>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Este fragmento detecta automáticamente la moneda inicial según la IP o parámetro <code>?currency=USD</code>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 3. Selector visual de moneda</h3>



<pre class="wp-block-preformatted has-white-color has-dark-gray-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-1fe40cded2edea24f28a0688508f3fa6"><code>function selector_moneda() {<br>    if (!session_id()) session_start();<br><br>    // lógica reducida para claridad...<br>    $currency_num = $_COOKIE['whmpress_currency'] ?? $_SESSION['whmpress_currency'] ?? 1;<br><br>    if ($currency_num === '1') {<br>        $currency = 'USD'; $currency2 = 'ARS'; $icon1 = '&#x1f310;'; $icon2 = '&#x1f1e6;&#x1f1f7;';<br>    } else {<br>        $currency = 'ARS'; $currency2 = 'USD'; $icon1 = '&#x1f1e6;&#x1f1f7;'; $icon2 = '&#x1f310;';<br>    }<br><br>    $html = '&lt;select onchange="if(this.value) location=this.value;">';<br>    $html .= "&lt;option value='?currency={$currency}' selected>{$icon1} {$currency}&lt;/option>";<br>    $html .= "&lt;option value='?currency={$currency2}'>{$icon2} {$currency2}&lt;/option>";<br>    $html .= '&lt;/select>';<br><br>    return $html;<br>}<br>add_shortcode('selector_moneda', 'selector_moneda');<br></code></pre>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Uso: <code>[selector_moneda]</code><br>Esto genera un pequeño dropdown para cambiar de moneda manualmente. Ideal para la cabecera del sitio.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3c1.png" alt="🏁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 4. Mostrar una banderita según la moneda</h3>



<pre class="wp-block-preformatted has-white-color has-dark-gray-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-4299b81b41ff10ab49de521e128a9ecf"><code>function mostrar_bandera_por_moneda() {<br>    if (session_status() == PHP_SESSION_NONE) session_start();<br>    $currency = $_SESSION['whmpress_currency'] ?? null;<br><br>    if ($currency == '2') {<br>        return '&lt;img src="https://flagcdn.com/w40/ar.png" alt="Argentina" width="24" height="18">';<br>    } elseif ($currency == '1') {<br>        return '&lt;span style="font-size:24px;">&#x1f310;&lt;/span>';<br>    }<br>    return '';<br>}<br>add_shortcode('moneda_bandera', 'mostrar_bandera_por_moneda');<br></code></pre>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Uso: <code>[moneda_bandera]</code><br>Se puede usar al lado del precio o del selector para que sea más visual <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f5bc.png" alt="🖼" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Resultado final</h2>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Precios dinámicos según país<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Cambios manuales de moneda respetados<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Visualización con íconos o banderas<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Todo usando <strong>shortcodes simples</strong> en WordPress</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>🌐API personalizada en WHMCS</title>
		<link>https://blog.sergiorios.com.ar/trabajo/crear-api-personalizada-whmcs-automatizacion/</link>
		
		<dc:creator><![CDATA[sergio]]></dc:creator>
		<pubDate>Fri, 18 Oct 2024 21:27:30 +0000</pubDate>
				<category><![CDATA[Experiencia]]></category>
		<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[whmcs]]></category>
		<guid isPermaLink="false">https://blog.sergiorios.com.ar/?p=80</guid>

					<description><![CDATA[Hoy quiero compartir una experiencia práctica que tuve desarrollando una API personalizada para WHMCS, orientada a resolver una necesidad muy específica: consultar si un cliente existe en el sistema a partir de datos como su ID, DNI o CUIT. Este proyecto surgió a raíz de un requerimiento de integración con una central telefónica, que necesitaba &#8230; <a href="https://blog.sergiorios.com.ar/trabajo/crear-api-personalizada-whmcs-automatizacion/" class="more-link">Continuá leyendo <span class="screen-reader-text">🌐API personalizada en WHMCS</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Hoy quiero compartir una experiencia práctica que tuve desarrollando una <strong>API personalizada para WHMCS</strong>, orientada a resolver una necesidad muy específica: <strong>consultar si un cliente existe en el sistema a partir de datos como su ID, DNI o CUIT</strong>.</p>



<p>Este proyecto surgió a raíz de un requerimiento de integración con una <strong>central telefónica</strong>, que necesitaba acceder a esta información en tiempo real para facilitar la identificación del cliente durante las llamadas entrantes.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> El problema: identificar clientes desde un sistema externo</h3>



<p>La necesidad era simple pero concreta: validar si un cliente está registrado en WHMCS y, de ser así, <strong>devolver algunos datos clave</strong>, como nombre, apellido y correo electrónico. Esta información debía estar disponible a través de una API que pudiera ser consumida desde un script externo ejecutado por la central telefónica.</p>



<p>El desafío fue diseñar una solución <strong>rápida, segura y sencilla de implementar</strong>, respetando el entorno de WHMCS y asegurando la correcta exposición de los datos.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> La solución: una API de consulta de clientes</h3>



<p>La respuesta fue desarrollar una <strong>API REST personalizada</strong> dentro de WHMCS, capaz de recibir uno de los siguientes parámetros:</p>



<ul class="wp-block-list">
<li><code>client_id</code></li>



<li><code>dni</code></li>



<li><code>cuit</code></li>
</ul>



<p>A partir de ese dato, la API realiza una búsqueda en el sistema y devuelve una respuesta en formato <strong>JSON</strong>. Un ejemplo de respuesta positiva sería:</p>



<pre class="wp-block-preformatted has-white-color has-dark-gray-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-73942dca76e8aefb147b0aeb9cdcd798"><code>{<br>  "result": "success",<br>  "totalresults": 1,<br>  "clients": [<br>    {<br>      "client_id": 123,<br>      "firstname": "Sergio",<br>      "lastname": "Rios",<br>      "email": "sergio@example.com"<br>    }<br>  ]<br>}<br></code></pre>



<p>Si no se encuentra ningún cliente que coincida con los parámetros enviados, la respuesta devuelve un estado diferente, informando que no hay resultados.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f914.png" alt="🤔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ¿Qué es una API y cómo se consume?</h3>



<p>Una <strong>API (Interfaz de Programación de Aplicaciones)</strong> permite que distintos sistemas se comuniquen entre sí de forma estructurada. En este caso, nuestra API actúa como un puente entre WHMCS y cualquier sistema externo que necesite acceder a los datos de clientes.</p>



<p>Para consumir esta API podés usar herramientas como <strong>Postman</strong> o <strong>Insomnia</strong>, ideales para testear y visualizar respuestas HTTP. Los pasos básicos para probarla son:</p>



<ol class="wp-block-list">
<li><strong>Crear una solicitud</strong> del tipo GET o POST (según cómo se haya implementado).</li>



<li><strong>Ingresar la URL del endpoint</strong> de la API.</li>



<li><strong>Agregar los parámetros de búsqueda</strong>, como el DNI, CUIT o ID.</li>



<li><strong>Autenticarse</strong>, si la API lo requiere (por ejemplo, mediante tokens o headers personalizados).</li>



<li><strong>Enviar la solicitud</strong> y observar la respuesta en formato JSON.</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c4.png" alt="📄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Documentación</h3>



<p>Toda la API fue documentada: se detallan los parámetros requeridos, los métodos disponibles, ejemplos de uso y consideraciones de autenticación. Si te interesa consultarla, podés encontrarla en mi repositorio de GitHub:</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a href="https://github.com/sergiorioscomar/getclientiddnicuit">Mi cuenta en GitHub</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusiones</h3>



<p>Desarrollar esta API fue una gran oportunidad para afianzar conceptos como:</p>



<ul class="wp-block-list">
<li>La estructura y seguridad en el diseño de APIs.</li>



<li>Cómo integrar WHMCS con sistemas externos.</li>



<li>La importancia de la documentación técnica clara para facilitar el uso de tus desarrollos.</li>
</ul>



<p>Aunque se trató de una funcionalidad puntual, este tipo de soluciones muestran cómo pequeñas integraciones pueden mejorar significativamente los procesos en entornos reales.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>📚Primeros desafíos con WHMCS</title>
		<link>https://blog.sergiorios.com.ar/trabajo/primeros-pasos-whmcs-problemas-soluciones/</link>
		
		<dc:creator><![CDATA[sergio]]></dc:creator>
		<pubDate>Tue, 17 Jan 2023 23:39:27 +0000</pubDate>
				<category><![CDATA[Experiencia]]></category>
		<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[modulo]]></category>
		<category><![CDATA[whmcs]]></category>
		<guid isPermaLink="false">https://blog.sergiorios.com.ar/?p=66</guid>

					<description><![CDATA[En esta publicación quiero compartirles mi primera experiencia trabajando con WHMCS y el uso del ORM Eloquent en PHP. Fue un proyecto desafiante pero a la vez muy enriquecedor, ya que me permitió aprender nuevas tecnologías y poner en práctica mis habilidades de desarrollo. ¿Qué es WHMCS? WHMCS (Web Host Manager Complete Solution) es una &#8230; <a href="https://blog.sergiorios.com.ar/trabajo/primeros-pasos-whmcs-problemas-soluciones/" class="more-link">Continuá leyendo <span class="screen-reader-text">📚Primeros desafíos con WHMCS</span></a>]]></description>
										<content:encoded><![CDATA[
<p>En esta publicación quiero compartirles mi primera experiencia trabajando con WHMCS y el uso del ORM Eloquent en PHP. Fue un proyecto desafiante pero a la vez muy enriquecedor, ya que me permitió aprender nuevas tecnologías y poner en práctica mis habilidades de desarrollo.</p>



<h4 class="wp-block-heading">¿Qué es WHMCS?</h4>



<p><strong>WHMCS (Web Host Manager Complete Solution)</strong> es una plataforma de automatización de facturación y gestión para empresas de hosting. Permite a las empresas gestionar clientes, servicios, facturación, soporte técnico, y más, en un solo lugar. Una de sus principales ventajas es la flexibilidad para personalizar funcionalidades mediante la creación de módulos y extensiones, lo que facilita la integración con otros sistemas o la implementación de características específicas.</p>



<h4 class="wp-block-heading">¿Qué es el ORM Eloquent?</h4>



<p>El <strong>ORM (Object-Relational Mapping)</strong> Eloquent es una herramienta que forma parte del framework Laravel para trabajar con bases de datos. Facilita la interacción con la base de datos al permitir manipular datos utilizando clases y objetos en lugar de consultas SQL tradicionales. Esto simplifica muchas tareas de desarrollo y hace que el código sea más legible y fácil de mantener.</p>



<h4 class="wp-block-heading">El Desafío: Desarrollar un Módulo de Retención de Clientes</h4>



<p>Mi primera tarea con WHMCS consistió en desarrollar un módulo para la retención de clientes. La idea principal del módulo era ayudar a los operadores a contactar a los clientes que solicitaban la baja de un servicio y ofrecerles un descuento o incentivos para que reconsideraran su decisión.</p>



<p><strong>Características del Módulo:</strong></p>



<ol class="wp-block-list">
<li><strong>Detección de Solicitudes de Baja:</strong> El módulo debía detectar cuando un cliente solicitaba la cancelación de un servicio.</li>



<li><strong>Asignación de Operador:</strong> Se asignaba un operador para contactar al cliente de forma proactiva.</li>



<li><strong>Ofertas de Retención:</strong> Se presentaban distintas opciones, como descuentos o mejoras en el servicio, para motivar al cliente a quedarse.</li>



<li><strong>Registro de Seguimiento:</strong> El módulo registraba las acciones del operador, incluyendo las ofertas realizadas y la respuesta del cliente.</li>
</ol>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="223" src="https://blog.sergiorios.com.ar/wp-content/uploads/2024/10/retencion-1-1024x223.png" alt="" class="wp-image-74" style="width:715px;height:auto" srcset="https://blog.sergiorios.com.ar/wp-content/uploads/2024/10/retencion-1-1024x223.png 1024w, https://blog.sergiorios.com.ar/wp-content/uploads/2024/10/retencion-1-300x65.png 300w, https://blog.sergiorios.com.ar/wp-content/uploads/2024/10/retencion-1-768x167.png 768w, https://blog.sergiorios.com.ar/wp-content/uploads/2024/10/retencion-1.png 1148w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">Desarrollo del Módulo con PHP y Eloquent</h4>



<p>Al trabajar en este proyecto, utilicé el ORM Eloquent para interactuar con la base de datos de WHMCS. La principal ventaja fue la capacidad de definir modelos y relaciones que facilitaban el acceso a la información de los clientes y sus servicios de manera intuitiva. Fue una experiencia interesante, ya que fue la primera vez que implementaba un ORM en un entorno real, y me permitió ver la potencia de usar Eloquent para escribir código limpio y estructurado.</p>



<h4 class="wp-block-heading">Retos y Aprendizajes</h4>



<p>El principal reto fue familiarizarme con el ecosistema de WHMCS y su estructura de datos. Al ser una plataforma bastante específica para empresas de hosting, su curva de aprendizaje puede ser pronunciada. Sin embargo, trabajar con Eloquent ayudó a simplificar el manejo de la base de datos, lo que hizo que el proceso de desarrollo fuera más fluido.</p>



<h4 class="wp-block-heading">Resultado Final</h4>



<p>El módulo de retención de clientes quedó funcional y permitió mejorar el proceso de atención al cliente, brindando a los operadores una herramienta útil para mantener la relación con los clientes y reducir la tasa de cancelaciones.</p>



<h4 class="wp-block-heading">Conclusión</h4>



<p>Desarrollar mi primer módulo para WHMCS fue una experiencia muy valiosa. Me permitió no solo aprender a trabajar con esta plataforma, sino también mejorar mis habilidades en PHP y en el uso de Eloquent como ORM. Si estás comenzando con WHMCS, te animo a explorar las posibilidades que ofrece la creación de módulos personalizados. Es una excelente manera de aprender y a la vez aportar valor a tu equipo o clientes.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
