Cómo pasar tu web a HTTPS sin perder los likes de Facebook

Hoy por hoy, tener HTTPS en tu web más que una recomendación es casi un imprescindible. No sólo mejora la seguridad de tu página sino que Google te premia sensiblemente, pues es uno de los puntos que tiene en cuenta a la hora de decidir tu posicionamiento.

Ésto es genial si tu web es nueva y sólo tienes que preocuparte por sacar tu certificado, y que éste se aplique a tu web.

Sin embargo, si tu web tiene un tiempo y ya tienes un historial de likes en Facebook, puedes encontrarte con que has perdido los likes que tanto han tardado en llegar en tus posts.

Y lo peor, puede que ni siquiera lo veas inmediatamente, ni en todos tus posts, sino que te vas a volver loco pensando en por qué el post A tiene sus likes, mientras que el post B no los tiene.

Hoy vamos a ver por qué perdemos nuestros Me Gusta, y cómo recuperarlos.

## ¿Por qué he perdido los me gusta de mis posts?

El sistema de me gusta de un post, me refiero a un post fuera de Facebook, en tu blog, funciona de la siguiente manera:

  • Tú insertas el código de me gusta de facebook en tu post, ya sea directamente o con un plugin en el caso de WordPress.
  • Cuando alguien da a me gusta en ése botón, Facebook va a tu post y recoge alguna información, como el título, la entradilla, y la imagen. También recoge la URL de tu post para asignarla tus likes. Ésto lo hace mediante el meta og:url de la cabecera. Éste campo jamás debe cambiar, o perderemos los likes a ésa URL.
  • A lo largo del tiempo, Facebook visitará de nuevo ésta URL para comprobar si hay campos que han cambiado, como por ejemplo la imagen.

Es decir, cuando Facebook visita nuestra página, los likes se asignan a la url de og:url.

¿Por qué pierdo los likes al cambiar mi web a HTTPS?

Cuando tu blog cambia a HTTPS, su url pasa de ser http://loquesea.com a https://loquesea.com. Su etiqueta og:url cambia también, por lo que deja de identificar ése post con los likes que ya tenía, y por tanto, cuando insertas el botón (que también hace referencia a la URL), al comprobar el número de likes que tienes, muestra los de la nueva URL.

Entonces sólo con cambiar la url del botón de Me Gusta por la antigua URL debería volver a tener mis likes, ¿no?

Sí y no. Sólo verás los antiguos likes mientras Facebook no vuelva a reindexar ésa página, y se de cuenta de que tu og:url apunta a otra dirección. En lugar de usar éste truco, lo que debes hacer es que og:url apunte a tu dirección de siempre, en lugar de a la nueva.

Ésto también pasa si cambias la URL de tu web. El campo de la cabecera, nunca debe cambiar.

¿Cómo recuperar mis me gusta en los posts de WordPress?

Ahora que ya sabemos cuál es el problema podemos buscar una solución.

Para webs a medida cada uno tiene que buscarse la vida. En WordPress si usamos el plugin Yoast Seo Plugin, vamos a ver cómo poner todo en orden para recuperar nuestros likes:

Lo primero, debemos ir a la carpeta de nuestro tema activo y abrir functions.php para pegar la siguiente función:

function txl_consolidate_og_URLs( $url ) {
    return str_replace( 'https://', 'http://', $url );
}
add_filter( 'wpseo_opengraph_url', 'txl_consolidate_og_URLs' );

Con ésto ya tenemos nuestra etiqueta og:url apuntando a la web sin http. Si estamos cambiando nuestra URL, es decir si pasamos de http://loquesea.com a https://nuevaweb.com, el código sería muy parecido:

function txl_consolidate_og_URLs( $url ) {
        return str_replace( site_url(), 'http://loquesea.com', $url );
}
add_filter( 'wpseo_opengraph_url', 'txl_consolidate_og_URLs' );

Una pequeña consideración

En ésto punto debo avisaros de que, para que Facebook no os quite los likes de la antigua URL, debe tener acceso a ella en todo momento. Es decir, que no podemos símplemente eliminar la página de la antigua URL, sino que debemos montarnos un sistema que detecte el agente de usuario de Facebook, y si es él le permita el acceso a la página y en caso contrario redireccione con un 301 a la nueva URL (para Google y nuestros visitantes).

No puedo negar que es un marrón tener que mantener la antigua URL, pero no necesariamente tienes que tener la misma página. Facebook sólo necesita acceso a los metadatos en la antigua URL, por lo que puedes detectar el agente de usuario en la antigua URL y servirle una página en blanco con los metas correctos. Sigue siendo un rollo.

En el caso de que no cambiemos la URL sino sólo a HTTPS, lo único que tenemos que hacer es no forzar el redireccionamiento a HTTPS. Ésto es especialmente útil con WordPress, pues todos nuestros enlaces internos apuntarán a HTTPS y eventualmente Google se dará cuenta del cambio, pero no afectará a nuestros likes.

Cómo pedir a Facebook que reindexe toda nuestra web HTTPS

En todo momento me estoy planteando que el blog o la web de la que hablamos tiene una trayectoria, buen posicionamiento, y un historial de likes por el que vale la pena darse contra todas éstas paredes.

Ésto suele implicar un gran número de páginas con sus correspondientes likes.

En mi caso, hablamos de un volumen de casi 1400 publicaciones y para que Facebook lo reindexe, no podía hacerlo a mano. Así que como es un WordPress, lo que tenía que hacer es:

  • Sacar todas las URL de todos los post del blog publicados desde el principio.
  • Pedir a Facebook que reindexe todas éstas páginas.

Sacar todos los posts publicados en un blog de WordPress:

Lo primero es saber qué URLs son con las que tenemos que trabajar. Para ésto, podemos usar el plugin Export All URLs, o si tenemos acceso al servidor, crear un archivo get_posts.php con el siguiente código:

<?php

include "wp-load.php";

$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
$posts = $posts->posts;

header('Content-type:text/plain');
foreach($posts as $post) {
    switch ($post->post_type) {
        case 'revision':
        case 'nav_menu_item':
        case 'attachment':
            break;
        case 'page':
        case 'post':
            $permalink = get_permalink($post->ID);
            break;
        default:
            $permalink = get_post_permalink($post->ID);
            break;
    }
    echo "\n{$permalink}";
}
?>

Éste código también nos valdrá para nuestros Custom Post Types.

Una vez tengamos la lista la guardamos en un archivo lista.txt.

Pedir a Facebook que reindexe todas nuestras URLs

Para ésto vamos a tener que usar nuestra pantalla negra, la terminal de comandos.

Primero necesitamos crear un script que lea nuestro archivo lista.txt y realice peticiones a Facebook.

while read url; do
    curl -X POST \
         -F "id=$url" \
         -F "scrape=true" \
         -F "access_token=TOKENDEACCESO" \
         "https://graph.facebook.com"
done <lista.txt

Lo guardamos como scrape.sh. Después, ejecutamos:

chmod u+x scrape.sh
./scrape.sh

Empezaremos a ver nuestras respuestas en la terminal.

Cómo obtener un token de acceso para el script

Habrás notado que en ése script hace falta un token de acceso. Para obtenerlo, debemos ir a Facebook Developers y crear una nueva aplicación. Nuestro token de acceso estará en el campo “Identificador de la aplicación”.

## Conclusiones

Como véis, el hecho de no configurar correctamente el campo og:url desde un principio nos dará un buen dolor de cabeza a la larga. Lo mejor es configurar los metas de la cabecera desde el principio, de manera que cuando Facebook llegue a nuestra nueva URL lo encuentre y podamos desentendernos. Si no lo hacemos, durante algún tiempo podríamos perder nuestros likes, o tendremos que realizar todo éste proceso para poder recuperar nuestros likes.

5 thoughts to “Cómo pasar tu web a HTTPS sin perder los likes de Facebook”

  1. Tengo este problema y me estoy volviendo loca.
    No me veo capacitada para hacer toda esta movida, porque no controlo nada.
    ¿Alguien me puede ayudar por un módico precio?

  2. Hola!

    estaba muy animado al ver tu post, he hecho todo pero a partir del punto “Pedir a Facebook que reindexe todas nuestras URLs” ya no he podido seguir.

    en que terminal de comandos debo hacer los que pones a continuación? en cmd de mi ordenador?

    muchas gracias

  3. Hola, yo acabo de migrar mi sitio WordPress a https y he recuperado mis likes 🙂 No solamente utilice esta guia, sino una combinacion de muchos articulos que encontre. Si alguno necesita ayuda puede decirme. No soy experto pero creo que podre ayudarte 🙂
    Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.