Μετάβαση στο περιεχόμενο
Θέματα

Block theme ή classic theme στο WordPress: η ειλικρινής σύγκριση

Ξεχώρισε ένα block theme από ένα classic σε 30 δευτερόλεπτα, δες τι κοστίζει το καθένα σε συντάκτες και προγραμματιστές, και αποφάσισε αν θα αλλάξεις, αν θα μείνεις ή αν αρκεί να προσθέσεις theme.json.

Δημοσιεύτηκε

Άνοιξε τον φάκελο του θέματός σου. Αν περιέχει έναν φάκελο templates με ένα index.html μέσα, συν ένα theme.json στη ρίζα, έχεις block theme. Αν περιέχει index.php μαζί με αρχεία όπως header.php και footer.php, και η πλαϊνή στήλη διαχείρισης δείχνει Εμφάνιση και μετά Customizer, έχεις classic theme.

Αυτή η μία δομική διαφορά καθορίζει ποιος μπορεί να αλλάξει τι στο site σου, πού αποθηκεύονται αυτές οι αλλαγές, και ποιο μισό του οικοσυστήματος πρόσθετων του WordPress θα συμπεριφερθεί φυσιολογικά.

Η αναγνώριση των 30 δευτερολέπτων

ΈνδειξηClassic themeBlock theme
Βασικό αρχείο προτύπουindex.phptemplates/index.html
Κεφαλίδα και υποσέλιδοheader.php, footer.phpparts/header.html, parts/footer.html
Καθολικές ρυθμίσειςfunctions.phptheme.json (συν προαιρετικά functions.php)
Μενού διαχείρισηςΕμφάνιση > CustomizerΕμφάνιση > Editor
Πού αποθηκεύονται οι αλλαγέςΣε αρχεία στον δίσκοΣτη βάση δεδομένων, ως άρθρα wp_template
Οθόνη widgetΥπάρχειΔεν υπάρχει

Το WordPress αποφασίζει ψάχνοντας για templates/index.html. Ένα θέμα που κυκλοφορεί με theme.json αλλά κρατά τα πρότυπα PHP εξακολουθεί να θεωρείται classic — αυτή η ενδιάμεση κατάσταση είναι συνηθισμένη και έχει όνομα, το βλέπουμε παρακάτω.

Αν έχεις πρόσβαση σε γραμμή εντολών, μία εντολή λύνει το ζήτημα:

wp eval 'var_dump( wp_is_block_theme() );'

Το WP-CLI είναι ο γρηγορότερος έλεγχος σε site που δεν έφτιαξες εσύ, ειδικά όταν κάποιος page builder έχει κρύψει τα συνηθισμένα μενού διαχείρισης.

Τι αλλάζει για όποιον επεξεργάζεται το site

Σε ένα classic theme, η κεφαλίδα, το υποσέλιδο, η πλαϊνή στήλη, τα χρώματα και το λογότυπο βρίσκονται πίσω από τον Customizer, και έχεις μόνο τα χειριστήρια που αποφάσισε να φτιάξει ο δημιουργός του θέματος. Αν δεν καταχώρησε χειριστήριο για το κείμενο πνευματικών δικαιωμάτων στο υποσέλιδο, τότε χειριστήριο δεν υπάρχει. Ή επεξεργάζεσαι ένα αρχείο PHP ή το ανέχεσαι.

Σε ένα block theme, ο Site Editor ανοίγει ολόκληρη τη σελίδα. Κεφαλίδα, υποσέλιδο, ο βρόχος άρθρων, η σελίδα 404, η διάταξη των αποτελεσμάτων αναζήτησης — όλα είναι μπλοκ, όλα επεξεργάσιμα από κάποιον που δεν έχει δει ποτέ PHP. Αυτό είναι το πραγματικό βασικό χαρακτηριστικό, και είναι όντως μεγάλο.

Το κόστος είναι ότι τα πάντα είναι επεξεργάσιμα από κάποιον που δεν έχει δει ποτέ PHP. Ένας πελάτης μπορεί να σβήσει τον τίτλο του site από την κεφαλίδα στις 2 τα ξημερώματα, και δεν υπάρχει ιστορικό εκδόσεων στον δίσκο για να το επαναφέρεις — μόνο οι αναθεωρήσεις του ίδιου του Site Editor. Το κλείδωμα είναι εφικτό με κλείδωμα μπλοκ και με περιορισμό του ποιος φτάνει στον επεξεργαστή, αλλά είναι δουλειά που πρέπει να θυμηθείς να κάνεις.

Δύο μικρότερες απώλειες που πονάνε στην πράξη: τα block theme δεν έχουν οθόνη widget (οι περιοχές widget αντικαθίστανται από τμήματα προτύπων και μπλοκ), και τα κλασικά μενού αντικαθίστανται από το μπλοκ Πλοήγησης, που αποθηκεύει τα στοιχεία του σε ξεχωριστό τύπο περιεχομένου αντί για τη γνώριμη οθόνη Μενού.

Τι αλλάζει για τον προγραμματιστή

Τα classic theme χρησιμοποιούν την ιεραρχία προτύπων PHP. Το WordPress επιλύει ένα αίτημα κατεβαίνοντας μια γνωστή αλυσίδα — single-{post-type}.php, μετά single.php, μετά singular.php, μετά index.php — και το αρχείο σου τρέχει, καλεί το get_header(), τρέχει τον βρόχο και τυπώνει κώδικα που ελέγχεις χαρακτήρα προς χαρακτήρα.

<?php get_header(); ?>
<main class="site-main">
  <?php while ( have_posts() ) : the_post(); ?>
    <h1><?php the_title(); ?></h1>
    <?php the_content(); ?>
  <?php endwhile; ?>
</main>
<?php get_footer(); ?>

Τα block theme χρησιμοποιούν τα ίδια ονόματα ιεραρχίας με κατάληξη .html, αλλά το αρχείο περιέχει κώδικα μπλοκ — HTML με οριοθέτες μπλοκ μέσα σε σχόλια — και δεν υπάρχουν ετικέτες προτύπου:

<!-- wp:template-part {"slug":"header","tagName":"header"} /-->

<!-- wp:group {"tagName":"main"} -->
<main class="wp-block-group">
  <!-- wp:post-title {"level":1} /-->
  <!-- wp:post-content /-->
</main>
<!-- /wp:group -->

<!-- wp:template-part {"slug":"footer","tagName":"footer"} /-->

Τρεις συνέπειες που συναντούν αμέσως οι προγραμματιστές:

Τα get_header() και get_footer() δεν τρέχουν ποτέ. Οτιδήποτε είναι συνδεδεμένο με αυτές τις ενέργειες, σε πρόσθετο ή σε παλιό θυγατρικό θέμα, σιωπηλά δεν κάνει τίποτα. Τα wp_head και wp_footer εξακολουθούν να ενεργοποιούνται, οπότε οι περισσότερες φορτώσεις αρχείων επιβιώνουν, αλλά τα hooks που αφορούν ειδικά την κεφαλίδα όχι.

Η βάση δεδομένων κερδίζει τα αρχεία σου. Τη στιγμή που κάποιος αποθηκεύει ένα πρότυπο στον Site Editor, το WordPress κρατά εκείνη την εκδοχή ως άρθρο wp_template και τη σερβίρει αντί για το αρχείο σου. Μπορείς να επεξεργάζεσαι το αρχείο HTML όλο το απόγευμα και να μη βλέπεις καμία αλλαγή στο site. Καθαρίζοντας την προσαρμογή για εκείνο το πρότυπο επανέρχεται η εκδοχή του αρχείου. Αυτή είναι η πιο συχνή αναφορά «χάλασε το block theme μου», και δεν είναι σφάλμα.

Η μορφοποίηση μετακομίζει στο theme.json. Χρώματα, κλίμακα κενών, τυπογραφία και προεπιλογές ανά μπλοκ δηλώνονται ως δεδομένα αντί για CSS, και το CSS το παράγει το WordPress. Είναι πιο καθαρό και πολύ πιο συνεπές — μέχρι να χρειαστείς κάτι που το σχήμα δεν εκφράζει, οπότε γράφεις έτσι κι αλλιώς CSS και παλεύεις με την εξειδίκευση απέναντι στους παραγόμενους κανόνες.

{
  "version": 3,
  "settings": {
    "color": {
      "palette": [
        { "slug": "brand", "color": "#1a1a1a", "name": "Brand" }
      ]
    }
  }
}

Έλεγξε την τιμή του version σε σχέση με την έκδοση WordPress που τρέχεις — το σχήμα έχει αναθεωρηθεί πάνω από μία φορά, και αν αντιγράψεις έναν αριθμό έκδοσης από παλιό οδηγό, οι ρυθμίσεις σου αγνοούνται στα κρυφά.

Σημείωσε ότι το functions.php δεν εξαφανίζεται. Τα block theme το χρησιμοποιούν ακόμη για φόρτωση αρχείων, καταχώριση εγγραφών add_image_size, προσαρμοσμένους τύπους περιεχομένου και οτιδήποτε άλλο θέλει PHP. Απλώς κάνεις πολύ λιγότερη δουλειά προτύπων εκεί.

Τι κερδίζεις πραγματικά και τι χάνεις πραγματικά

Πηγαίνοντας σε block κερδίζεις: έλεγχο ολόκληρης της σελίδας μέσα από τον επεξεργαστή, σχεδιαστική συνέπεια που την επιβάλλει το theme.json, λιγότερα αρχεία προς συντήρηση, και στυλ που ταιριάζουν ανάμεσα στον επεξεργαστή και στο site πολύ πιο συχνά απ’ ό,τι κατάφεραν ποτέ τα classic theme.

Πηγαίνοντας σε block χάνεις: τον άμεσο έλεγχο του παραγόμενου κώδικα, την απλή προσαρμογή μέσω hooks, τη συμβατότητα με ό,τι προϋποθέτει πρότυπα PHP, και τη σιγουριά ότι η εμφάνιση του site ζει μέσα στο σύστημα ελέγχου εκδόσεων.

Το τελευταίο αξίζει έμφαση. Σε ένα classic theme, το git log σου λέει τι άλλαξε. Σε ένα block theme, ένα σημαντικό κομμάτι της εμφάνισης του site ζει μέσα στη βάση δεδομένων, εκεί όπου η διαδικασία ανεβάσματος δεν κοιτάει καν.

Πότε το classic theme εξακολουθεί να είναι η σωστή απάντηση

  • Το site το τρέχει ένας page builder. Το Elementor, το Divi, το Beaver Builder και παρόμοια εργαλεία αναλαμβάνουν μόνα τους τα πρότυπα. Αν βάλεις από κάτω ένα block theme, προσθέτεις ένα δεύτερο σύστημα προτύπων που δεν κάνει τίποτα.
  • Ο κώδικας HTML πρέπει να είναι ακριβώς αυτός. Ειδικά σχεδιασμένες βιβλιοθήκες στοιχείων, αυστηρός κώδικας προσβασιμότητας, ασυνήθιστες απαιτήσεις δομημένων δεδομένων — αυτά που βγάζουν τα μπλοκ είναι περιορισμένα, και η πάλη μαζί τους κοστίζει περισσότερο από το να γράψεις PHP.
  • Βαριά χρήση προτύπων από πρόσθετα. Πρόσθετα συνδρομών, εκπαίδευσης, καταλόγων και παλαιότερες επεκτάσεις ηλεκτρονικού εμπορίου συχνά κυκλοφορούν με δικά τους πρότυπα PHP. Πολλά έχουν πλέον αντίστοιχα σε μπλοκ· πολλά όχι.
  • Το site είναι τελειωμένο και δουλεύει. Ένα θέμα με πέντε χρόνια συσσωρευμένων προσαρμογών δεν έχει δρόμο αναβάθμισης προς block, μόνο ξαναχτίσιμο. Το «είναι η νεότερη προσέγγιση» δεν είναι επιχειρηματικός λόγος.
  • Κανείς εκτός από εσένα δεν θα το επεξεργαστεί. Το βασικό όφελος του Site Editor είναι ότι δίνει τον έλεγχο σε μη προγραμματιστές. Αν δεν υπάρχουν μη προγραμματιστές, πληρώνεις τα κόστη για ένα όφελος που δεν χρησιμοποιεί κανείς.

Η υβριδική μέση λύση

Ένα classic theme μπορεί να προσθέσει ένα theme.json και να πάρει το σύστημα καθολικών στυλ, τα presets χρωμάτων και κενών και συνεπή μορφοποίηση μέσα στον επεξεργαστή — κρατώντας παράλληλα τα πρότυπα PHP και τον Customizer. Το WordPress δεν το ονομάζει block theme, και ο Site Editor παραμένει μη διαθέσιμος, αλλά παίρνεις το μεγαλύτερο μέρος του οφέλους ενός σχεδιαστικού συστήματος με ελάχιστη δουλειά.

Για ένα υπάρχον site που κατά βάση δουλεύει, αυτή είναι συνήθως η σωστή πρώτη κίνηση. Πρόσθεσε theme.json, όρισε την παλέτα και τα κενά σου, σβήσε το CSS που αντικαθιστά, και δες αν θέλεις ακόμη και τα υπόλοιπα.

FAQ

Ερωτήσεις

Πώς καταλαβαίνω αν το θέμα μου στο WordPress είναι block theme ή classic theme;

Άνοιξε τον φάκελο του θέματος. Ένα block theme έχει φάκελο templates με ένα index.html μέσα και σχεδόν πάντα ένα theme.json στη ρίζα. Ένα classic theme έχει index.php και αρχεία PHP όπως header.php και footer.php. Στον πίνακα διαχείρισης, τα block theme δείχνουν Εμφάνιση και μετά Editor, ενώ τα classic δείχνουν Εμφάνιση και μετά Customizer.

Είναι τα block theme καλύτερα από τα classic theme;

Όχι γενικά. Τα block theme δίνουν σε μη προγραμματιστές πραγματικό έλεγχο σε κάθε κομμάτι της σελίδας και γλιτώνουν πολύ επαναλαμβανόμενο κώδικα PHP. Τα classic theme δίνουν στους προγραμματιστές ακριβή έλεγχο του κώδικα HTML και δουλεύουν με όλη την ιστορία των πρόσθετων, των page builder και των hooks. Η σωστή επιλογή εξαρτάται από το ποιος θα επεξεργάζεται το site μετά την κυκλοφορία του.

Μπορώ να μετατρέψω το classic theme μου σε block theme;

Όχι με ένα πάτημα διακόπτη. Η μετατροπή σημαίνει να ξαναγράψεις κάθε πρότυπο PHP ως κώδικα μπλοκ σε HTML, να μεταφέρεις τα στυλ στο theme.json και να αντικαταστήσεις τις περιοχές widget και τα μενού με μπλοκ. Για ένα βαριά προσαρμοσμένο θέμα αυτό είναι ξαναχτίσιμο, όχι μετάβαση. Μια υβριδική προσέγγιση, δηλαδή να προσθέσεις theme.json στο classic theme σου, είναι συνήθως το φθηνότερο πρώτο βήμα.

Γιατί οι αλλαγές στα αρχεία προτύπων σταμάτησαν να φαίνονται αφού επεξεργάστηκα κάτι στον Site Editor;

Μόλις κάποιος επεξεργαστεί ένα πρότυπο στον Site Editor, το WordPress αποθηκεύει εκείνη την εκδοχή στη βάση δεδομένων ως άρθρο τύπου wp_template, και το αντίγραφο της βάσης κερδίζει έναντι του αρχείου στον δίσκο. Οι αλλαγές σου στα αρχεία αγνοούνται μέχρι να καθαριστούν οι προσαρμογές για εκείνο ακριβώς το πρότυπο. Αυτό ξαφνιάζει σχεδόν κάθε προγραμματιστή στο πρώτο του block theme.

Λειτουργεί ακόμη ένα classic theme στις τρέχουσες εκδόσεις του WordPress;

Ναι. Τα classic theme υποστηρίζονται πλήρως, δεν βγάζουν προειδοποιήσεις κατάργησης και τρέχουν την ίδια ιεραρχία προτύπων PHP που είχαν πάντα. Ο Customizer εξακολουθεί να φορτώνει για αυτά. Η ανάπτυξη του WordPress έχει στραφεί προς τα block theme, οπότε περίμενε ότι τα νέα χαρακτηριστικά του επεξεργαστή θα εμφανίζονται πρώτα εκεί, αλλά τίποτα δεν προγραμματίζεται να σπάσει τα classic theme.