Οδηγός εκτέλεσης μεταφοράς WordPress → Rankbeam
Μια διαδικασία βήμα προς βήμα για την αντικατάσταση ενός συνόλου εργαλείων SEO του WordPress (Yoast ή Rank Math) με το Rankbeam. Από προεπιλογή, οι εισαγωγείς συμπληρώνουν κενά πεδία προορισμού· το --overwrite επιτρέπει ρητά την αντικατάσταση. Οι δοκιμαστικές εκτελέσεις δεν γράφουν τίποτα και η βάση δεδομένων του WordPress παραμένει ανέπαφη. Δημιουργήστε αντίγραφα ασφαλείας της πηγής και του προορισμού πριν από την εισαγωγή.
Αυτός είναι ο πρακτικός συνοδευτικός οδηγός της Μεταφοράς από το WordPress, που τεκμηριώνει αναλυτικά την αντιστοίχιση πεδίων, τον χειρισμό μεταβλητών προτύπων και τα κλειδιά πηγής. Διαβάστε εκείνον για το τι· αυτόν για το πώς, με τη σωστή σειρά.
Τι θα χρειαστείτε
- Core (
rankbeam/laravel-seo) για την εισαγωγή μεταδεδομένων +seo:audit. - Pro (
rankbeam/laravel-seo-pro) μόνο αν μεταφέρετε και ανακατευθύνσεις — ο πίνακαςseo_redirectsείναι λειτουργία του Pro. - Το περιεχόμενό σας ήδη μοντελοποιημένο στο Laravel (π.χ.
App\Models\Post), με το traitHasSEO, και έναν τρόπο αντιστοίχισης ενός slug του WordPress σε μοντέλο (το κλειδί διαδρομής του μοντέλου ή μια στήλη που ορίζετε με--match-by).
Η δομή της μεταφοράς
Οι εγγραφές του WordPress έχουν κλειδί τη διεύθυνση URL / ανάρτηση· οι εγγραφές seo_meta του Rankbeam είναι πολυμορφικές (συνδεδεμένες με μοντέλο Eloquent). Η εισαγωγή αντιστοιχίζει κάθε εγγραφή του WordPress σε ένα από τα μοντέλα σας. Υπάρχουν τρία πιθανά αποτελέσματα και κάθε εκτέλεση αναφέρει την κατανομή τους:
| Αποτέλεσμα | Σημασία | Ενέργεια |
|---|---|---|
| matched | η εγγραφή συνδέθηκε με μοντέλο — γράφτηκε το seo_meta | καμία |
| url-only | η εγγραφή δεν αντιστοιχίστηκε σε μοντέλο (ή δεν δόθηκε --model) | αποφασίστε αν η σελίδα χρειάζεται μοντέλο ή ανακατεύθυνση |
| unmapped | η εγγραφή περιείχε δεδομένα χωρίς θέση στο Core 3 (κυρίως συγγραφέα) | μεταφέρετέ τα στην κατάλληλη θέση (π.χ. σε hook getSEOAuthor()) |
Βήμα 0 — Συνύπαρξη (χωρίς μετάβαση ακόμη)
Θέστε το Rankbeam σε λειτουργία δίπλα στον ενεργό ιστότοπο. Προσθέστε το trait HasSEO στα μοντέλα σας και αποδώστε τις ετικέτες μέσω του facade/directive, αλλά μην αφαιρέσετε ακόμη την εγκατάσταση του WordPress ή το πρόσθετο SEO της. Σε αυτό το σημείο δεν έχει εισαχθεί τίποτα και δεν γίνεται καμία καταστροφική ενέργεια — απλώς επιβεβαιώνετε ότι το νέο σύστημα ξεκινά.
Αν σερβίρετε τη νέα εφαρμογή Laravel και τον παλιό ιστότοπο WordPress από τον ίδιο host κατά τη μετάβαση, κρατήστε τα σε χωριστές διαδρομές μέχρι το Βήμα 5.
Βήμα 1 — Εισαγωγή μεταδεδομένων (πρώτα δοκιμαστική εκτέλεση)
Ξεκινάτε πάντα με --dry-run, που δεν γράφει τίποτα και εμφανίζει την πλήρη αναφορά επαλήθευσης για όσα θα γίνονταν.
# Yoast, from the live WordPress database (configure the connection first)
php artisan seo:import-from yoast \
--connection=wordpress \
--model="App\Models\Post" \
--redirects-csv=storage/app/redirects.csv \
--dry-run
# Rank Math is identical — just swap the source key
php artisan seo:import-from rank-math --connection=wordpress --model="App\Models\Post" --dry-run
# From a CSV export instead of the live DB
php artisan seo:import-from wordpress-csv --file=storage/app/wp-export.csv --model="App\Models\Post" --dry-runΧρήσιμες επιλογές (εκτελέστε php artisan seo:import-from --help για την πλήρη λίστα):
| Επιλογή | Σκοπός |
|---|---|
--model= | το FQCN του μοντέλου προορισμού (επαναλήψιμη επιλογή· οι εισαγωγείς WordPress συνδέουν ένα μοντέλο ανά εκτέλεση — εκτελέστε μία φορά ανά τύπο περιεχομένου) |
--match-by= | η στήλη του μοντέλου με την οποία αντιστοιχίζεται το slug (προεπιλογή: το κλειδί διαδρομής) |
--post-type= | περιορίζει τους αναγνώστες της βάσης σε αυτούς τους τύπους αναρτήσεων (προεπιλογή: post + page) |
--connection= | η σύνδεση βάσης δεδομένων στην οποία βρίσκονται οι πίνακες του WordPress |
--table= | το πρόθεμα πινάκων του WordPress (προεπιλογή: wp_) |
--locale= | η τοπική ρύθμιση για την οποία γράφονται οι εγγραφές seo_meta |
--redirects-csv= | εξάγει επίσης υποψήφιες ανακατευθύνσεις σε αυτό το αρχείο για το Βήμα 3 |
--site-url= | η διεύθυνση URL του παλιού ιστοτόπου, για εξαγωγή διαδρομών από απόλυτες διευθύνσεις URL |
--overwrite | αντικαθιστά υπάρχοντα μη κενά seo_meta (προεπιλογή: συμπλήρωση μόνο κενών πεδίων) |
--limit= | περιορίζει τον αριθμό εγγραφών πηγής (χρήσιμο για ένα πρώτο πέρασμα) |
--json | αναφορά αναγνώσιμη από μηχανή |
Όταν η δοκιμαστική εκτέλεση φαίνεται σωστή, αφαιρέστε το --dry-run για να εφαρμόσετε την εισαγωγή:
php artisan seo:import-from yoast --connection=wordpress --model="App\Models\Post" --redirects-csv=storage/app/redirects.csvΗ εισαγωγή είναι από προεπιλογή ιδιοδύναμη και συμπληρώνει μόνο κενά πεδία. Με αυτές τις προεπιλογές, μπορείτε να την επαναλάβετε με ασφάλεια, χωρίς να αντικατασταθούν μεταδεδομένα που έχετε ήδη επεξεργαστεί στο Rankbeam.
Βήμα 2 — Διαβάστε (και αρχειοθετήστε) την αναφορά επαλήθευσης
Κάθε εκτέλεση εμφανίζει μια Verification report — τους αριθμούς που εγκρίνετε πριν αφαιρέσετε οτιδήποτε. Αποθηκεύστε τη ως μόνιμο τεκμήριο:
php artisan seo:import-from yoast --connection=wordpress --model="App\Models\Post" --json > storage/app/import-report.jsonΤι να ελέγξετε:
- Το matched πρέπει να ισούται με τον αριθμό σελίδων που αναμένετε να έχουν μεταδεδομένα SEO.
- Το url-only είναι η λίστα εργασιών για σελίδες που δεν αντιστοιχίστηκαν σε μοντέλο — αποφασίστε αν καθεμία χρειάζεται μοντέλο, ανακατεύθυνση (Βήμα 3) ή τίποτα.
- Το truncated καταγράφει πεδία που συντομεύτηκαν για να χωρέσουν σε στήλη
seo_meta— ελέγξτε αυτούς τους τίτλους/περιγραφές. - Το unmapped καταγράφει δεδομένα πηγής χωρίς στήλη στο Core 3, αναφέροντας κάθε ξεχωριστή τιμή
author. Οι συγγραφείς δεν αποθηκεύονται ως στήλη (ανήκουν στοgetSEOAuthor()). Η αναφορά υπάρχει για να τους μεταφέρετε συνειδητά στην κατάλληλη θέση, αντί να ανακαλύψετε την απώλεια μήνες αργότερα.
Βήμα 3 — Εισαγωγή ανακατευθύνσεων στο Pro
Ο εισαγωγέας του Core δεν γράφει ποτέ στον seo_redirects (είναι πίνακας του Pro)· σας δίνει ένα CSV με σταθερή δομή και έκδοση (μορφή CSV ανακατευθύνσεων v1: source_path,target_url,status_code,note). Εισαγάγετέ το στο Pro, πρώτα με δοκιμαστική εκτέλεση:
php artisan seo-pro:redirects-import storage/app/redirects.csv --dry-run
php artisan seo-pro:redirects-import storage/app/redirects.csvΚάθε γραμμή επικυρώνεται ακριβώς όπως στη φόρμα ανακατευθύνσεων του Filament: κακοσχηματισμένες γραμμές, μη έγκυροι κωδικοί κατάστασης, μη ασφαλείς εξωτερικοί προορισμοί, διπλότυπες πηγές και κανόνες που θα δημιουργούσαν βρόχο ανακατεύθυνσης παραλείπονται με αιτιολόγηση — δεν γράφονται ποτέ σιωπηρά. Η δοκιμαστική εκτέλεση επικυρώνει ολόκληρο το αρχείο (μαζί με βρόχους και διπλότυπα) και δεν γράφει τίποτα· περάστε --overwrite για να αντικαταστήσετε τον προορισμό ενός υπάρχοντος κανόνα.
Βήμα 4 — Επαλήθευση με seo:audit --strict
Θέστε τον δωρεάν έλεγχο μέσα στη διεργασία ως προϋπόθεση της μεταφοράς. Το --strict τερματίζει με μη μηδενικό κωδικό αν οποιαδήποτε σελίδα έχει πρόβλημα, οπότε λειτουργεί ως πύλη ελέγχου CI/μετάβασης:
php artisan seo:audit --model="App\Models\Post" --strictΟ έλεγχος καλύπτει ελέγχους μοντέλου + resolver (παρουσία και μήκος τίτλου/περιγραφής, εικόνα OG, συγκρούσεις robots, μορφή κανονικής διεύθυνσης URL). Οι έλεγχοι του αποδιδόμενου HTML και των ζωντανών κανονικών προορισμών — καθώς και η βαθμολογία 0–100 — ανήκουν στη σάρωση Pro· εκτελέστε την επίσης αν έχετε Pro. Δείτε τον Δωρεάν έλεγχο SEO.
Έπειτα ελέγξτε δειγματοληπτικά μερικές πραγματικές σελίδες στον browser: δείτε τον πηγαίο κώδικα και επιβεβαιώστε ότι οι ετικέτες <title>, <meta name="description">, canonical, robots και OpenGraph αποδίδουν τις εισαγόμενες τιμές.
Βήμα 5 — Επαλήθευση ΠΡΙΝ αφαιρέσετε το παλιό πακέτο/πίνακα
Μη διαγράψετε τη βάση του WordPress, το πρόσθετο SEO ή το παλιό πακέτο μέχρι να ισχύουν όλα τα παρακάτω:
- [ ] Η εισαγωγή εκτελέστηκε για κάθε τύπο περιεχομένου (ένα
--modelανά εκτέλεση). - [ ] Η αρχειοθετημένη αναφορά επαλήθευσης δείχνει το αναμενόμενο πλήθος matched και καμία απρόσμενη εγγραφή url-only.
- [ ] Κάθε τιμή unmapped author που σας ενδιαφέρει μεταφέρθηκε στην κατάλληλη θέση.
- [ ] Οι ανακατευθύνσεις εισήχθησαν στο Pro (
seo-pro:redirects-import) και μερικές παλιές διευθύνσεις URL πράγματι ανακατευθύνονται με 301 στις νέες. - [ ] Το
php artisan seo:audit --strictτερματίζει με0. - [ ] (Pro) Το
php artisan seo:doctorδεν αναφέρει υπόλοιπο παλιού πίνακαseoούτε σύγκρουσηconfig/seo.php. - [ ] Έγινε δειγματοληπτικός έλεγχος αποδιδόμενων σελίδων στον browser.
Επειδή οι εισαγωγείς, με τις προεπιλεγμένες ρυθμίσεις, συμπληρώνουν μόνο κενά πεδία και είναι ιδιοδύναμοι, μπορείτε να επαναλάβετε το Βήμα 1 με αυτές τις ρυθμίσεις οποτεδήποτε πριν από αυτή την πύλη ελέγχου χωρίς να βλάψετε τα δεδομένα — τα παλιά δεδομένα παραμένουν στο WordPress.
Βήμα 6 — Απόσυρση
Μόνο αφού ολοκληρωθεί επιτυχώς η λίστα ελέγχου του Βήματος 5: θέστε τον ιστότοπο WordPress εκτός λειτουργίας και έπειτα αφαιρέστε τη βάση/τους πίνακές του και το παλιό πακέτο SEO. Κρατήστε αντίγραφο ασφαλείας της βάσης μέχρι να βεβαιωθείτε ότι το νέο σύστημα λειτουργεί σωστά στην παραγωγή.
Επαναφορά
Με την προεπιλεγμένη συμπλήρωση μόνο κενών πεδίων, τα Βήματα 1–4 δεν αντικαθιστούν υπάρχοντα μεταδεδομένα: το seo_meta προσθέτει δεδομένα, οι ανακατευθύνσεις επικυρώνονται και είναι αναστρέψιμες (διαγράψτε τους κανόνες), και τα δεδομένα του WordPress παραμένουν ανέπαφα. Αν επιλέξετε ρητά αντικατάσταση, διατηρήστε το αντίγραφο ασφαλείας του προορισμού για την αναίρεση αυτών των αλλαγών. Η επαναφορά πριν από το Βήμα 6 είναι απλώς «συνεχίστε να σερβίρετε το WordPress»· μετά το Βήμα 6 είναι «επαναφέρετε το αντίγραφο ασφαλείας του WordPress».
Έρχεστε από πακέτο SEO του Laravel (ralphjsmit, artesaos, Spatie); Δείτε τη Μεταφορά από άλλα πακέτα Laravel.