Limpieza de links erróneos: codificando un PHP

Construimos un pequeño programa para conectarnos a una base de datos de WordPress externamente. El propósito es, tal vez, eliminar un gran número de posibles links erróneos incompatibles con el SEO.

Tengo un archivo CSV con 12.200 filas y 39 columnas. No me pregunten cómo se generó, solamente sé que el culpable de tal engendro es mi buen amigo Gustavo Arizpe 😉 . Ese intratable fichero contiene todos los errores de Blogpocket.com, que después de 12 años son unos cuantos los links rotos y otras lindezas lo que guardamos ahí.

Además de quedarme con la boca abierta por un rato, lo primero que pensé fue «¿Y ahora qué?». El bueno de Gustavo me envió el archivo como el que envía un dardo envenenado. Lo primero que me dijo fue que cargara el archivo en Google Docs. Se quedó tan tranquilo. Pero Google Docs no solo se rió de mí sino que me dio una patada en salva sea la parte. Yo no dormí esa noche 😛 .

A la mañana siguiente, volví a abrir el archivo, con la esperanza de que todo hubiese sido una pesadilla, pero allí estaban las 574.800 y pico celdas, relucientes, vivitas y coleando.

El asunto de los links rotos es un problema que muchos blogs veteranos poseemos, pero a Google no le gustan. Existen muchos plugins de WordPress para, supuestamente, resolver el problema. Pero no se fíen, yo lo he intentado y lo único que he logrado es introducir más basura en el blog: los links han sido sustituido por URLs extrañas.

Así que solo se me ocurrió una cosa: arremangarme y codificar un poquito de PHP para sustituir en la base de datos todas las llamadas a URLs erróneas por una página del blog que indique que existe un error en dicha URL. Cada columna del csv requerirá un tratamiento específico pero, por lo menos, será viable.

La primera columna titulada «Overly-Dynamic URL» corresponde a URLs del tipo «https://www.blogpocket.com/archivo-extendido/?arch=posts0409&articulo=verpermalink&id=200405301». Esas son llamadas de mi sistema de blogging, programado por mi, anteriores a la migración de mi blog a WordPress. Así que podemos prescindir de todas ellas, sustituyéndolas por «https://www.blogpocket.com/pagina-error».

El código PHP lo «único» que tiene que hacer es leer un archivo con todas las URLs y, para cada una, encontrar todos los posts en donde se incluya. Después, se debe sustituir allá dónde aparezca por la nueva URL. ¿Fácil, no?

Para que todos podamos entenderlo, lo iré explicando en sucesivos posts. Hoy solo expondré cómo se puede acceder a la base de datos de tu blog de WordPress desde un programa PHP; es decir, uno que escribas en tu ordenador y lo subas a la carpeta raiz, en la que se encuentra instalado tu blog. Como un plugin, pero sin estar dentro de la instalación de WordPress 😉 .

[php]
<?php
$con = mysql_connect("localhost","XXX","YYY");
if (!$con)
{
die(‘Error de conexion: ‘ . mysql_error());
}
else
{
echo "conexion ok";
mysql_select_db("AAA", $con);
}
?>
[/php]

Este programita tan sencillo nos servirá de base para poder «limpiar» la base de datos de errores SEO. En él se utiliza la función mysql_connect, que está obsoleta a partir de PHP 5.5.0, pero que funciona, de momento (en caso contrario habría que utilizar la función mysqli_connect()). Lo que hace es abrir una conexión al servidor MySQL, por lo que es necesario proporcionar el usuario (XXX) y la password (YYY) del mismo. Sustituye esos valores (XXX e YYY) por los tuyos.

El resultado de la llamada a mysql_connect es un identificador de enlace de MySQL, en caso de éxito, o FALSE en caso de error. El identificador de enlace (que se guarda en la variable $con) se emplea, en caso favorable («conexión ok») para conectarte a una base de datos concreta «AAA» con la función mysql_select_db. Sustituye AAA por el nombre de la base de datos a la que te quieres conectar.

Lo que sigue es para los principiantes.

El signo de admiración (cierre) es un operador que se utiliza para convertir en falso el valor de la variable $con. Es lo mismo que preguntar por la negación de un valor: si no se consigue el identificador de enlace, ejecutar la sentencia die que imprime un mensaje mediante la función mysql_error y termina el script actual.

La estructura «If-else» nos permite ejecutar un conjunto de instrucciones en caso de cumplirse un valor y, en caso contrario, otro. Los conjuntos de instrucciones se engloban entre los caracteres «{» y «}» (para el caso de la sentencia «die» no haría falta porque solo queremos ejecutar una).

Los scripts PHP van precedidos de «<?php» y se finalizan con «?>».

Las funciones que, en su llamada, no llevan parámetros (valores que se necesitan para su funcionamiento) se ponen con «()», por ejemplo: mysql_error().

Para asignar el valor de una variable a otra se utiliza el signo «=». El valor de la variable que está a la derecha del signo «=» se introduce en la variable que está a la izquierda. Por ejemplo: «$con = mysql_connect(«localhost»,»XXX»,»YYY»);». En este caso, la llamada a la función mysql_connect hace las veces de una variable porque al finalizar la función, se obtiene un resultado de salida (el identificador de enlace o el valor FALSE).

Todas las instrucciones se separan, en PHP, con «;», excepto las estructuras como «If-else». Las constantes (valores concretos) deben ir entre comillas, como el nombre de usuario, por ej. «XXX».

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Ver más

  • Responsable: Antonio Cambronero.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a SiteGround que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ir al contenido