Αναζήτηση και αντικατάσταση στη βάση δεδομένων του WordPress
Το WordPress δεν αποθηκεύει τη διεύθυνση του ιστότοπού σας σε ένα μόνο σημείο. Βρίσκεται στις ρυθμίσεις, αλλά και αυτούσια μέσα στα άρθρα σας, στις εικόνες και στις ρυθμίσεις θεμάτων, plugins και widgets. Αν αλλάξετε τη διεύθυνση, πρέπει επομένως να την αντικαταστήσετε σε ολόκληρη τη βάση δεδομένων. Εδώ θα δείτε πώς γίνεται αυτό με ασφάλεια και γιατί μια απλή εντολή SQL μπορεί να χαλάσει τον ιστότοπό σας.
Πότε το χρειάζεστε;
- Ο ιστότοπός σας λειτουργούσε σε http και τώρα λειτουργεί σε https, και βλέπετε μικτό περιεχόμενο (μια σελίδα σε https που φορτώνει στοιχεία μέσω http). Δείτε επίσης Δεν εμφανίζεται λουκέτο ή «μη ασφαλής»: επίλυση μικτού περιεχομένου.
- Μεταφέρετε τον ιστότοπό σας σε άλλο domain ή από μια προσωρινή διεύθυνση στο πραγματικό σας domain.
- Έχετε δημιουργήσει χειροκίνητα ένα αντίγραφο σε άλλη διεύθυνση, για παράδειγμα έναν δοκιμαστικό ιστότοπο.
Αν κλωνοποιείτε έναν ιστότοπο με το Installatron ή το Website Manager, οι διευθύνσεις στο αντίγραφο προσαρμόζονται αυτόματα. Δείτε Κλωνοποίηση και δημιουργία δοκιμαστικού περιβάλλοντος (staging). Αν απλώς μεταφέρεστε σε άλλο hosting με το ίδιο domain, δεν χρειάζεται να αλλάξει τίποτα.
Γιατί όχι ένα απλό SQL REPLACE;
Στο phpMyAdmin μπορείτε να αντικαταστήσετε όλα τα κείμενα με μία εντολή SQL. Μην το κάνετε για διευθύνσεις. Πολλές ρυθμίσεις αποθηκεύονται σειριοποιημένες (serialized): η PHP καταγράφει μαζί το μήκος κάθε κειμένου. Αυτό μοιάζει κάπως έτσι:
s:27:"http://example.com/logo.png";
Το s:27 σημαίνει: ακολουθεί ένα κείμενο 27 χαρακτήρων. Αν το αλλάξετε σε https://, το κείμενο έχει πλέον 28 χαρακτήρες, αλλά εξακολουθεί να γράφει 27. Τότε η PHP δεν μπορεί πλέον να διαβάσει την τιμή και η ρύθμιση χάνεται αθόρυβα. Μπορεί για παράδειγμα να δείτε ένα κενό μενού, ένα λογότυπο που εξαφανίστηκε ή widgets που λείπουν. Γι' αυτό χρησιμοποιήστε ένα εργαλείο που ενημερώνει αυτά τα μήκη.
Πρώτα ένα αντίγραφο ασφαλείας
Η αναζήτηση και αντικατάσταση εφαρμόζεται αμέσως και δεν υπάρχει κάδος ανακύκλωσης. Κάντε πρώτα εξαγωγή της βάσης δεδομένων σας, δείτε Εξαγωγή βάσης δεδομένων, ή δημιουργήστε με ένα κλικ ένα επιπλέον αντίγραφο ασφαλείας στο WebOké Backups, δείτε WebOké Backups: προβολή, επαναφορά ή λήψη αντιγράφου ασφαλείας.
Τρόπος 1: WP-CLI στο Terminal ή μέσω SSH
Το WP-CLI είναι το επίσημο εργαλείο γραμμής εντολών του WordPress. Σε εμάς το χρησιμοποιείτε ως την εντολή wp στο Terminal του DirectAdmin ή μέσω SSH. Είναι διαθέσιμο μόνο στα πακέτα με SSH. Ποια πακέτα είναι αυτά, θα το βρείτε στο Terminal στον browser σας.
- Ανοίξτε το Terminal και μεταβείτε στον φάκελο του WordPress:
cd domains/example.com/public_html - Δείτε πρώτα τι θα άλλαζε, χωρίς να τροποποιηθεί τίποτα:
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
Θα δείτε ανά πίνακα πόσες αντικαταστάσεις θα γίνονταν. - Αν όλα είναι σωστά, εκτελέστε την ίδια εντολή χωρίς
--dry-run.
Μερικές επιλογές στην εντολή:
- Χωρίς πρόσθετη επιλογή, το WP-CLI λειτουργεί στους πίνακες που γνωρίζει το WordPress. Αν ένα plugin χρησιμοποιεί δικούς του πίνακες με το ίδιο πρόθεμα (για παράδειγμα
wp_), προσθέστε--all-tables-with-prefix. Η επιλογή--all-tablesεπηρεάζει όλους τους πίνακες της βάσης δεδομένων, ακόμη και εκείνους ενός άλλου ιστότοπου που τυχαίνει να βρίσκεται εκεί. - Το
--skip-columns=guidαφήνει ανέγγιχτη τη στήληguidμε τα μόνιμα αναγνωριστικά των άρθρων. Το WordPress συνιστά να μην την αλλάζετε ποτέ, αλλιώς οι αναγνώστες ροών (feed readers) εμφανίζουν ξανά παλιά άρθρα ως νέα. - Αν κάτι πάει στραβά με σύνθετες ρυθμίσεις, το
--preciseλειτουργεί πιο αργά αλλά πιο διεξοδικά.
Τρόπος 2: ένα plugin
Αν δεν έχετε Terminal ή SSH, χρησιμοποιήστε ένα plugin αναζήτησης και αντικατάστασης που υποστηρίζει σειριοποιημένα δεδομένα. Υπάρχουν αρκετά στον κατάλογο plugins του wordpress.org. Κατά την επιλογή, διαβάστε την περιγραφή: πρέπει να αναφέρει ότι επεξεργάζεται σωστά τα σειριοποιημένα δεδομένα. Και εδώ χρησιμοποιήστε πρώτα τη δοκιμαστική λειτουργία, αν το plugin τη διαθέτει, και διαγράψτε το plugin όταν τελειώσετε. Δείτε επίσης Επιλογή, αξιολόγηση και εκκαθάριση plugins του WordPress.
http:// ή https:// μπροστά. Αν αντικαταστήσετε μόνο το example.com, θα αλλάξετε επίσης διευθύνσεις email όπως info@example.com και άλλα κείμενα που περιέχουν το όνομα. Προσέξτε επίσης την κάθετο στο τέλος: αν αντικαταστήσετε το https://example.com/ με το https://example.net, οι διευθύνσεις θα κολλήσουν μεταξύ τους.Μόνο η διεύθυνση του WordPress και η διεύθυνση του ιστότοπου;
Δεν μπορείτε πλέον να μπείτε στη διαχείριση μετά από μια αλλαγή, επειδή το WordPress σας ανακατευθύνει σε λάθος διεύθυνση; Τότε προσαρμόστε πρώτα μόνο τις γραμμές siteurl και home στον πίνακα wp_options (το πρόθεμα wp_ μπορεί να διαφέρει στη δική σας περίπτωση). Πρόκειται για απλά κείμενα, τα οποία μπορείτε να αλλάξετε στο phpMyAdmin. Πώς γίνεται αυτό, θα το βρείτε στο Άνοιγμα και χρήση του phpMyAdmin. Στη συνέχεια, ολοκληρώστε τα υπόλοιπα με το WP-CLI ή με ένα plugin.
Μετά την ολοκλήρωση
- Αδειάστε την cache του plugin cache και του browser σας.
- Αν οι σελίδες εμφανίζουν σφάλμα 404, πατήστε μία φορά αποθήκευση στις Ρυθμίσεις > Μόνιμοι σύνδεσμοι. Δείτε Ο ιστότοπός μου δεν λειτουργεί μετά το ανέβασμα ή τη μεταφορά.
- Ελέγξτε μερικές σελίδες, το μενού σας, το λογότυπό σας και μια φόρμα. Πατήστε F12 και ελέγξτε στην κονσόλα αν υπάρχουν ακόμη μηνύματα για μικτό περιεχόμενο.
Περισσότερα
- wp search-replace στο developer.wordpress.org (στα Αγγλικά)
- Χειροκίνητη μεταφορά του WordPress: αρχεία, βάση δεδομένων και wp-config.php
Θέλετε να μάθετε περισσότερα; Παρακολουθήστε το δωρεάν μάθημα WordPress, ενότητα 3.2 www, ανακατεύθυνση και μικτό περιεχόμενο ή ενότητα 9.5 Μεταφορά ιστότοπου WordPress.
