it-swarm.com.de

Wie bearbeite ich kanonische URLs in SQL?

Ich wurde beauftragt, die kanonischen URLs (rel = "canonical" im Kopf) von ungefähr 600 Posts auf der Site eines Kunden zu bearbeiten. Nicht alle Posts verwenden dieselbe kanonische URL. Auch diese 301 oder 302 sind nicht. Mir wurde gesagt, dass ich kein Plugin verwenden soll, da ich jeden Beitrag einzeln bearbeiten müsste. Dies sind die allgemeinen Schritte, die ich unternehmen möchte:

  1. Erstellen Sie eine entsprechende Sicherung der mySQL-Datenbank in phpMyAdmin.
  2. Laden Sie eine CSV-Datei der Tabelle mit den kanonischen URLs herunter (mit phpMyAdmin-Export).
  3. Erstellen Sie eine neue CSV-Datei, die die Post-ID und die neue kanonische URL (und ein bisschen mehr Magie) verwendet.
  4. Importieren Sie die neue csv (in ihrem korrigierten Format mit LibreOffice) über ein Plugin namens Really Simple CSV, das die neuen URLs in die Datenbank schreibt.

Dies ist das Tutorial, das ich für diese Schritte folge .

Meine Fragen sind: Mit phpMyAdmin, welche Tabelle wird zur Zeit verwendet, um diese URLs zu speichern, und wie heißen sie genau? Und hat jemand diese Art von Bearbeitung schon einmal gemacht?

Die Site befindet sich derzeit in WordPress 3.9.x (es liegt außerhalb unseres Arbeitsbereichs, die Site auf eine neuere Version zu aktualisieren.)

Hilfe bitte!

2
jtorres

Das Herunterladen und Hochladen von CSVs ist eine schwierige Aufgabe, die Sie dazu zwingt, eine Reihe von Schritten manuell auszuführen, die für menschliche Fehler (und Tippfehler) anfällig sind. Mein Vorschlag wäre, etwas zu tun, das Sie lokal in einer lokalen Kopie Ihrer DB testen können. Schritte zum folgen:

  1. Erstellen Sie ein Datenbank-Dump mit dem Tool mysqldump und verwenden Sie scp, um es lokal zu kopieren
  2. Rufen Sie eine lokale WP Installation auf
  3. Installieren Sie WP CLI , den WP Befehlszeilen-Runner, lokal
  4. Führen Sie wp post update mit den erforderlichen Befehlen lokal aus
  5. Prüfung
  6. Speichern Sie Ihre Live-Datenbank, indem Sie sie umbenennen
  7. Laden Sie Ihre lokale Kopie der Datenbank auf Ihren Staging-Server hoch
  8. Nochmal testen
  9. Machen Sie aus Ihrer angepassten Datenbank Ihre Live-Datenbank

Stellen Sie sicher, dass Sie eine Zeit haben, in der niemand mit der Datenbank spielt (schalten Sie Ihre Site in den Wartungsmodus!).

Hinweise:

A) Wenn Sie die IP-Adresse und den Port Ihres MySQL-Servers kennen, können Sie sich direkt mit diesem verbinden und den Dump auf Ihren Computer herunterladen, ohne SSH in Remote zu übertragen:

mysqldump -P3306  -h127.0.0.1 -uroot -pYourPassWord databasename > ./dbdumps

Oben wird es in einem Unterordner Ihres aktuellen Verzeichnisses (pwd) namens dbdumps gespeichert. Sie sollten es vorne erstellen.

B) Vorausgesetzt, Sie haben Bash verfügbar (Kommandozeile - sh ist immer noch ausreichend, wenn Sie es nicht haben), können Sie so etwas wie das folgende Skript verwenden. Fügen Sie es einer Datei mit dem Namen convert.sh hinzu. Angenommen, Sie haben WP CLI lokal installiert (oder Ihren Vagrant-Computer, Docker-Container, unabhängig davon, welche Entwicklungsumgebung Sie lokal verwenden):

#!/usr/bin/env bash
for id in $(wp post list --field=ID); 
do
    wp post update $id --post_name=foobar
done

Da Sie diese Konvertierung für Ihre Posts nicht detailliert beschrieben haben, müssen Sie im obigen Beispiel eine Möglichkeit finden, foobar anzupassen. Es gibt Dutzende von Stackoverflow-Antworten auf das Thema tag: bash , die Ihnen helfen sollen. Wie üblich sed für die Rettung - gibt es nichts auf der Welt, das nicht mit awk UND sed in einem Shell-Skript behoben werden kann.

Sie können das Shell-Skript wie folgt von Ihrem Terminal aus ausführen:

sh convert.sh

Probieren Sie es einfach aus, scheitern Sie, spülen und wiederholen.

Ich habe das größtenteils aus dem Kopf geschrieben, also musst du es testen. Machen Sie lieber eine Kopie Ihrer lokalen Datenbank, damit Sie sie wieder in den Papierkorb werfen können.

2
kaiser