Ο καλύτερος τρόπος για να επιτρέψετε πρόσθετα για μια εφαρμογή PHP. Εισαγωγή κώδικα PHP στο WordPress μέσω γραφικών στοιχείων Retreat plugin php

Η 7η έκδοση της PHP κυκλοφόρησε το πρόσφατο 2015. Ένας νέος γύρος στην ανάπτυξη αυτής της γλώσσας προγραμματισμού έχει φέρει πολλές ευκαιρίες για όλους όσους χρησιμοποιούν PHP. Μεταξύ των πλεονεκτημάτων της νέας έκδοσης, θα πρέπει να τονιστεί η ταχύτητα. Έτσι, σύμφωνα με τους προγραμματιστές, η ταχύτητα των σεναρίων στην PHP 7, σε σύγκριση με τις προηγούμενες εκδόσεις, έχει σχεδόν διπλασιαστεί. Από αυτή την άποψη, πολλοί ιδιοκτήτες ιστοτόπων που έχουν εγκαταστήσει παλαιότερες εκδόσεις της PHP θέλουν να μεταβούν στη νέα.

Γιατί να ελέγξετε για συμβατότητα;

Θα πρέπει να σημειωθεί ότι πριν αλλάξετε την έκδοση PHP σε νεότερη και ταχύτερη στον πίνακα ελέγχου της φιλοξενίας σας, πρέπει να ελέγξετε τον ιστότοπο του WordPress για συμβατότητα με αυτόν, δηλαδή θέματα και πρόσθετα. Αυτή η ανάγκη προκύπτει επειδή συνήθως σε νέες εκδόσεις λογισμικού προστίθενται κάποιες λειτουργίες και κάποιες παύουν να υπάρχουν εντελώς. Εάν ένα πρόσθετο ή ένα θέμα χρησιμοποιεί λειτουργίες ή μεθόδους που δεν υπάρχουν στη νέα έκδοση, τότε αυτό αποτελεί ένδειξη σφάλματος, το οποίο μπορεί να διαταράξει τη λειτουργία του ιστότοπου στο σύνολό του.

Πώς να ελέγξετε για συμβατότητα με την PHP 7.0; Πρόσθετο PHP Compatibility Checker

Το πρόσθετο PHP Compatibility Checker σάς επιτρέπει να σαρώσετε ολόκληρο τον ιστότοπο και να υποδείξετε ποια από τα στοιχεία του (θέματα, πρόσθετα) δεν είναι συμβατά με την επιλεγμένη έκδοση της PHP. Πρώτα πρέπει να το εγκαταστήσετε και να το ενεργοποιήσετε και μετά να μεταβείτε στον πίνακα διαχείρισης Εργαλεία -> Συμβατότητα PHP.

Όπως μπορείτε να δείτε, το πρόσθετο προσφέρει πολύ σαφείς ρυθμίσεις. Για να ξεκινήσετε τον έλεγχο, πρέπει να επιλέξετε την έκδοση PHP με την οποία θέλετε να ελέγξετε τον ιστότοπο για συμβατότητα (μπλοκ έκδοσης PHP). Μια βολική λειτουργία του πρόσθετου είναι να επιλέγει την κατάσταση των στοιχείων που ελέγχονται. Υπάρχουν δύο επιλογές για να διαλέξετε: είτε ελέγξτε ανάμεσα σε ενεργά θέματα και προσθήκες είτε σε ανενεργά (πεδίο Προσθήκη / Κατάσταση θέματος). Για να ξεκινήσετε τη σάρωση, κάντε ξανά κλικ στο κουμπί Σάρωση τοποθεσίας ξανά.

Το αποτέλεσμα της δοκιμής μπορεί επίσης να ληφθεί σε αρχείο κειμένου κάνοντας κλικ στο κουμπί Λήψη αναφοράς.

Όλοι όσοι είναι εξοικειωμένοι με το WordPress έχουν ακούσει για το αρχείο θέματος (πρότυπο) functions.php. Ωστόσο, δεν καταλαβαίνουν όλοι καλά τον σκοπό του, βλέποντάς το μόνο ως αρχείο που αποθηκεύει διάφορες λειτουργίες της PHP. Στο Διαδίκτυο, όπως και στον ιστότοπό μου, συχνά προτείνεται η προσθήκη κώδικα PHP σε αυτό το αρχείο. Ωστόσο, δεν θα λειτουργήσει κάθε κώδικας για αυτό το αρχείο. Όχι γιατί δεν θα λειτουργήσει, αλλά γιατί δεν ταιριάζει στη λογική της χρήσης.

Επίσης, κατά την επεξεργασία του functions.php, οι αρχάριοι κάνουν λάθη εξαιτίας των οποίων ο ιστότοπος σταματά να λειτουργεί.

Σε αυτό το άρθρο θα προσπαθήσω να εξετάσω όλα αυτά τα σημεία: πότε να χρησιμοποιήσετε το functions.php και πότε είναι καλύτερο να μην το κάνετε, ποια σφάλματα μπορεί να προκύψουν κατά την επεξεργασία του functions.php.

Χαρακτηριστικά functions.php

Το functions.php βρίσκεται στο φάκελο θεμάτων και φορτώνεται κάθε φορά, κατά την προβολή του εξωτερικού τμήματος του ιστότοπου, στον πίνακα διαχείρισης, ακόμη και κατά τη διάρκεια αιτημάτων AJAX. Δεν υπάρχει περίπτωση να μην συμπεριληφθεί το functions.php και αυτό ανοίγει μεγάλες ευκαιρίες για προγραμματιστές.

Για παράδειγμα, ο ακόλουθος κώδικας που εισάγεται στο αρχείο functions.php του θέματος θα επεκτείνει τις δυνατότητες του θέματος ενεργοποιώντας την υποστήριξη για μικρογραφίες αναρτήσεων:

Add_action("after_setup_theme", "wp_kama_theme_setup"); συνάρτηση wp_kama_theme_setup())( // Υποστήριξη μικρογραφιών add_theme_support("post-thumbnails"); )

Ένα άλλο παράδειγμα, ο κώδικας θα αντικαταστήσει το κείμενο στο υποσέλιδο του πίνακα διαχείρισης του WordPress με δεδομένα σχετικά με τον αριθμό των αιτημάτων βάσης δεδομένων, τον χρόνο δημιουργίας σελίδας και τη χρήση μνήμης:

## Δεδομένα σχετικά με τον αριθμό των αιτημάτων στη βάση δεδομένων στον πίνακα διαχείρισης add_filter("admin_footer_text", "wp_usage"); // στον πίνακα διαχείρισης add_filter("wp_footer", "wp_usage"); // στη συνάρτηση του ιστότοπου wp_usage())( echo sprintf(__("SQL: %d σε %s sec. %s MB", "km"), get_num_queries(), timer_stop(0, 3), round(memory_get_peak_usage () /1024/1024, 2)); )

functions.php έναντι πρόσθετων

- "Τα πρόσθετα λειτουργούν πιο αργά από τον κώδικα στο αρχείο functions.php", λένε οι αδαείς - δεν είναι έτσι!

Θεωρητικά, η εισαγωγή κώδικα στο functions.php είναι το ίδιο με την εγκατάσταση ενός πρόσθετου, αλλά δεν είναι το ίδιο πράγμα. Άλλωστε, όταν αλλάξουμε το θέμα, θα πάρουμε ένα εντελώς διαφορετικό functions.php και όλες οι αλλαγές που έγιναν θα χαθούν, αλλά το πρόσθετο θα παραμείνει, όσο και να αλλάξει το θέμα. Για αυτούς τους λόγους, πρέπει να ανατρέξουμε στο αρχείο functions.php. Εάν η προστιθέμενη λειτουργικότητα δεν σχετίζεται μόνο με το θέμα, αλλά και με τον ιστότοπο συνολικά, τότε θα πρέπει να σκεφτείτε να το συνδέσετε ως πρόσθετο.

Το δεύτερο παράδειγμα παραπάνω είναι "Δεδομένα σχετικά με τον αριθμό των ερωτημάτων στη βάση δεδομένων στο υποσέλιδο του πίνακα διαχείρισης". Λογικά δεν είναι κατάλληλο για χρήση στο αρχείο functions.php. Γιατί αν αλλάξουμε το πρότυπο, θα χάσουμε αυτή τη λειτουργικότητα, αλλά χρησιμοποιείται στον πίνακα διαχείρισης και είναι απαραίτητη ανεξάρτητα από το θέμα που χρησιμοποιείται.

Ας το αφαιρέσουμε λοιπόν από το functions.php και ας το κάνουμε plugin - είναι εύκολο!

Για να δημιουργήσετε ένα πρόσθετο, πρέπει να δημιουργήσετε ένα αρχείο με τον παρακάτω κώδικα (το όνομα του αρχείου μπορεί να είναι οτιδήποτε), να το προσθέσετε στον κατάλογο της προσθήκης wp-content/plugins/ και να ενεργοποιήσετε την προσθήκη στον πίνακα διαχείρισης:

. Συνήθως, εάν ο κώδικας που εισάγετε έχει αυτές τις ετικέτες στην αρχή και στο τέλος, τότε πρέπει να αφαιρεθούν. Επίσης, το αρχείο functions.php δεν πρέπει να εμφανίζει κανένα κείμενο (κώδικας HTML ή άλλο περιεχόμενο) στην οθόνη. Η έξοδος κειμένου επιτρέπεται μόνο εντός συναρτήσεων που θα χρησιμοποιηθούν αργότερα στο πρότυπο ή που συνδέονται σε άγκιστρα (δείτε παρακάτω για περισσότερες λεπτομέρειες).

Δεν μπορείτε να επιτρέψετε κανέναν χαρακτήρα πριν από , συμπεριλαμβανομένων αόρατων χαρακτήρων (διακοπές γραμμής), επειδή το functions.php είναι συνδεδεμένο πριν ορίσετε τις κεφαλίδες http (αυτές οι κεφαλίδες μεταφέρουν διάφορα δεδομένα, για παράδειγμα, ότι αυτό είναι ένα έγγραφο html, ότι η κωδικοποίηση utf-8 είναι διαφορετική ). Σύμφωνα με τους κανόνες της PHP, το περιεχόμενο θα πρέπει να εμφανίζεται στην οθόνη μετά την αποστολή των κεφαλίδων. Και όλα έξω είναι το περιεχόμενο - το κείμενο που εμφανίζεται στην οθόνη, ακόμα και ο αόρατος \n χαρακτήρας. Επομένως, αυτό το κείμενο προκαλεί σφάλμα.

Για να αποφύγετε λάθη, λάβετε υπόψη 4 σημεία: #1 Σωστή ένθεση

Για παράδειγμα, είχαμε αυτή τη δομή:

......εδώ είναι ο κωδικός......... ?>

Σωστά ως εξής:

#2 Χωρίς αλλαγές γραμμής, κενά, κείμενο πριν

Αυτός ο κωδικός θα προκαλέσει ένα σφάλμα:

Αυτό όμως δεν κάνει:

Είναι πιο λογικό να το γράφεις ως εξής:

Συμβαίνει να τοποθετείται μια αλλαγή γραμμής στο τέλος του functions.php και τότε αυτό γίνεται πραγματικό πρόβλημα, επειδή όλα φαίνονται να είναι σωστά, αλλά ο ιστότοπος δεν λειτουργεί. Πραγματικά μετά;> ή πριν υπάρχει κενή γραμμή

Για αυτόν τον λόγο, πολλοί προγραμματιστές αφαιρούν εντελώς την ετικέτα κλεισίματος ?>· αυτό είναι αποδεκτό στην PHP. Συνιστώ να κάνετε πάντα αυτό:

μέσα στις λειτουργίες της PHP

Εάν υπάρχει μια συνάρτηση στο functions.php, τότε μπορούν να χρησιμοποιηθούν ετικέτες μέσα σε αυτήν τη συνάρτηση, για παράδειγμα, για να τονιστεί οπτικά ο κώδικας HTML μέσα στη συνάρτηση:

αυτός είναι ο κώδικας html

Το γεγονός είναι ότι σε αυτήν την περίπτωση η συνάρτηση είναι καταχωρημένη μόνο και δεν εκτελεί καμία ενέργεια. Τα πάντα μέσα σε μια συνάρτηση (μεταξύ ( )) δεν λειτουργούν μέχρι να κληθεί αυτή η συνάρτηση και τέτοιες συναρτήσεις συνήθως καλούνται από ένα πρότυπο ή μέσω φίλτρων, μετά την αποστολή των κεφαλίδων HTTP. Έτσι, σε αυτό το παράδειγμα, μπορούμε να αγνοήσουμε τις αλλαγές γραμμής και να χρησιμοποιήσουμε ?> και