<?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>tpl &#8211; Blog</title>
	<atom:link href="https://blog.sergiorios.com.ar/tag/tpl/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:12:05 +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>tpl &#8211; Blog</title>
	<link>https://blog.sergiorios.com.ar</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>🔁Actualización automática de precios WHMCS en WordPress</title>
		<link>https://blog.sergiorios.com.ar/trabajo/sincronizar-precios-whmcs-wordpress-whmpress-descuentos/</link>
		
		<dc:creator><![CDATA[sergio]]></dc:creator>
		<pubDate>Wed, 25 Jun 2025 16:25:17 +0000</pubDate>
				<category><![CDATA[Experiencia]]></category>
		<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[tpl]]></category>
		<category><![CDATA[whmpress]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://blog.sergiorios.com.ar/?p=192</guid>

					<description><![CDATA[En este post te muestro cómo trabajé con WHMpress, el plugin que conecta WHMCS con WordPress, para lograr dos cosas: ✅ Automatizar la sincronización diaria de precios desde WHMCS.✅ Personalizar los templates para aplicar descuentos visuales desde WordPress. 🔁 Sincronización automática con WHMCS vía Cron WHMpress tiene una función de sincronización manual desde el panel &#8230; <a href="https://blog.sergiorios.com.ar/trabajo/sincronizar-precios-whmcs-wordpress-whmpress-descuentos/" class="more-link">Continuá leyendo <span class="screen-reader-text">🔁Actualización automática de precios WHMCS en WordPress</span></a>]]></description>
										<content:encoded><![CDATA[
<p>En este post te muestro cómo trabajé con <strong>WHMpress</strong>, el plugin que conecta <strong>WHMCS</strong> con <strong>WordPress</strong>, para lograr dos cosas:</p>



<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;" /> Automatizar la sincronización diaria de precios desde WHMCS.<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;" /> Personalizar los templates para aplicar <strong>descuentos visuales</strong> desde WordPress.</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/1f501.png" alt="🔁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Sincronización automática con WHMCS vía Cron</h2>



<p>WHMpress tiene una función de sincronización manual desde el panel de WordPress. Pero para automatizarla todos los días, podés crear un archivo <code>cron.php</code> y ejecutarlo con un cron job.</p>



<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;" /> Código del archivo <code>cron.php</code></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-be11171fa119b6409c30ad0ef4f50cde"><code>&lt;?php<br><br>require_once(__DIR__ . '/wp-load.php');<br><br>if (!function_exists("whmpress_cron_function")) {<br>    function whmpress_cron_function() {<br>        echo "Starting WHMPress cron job.&lt;br&gt;";<br>        echo "===========================&lt;br&gt;";<br>        echo whmp_fetch_data();<br>        echo "============================&lt;br&gt;";<br>        echo "WHMPress cron job completed.&lt;br&gt;";<br>    }<br>}<br><br>whmpress_cron_function();<br></code></pre>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ejemplo de línea en el crontab</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-5378ec69df75c4008428fabc1f28b51a"><code>0 3 * * * php /var/www/html/sitio/cron.php &gt;/dev/null 2&gt;&amp;1<br></code></pre>



<p>Este comando ejecuta la sincronización todos los días a las 3 AM desde el servidor.</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/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Agregar descuento personalizado en los templates de WHMpress</h2>



<p>Al usar Elementor podés insertar widgets como <code>whmpress_pricing_table</code>. WHMpress permite configurar:</p>



<ul class="wp-block-list">
<li>Producto o servicio</li>



<li>Template visual</li>



<li>Moneda</li>



<li>Ciclo de facturación</li>
</ul>



<p>Además, podés agregar <strong>descuentos personalizados</strong> desde WordPress, sin tocar WHMCS.</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/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Cómo se agrega el descuento en el widget y el shortcode</h3>



<p>Primero agregamos el parámetro <code>discount</code> en el <code>extract()</code> del shortcode:</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-cd90aa7a33a7bd8da5e7d8a4985b13df"><code>extract( shortcode_atts( [<br>    'discount' =&gt; whmpress_get_option("discount"),<br>    // otros atributos...<br>], $atts ) );<br></code></pre>



<p>Después lo agregamos al array <code>$vars</code>:</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-6e7857bddf5bb52738a3334328b89180"><code>$vars = [<br>    "discount" =&gt; $discount,<br>    "amountwithdiscount" =&gt; floor($tmp2['amount'] * (1 - $discount / 100)),<br>    // ...<br>];<br></code></pre>



<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/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Configuración en Elementor (archivo <code>pricing-table.php</code>)</h2>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c2.png" alt="📂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ruta: <code>/wp-content/plugins/whmpress/widgets/pricing-table.php</code></p>



<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;" /> Agregar el campo de descuento</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-8087c06d00e909bf63a44072c9809ad6"><code>$this-&gt;add_control(<br>    'discount',<br>    [<br>        'label' =&gt; 'Descuento',<br>        'type' =&gt; \\Elementor\\Controls_Manager::NUMBER,<br>        'default' =&gt; '0',<br>    ]<br>);<br></code></pre>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e4.png" alt="📤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Usar el valor en el render</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-dfec5c45bfafb889ff074a62aff4d34f"><code>$discount = $settings['discount'];<br></code></pre>



<p>Y pasarlo al shortcode:</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-d3a60c031086b5ce0ac41a086c56bd7b"><code>echo do_shortcode('[whmpress_pricing_table <br>    id="' . $id . '" <br>    discount="' . $discount . '"<br>    // otros parámetros<br>]');<br></code></pre>



<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/1f3a8.png" alt="🎨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Cómo mostrar el descuento en el template <code>.tpl</code></h2>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c2.png" alt="📂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ruta: <code>/wp-content/plugins/whmpress/templates/whmpress_pricing_table/default</code></p>



<p>Usamos condicionales de Smarty para mostrar el monto con y sin descuento:</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-6e3a8e24ac3b8ec2d3caffb60ecc0ea1"><code>{if isset($amountwithdiscount) &amp;&amp; $amountwithdiscount != $amount}<br>    &lt;span class="original-amount">{$prefix}{$amount}&lt;/span><br>    &lt;span class="h-discount-tag">{$discount}% OFF&lt;/span>&lt;br><br>    &lt;div class="holder"><br>        &lt;span class="currency">{$prefix}&lt;/span>&lt;span class="amount">{$amountwithdiscount|number_format:0:',':'.'}&lt;/span><br>{/if}<br></code></pre>



<p>Esto permite mostrar visualmente el ahorro con un formato atractivo.</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/1f4b0.png" alt="💰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Moneda dinámica según la sesión o cookie</h2>



<p>Relacionado con el post anterior, también podés detectar la moneda activa con este fragmento:</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-9c836089b78c3f42e0e867c8071c0655"><code>if (empty($currency)) {<br>    if (isset($_SESSION["whmpress_currency"])) {<br>        $currency = $_SESSION["whmpress_currency"];<br>    }<br>}<br></code></pre>



<p>Esto se integra perfecto con los shortcodes de detección de IP y selección de moneda que documenté acá <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>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <a class="" href="https://blog.sergiorios.com.ar/trabajo/%e2%9d%93como-integraste-whmcs-con-wordpress-usando-whmpress-y-ademas-lo-personalizaste-con-codigo-propio/">¿Cómo integraste WHMCS con WordPress usando WHMpress y además lo personalizaste con código propio?</a></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/2705.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/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Precios actualizados automáticamente desde WHMCS<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Descuentos configurables visualmente desde WordPress<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Integración fluida con Elementor y WHMpress<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Templates visuales adaptados con lógica PHP y Smarty</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
