Cuéntame tu Proyecto: 881 914 641

Cómo Minificar el HTML en WordPress sin Plugins

Seguimos con algún truco para mejorar la velocidad de carga de nuestra web en WordPress, y es que Google valora mucho el tiempo de carga de las páginas web en su última revisión del algoritmo de búsqueda. Yate hablamos de cómo incrementar la velocidad usando un CDN en WordPress, hoy te enseñaremos a comprimir el HTML de tu tema WordPress.

Existen varios plugins para realizar esta función, pero si una cosa tenemos clara es que cuantos menos plugins tengamos instalados mayor será el rendimiento de nuestro WordPress. Por ello te enseñaremos un truco para comprimir el HTML de tu tema de WordPress sin utilizar plugins.

La función es la que te dejamos a continuación, debes integrarla en tu Child Theme o en un plugin de funciones si lo tienes implementado, ambas opciones son correctas. También funcionará en el archivo functions.php de tu tema pero no es recomendable ya que si lo actualizas perderás la modificación.

//Función para Minificar el HTML
class WP_HTML_Compression {
    protected $compress_css = true;
    protected $compress_js = true;
    protected $info_comment = true;
    protected $remove_comments = true;
 
    protected $html;
    public function __construct($html) {
      if (!empty($html)) {
		    $this->parseHTML($html);
	    }
    }
    public function __toString() {
	    return $this->html;
    }
    protected function bottomComment($raw, $compressed) {
	    $raw = strlen($raw);
	    $compressed = strlen($compressed);		
	    $savings = ($raw-$compressed) / $raw * 100;		
	    $savings = round($savings, 2);		
	    return '';
    }
    protected function minifyHTML($html) {
	    $pattern = '/<(?|<(? |<!(?--).*?-->|<(?[/w.:-]*)(?:".*?"|'.*?'|[^'">]+)*>|(?((<[^!/w.:-])?[^<]*)+)|/si'; preg_match_all($pattern, $html, $matches, PREG_SET_ORDER); $overriding = false; $raw_tag = false; $html = ''; foreach ($matches as $token) { $tag = (isset($token['tag'])) ? strtolower($token['tag']) : null; $content = $token[0]; if (is_null($tag)) { if ( !empty($token['script']) ) { $strip = $this->compress_js; } else if ( !empty($token['style']) ) { $strip = $this->compress_css; } else if ($content == '') { $overriding = !$overriding; continue; } else if ($this->remove_comments) { if (!$overriding && $raw_tag != 'textarea') { $content = preg_replace('/).)*-->/s', '', $content); } } } else { if ($tag == 'pre' || $tag == 'textarea') { $raw_tag = $tag; } else if ($tag == '/pre' || $tag == '/textarea') { $raw_tag = false; } else { if ($raw_tag || $overriding) { $strip = false; } else { $strip = true; $content = preg_replace('/(s+)(w++(?<!baction|balt|bcontent|bsrc)="")/', '$1', $content); $content = str_replace(' />', '/>', $content); } } } if ($strip) { $content = $this->removeWhiteSpace($content); } $html .= $content; } return $html; } public function parseHTML($html) { $this->html = $this->minifyHTML($html); if ($this->info_comment) { $this->html .= "n" . $this->bottomComment($html, $this->html); } } protected function removeWhiteSpace($str) { $str = str_replace("t", ' ', $str); $str = str_replace("n", '', $str); $str = str_replace("r", '', $str); while (stristr($str, ' ')) { $str = str_replace(' ', ' ', $str); } return $str; } } function wp_html_compression_finish($html) { return new WP_HTML_Compression($html); } function wp_html_compression_start() { ob_start('wp_html_compression_finish'); } add_action('get_header', 'wp_html_compression_start');

Con este truco conseguirás comprimir el HTML de tu tema de WordPress; pero si necesitas una mayor compresión como por ejemplo de CSS y JS,  los más recomendable es alguno de los plugins de cache.

Acelera tu web y para posicionar en Google

En nuestro curso gratuito aprenderás entre otras cosas a optimizar la velocidad de carga de tu WordPress para mejorar el SEO.