Άγνωστο πρόσθετο php. Δημιουργούμε ένα ειδικό πρόσθετο λειτουργιών WordPress. Γιατί ο κώδικας PHP δεν λειτουργεί από προεπιλογή

Το WordPress έχει μια λειτουργία για την εκτέλεση κωδικών HTML που εισάγονται σε στατικές ή αναρτημένες σελίδες, καθώς και μέσω του γραφικού στοιχείου " ΚείμενοΕπιπλέον, μπορεί να διορθώσει λανθασμένο κώδικα HTML.

Αλλά πώς να το κάνουμε Εκτέλεση PHPκώδικα στις σελίδες του ιστολογίου σας για όσους δεν είναι εξοικειωμένοι περιπλοκές της PHPκαι δεν θα μπορέσετε να εισαγάγετε σωστά τον κώδικα PHP σε μια ανάρτηση ή σελίδα χωρίς αυτή τη γνώση;

Χάρη στην ευελιξία του WP, το πρόβλημα μπορεί να λυθεί εγκαθιστώντας την επέκταση Exec-PHP. Χάρη σε αυτό το πρόσθετο, ο κώδικας php σας εισάγεται σε μια σελίδα ή μια ανάρτηση ιστολογίου Επεξεργαστής HTML, θα εκτελεστεί. Επιπλέον, το πρόσθετο μπορεί να εκτελέσει κώδικα PHP σε widget κειμένου. Για όσους πρέπει να εγκαταστήσουν κώδικα PHP στην πλαϊνή γραμμή ή στο υποσέλιδο του ιστολογίου, είναι κατάλληλο ένα πιο ελαφρύ πρόσθετο.

Εγκατάσταση και ρύθμιση παραμέτρων Exec-PHP.

  1. Κατεβάστε τελευταία έκδοσηπροσθήκη από τη σελίδα του συγγραφέα είναι δυνατή.
  2. Εγκαταστήστε και ενεργοποιήστε το πρόσθετο.

Εάν στις ρυθμίσεις του plugin ΕπιλογέςΕκτελεστ- PHP δεν θα καταργήσετε την επιλογή του προεπιλεγμένου πλαισίου ελέγχου " ΕκτέλεσηPHPκώδικας σε widget κειμένου "τότε ο κώδικας θα εκτελεστεί στο γραφικό στοιχείο του WordPress" Κείμενο".

Στη συνέχεια μεταβείτε στο ΕπιλογέςΓραφήκαι καταργήστε την επιλογή " WordPressπρέπει να διορθώσει το λάθοςHTMLκωδικός αυτόματα ".

Αυτά είναι όλα. Ο κώδικας php σας θα εκτελεστεί επίσης στο widget" Κείμενο" και σε μια σελίδα ή ανάρτηση ιστολογίου όπου κι αν την επικολλήσετε.

Εισαγωγή κώδικα PHP σε μια σελίδαενημερώθηκε: 24 Δεκεμβρίου 2016 από: Ρομάν Βαχόφσκι

8 απαντήσεις

Μπορείτε να χρησιμοποιήσετε το πρότυπο Observer. Ένας απλός λειτουργικός τρόπος για να το πετύχετε αυτό:

Συμπέρασμα:

Αυτή είναι η CRAZY εφαρμογή μου 4 + 5 = 9 4 * 5 = 20

Σημειώσεις:

Σε αυτό το παράδειγμα πηγαίος κώδικαςπρέπει να δηλώσετε όλα τα πρόσθετά σας πριν από τον πραγματικό πηγαίο κώδικα που θέλετε να επεκτείνετε. Έχω συμπεριλάβει ένα παράδειγμα του τρόπου χειρισμού μιας ή περισσότερων τιμών που μεταβιβάζονται στην προσθήκη. Το πιο δύσκολο μέρος αυτού είναι η σύνταξη της πραγματικής τεκμηρίωσης που παραθέτει ποια ορίσματα μεταβιβάζονται σε κάθε άγκιστρο.

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

Λυπούμαστε, φαίνεται ότι αντικαθίστανται οι κάτω παύλες Αντικείμενα HTMLΧαμήλωση τιμής? Μπορώ να δημοσιεύσω ξανά αυτόν τον κώδικα μόλις διορθωθεί αυτό το σφάλμα.

Επεξεργασία: Δεν πειράζει, εμφανίζεται μόνο όταν κάνετε επεξεργασία

Ας υποθέσουμε λοιπόν ότι δεν χρειάζεστε το μοτίβο του Observer επειδή απαιτεί να αλλάξετε μεθόδους κλάσης για να χειριστείτε την εργασία ακρόασης και θέλετε κάτι γενικό. Και ας υποθέσουμε ότι δεν θέλετε να χρησιμοποιήσετε την κληρονομικότητα επέκτασης επειδή μπορεί να κληρονομείτε ήδη την κλάση σας από κάποια άλλη κλάση. Θα ήταν υπέροχο να έχουμε γενική μέθοδοςκάνουν οποιαδήποτε κατηγορία συνδεσιμότητα χωρίς ιδιαίτερη προσπάθεια? Δείτε πώς:

_Class = get_class(&$RefObject); $this->_RefObject = $RefObject; ) δημόσια συνάρτηση __set($sProperty,$mixed) ( $sPlugin = $this->_Class . "_" . $sProperty . "_setEvent"; if (is_callable($sPlugin)) ($mixed = call_user_func_array($sPlugin, $ mixed); ) $this->_RefObject->$sProperty = $mixed; ) δημόσια συνάρτηση __get($sProperty) ( $asItems = (πίνακας) $this->_RefObject; $mixed = $asItems[$sProperty]; $sPlugin = $this->_Class . "_" . $sProperty . "_getEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) return $mixed; ) δημόσια συνάρτηση __call($ sMethod,$mixed) ( $sPlugin = $this->_Class . "_" . $sMethod . "_beforeEvent"; if (is_callable($sPlugin)) ( $mixed = call_user_func_array($sPlugin, $mixed); ) εάν ( $mixed != "BLOCK_EVENT") ( call_user_func_array(array(&$this->_RefObject, $sMethod), $mixed); $sPlugin = $this->_Class . "_" . $sMethod . "_afterEvent"; εάν ( is_callable($sPlugin)) ( call_user_func_array($sPlugin, $mixed); ) ) ) ) //τελική κλάση Κλάση προσθηκών Pluggable extends Pluggable ( ) //τελική κλάση Pluggable ////////////// ////// // ΜΕΡΟΣ 2 //////////////////// class Dog ( public $Name = ""; δημόσια συνάρτηση bark(&$sHow) ( echo "$sHow
\n"; ) δημόσια συνάρτηση sayName() ( echo "
\nΤο όνομά μου είναι: " . $this->Name ."
\n"; ) ) //τελική κατηγορία Dog $Dog = new Dog(); /////////////////// // ΜΕΡΟΣ 3 /////// ///////////// $PDog = νέο Pluggable($Dog); συνάρτηση Dog_bark_beforeEvent(&$mixed) ( $mixed = "Woof"; // Παράκαμψη λέγοντας "meow" με "Woof" / /$mixed = "BLOCK_EVENT"; // εάν θέλετε να αποκλείσετε το συμβάν, επιστρέψτε $mixed; ) συνάρτηση Dog_bark_afterEvent(&$mixed) ( echo $mixed; // εμφάνιση της παράκαμψης ) συνάρτηση Dog_Name_setEvent(&$mixed) ( $mixed = "Coco"; // αντικατάσταση του "Fido" με "Coco" return $mixed; ) συνάρτηση Dog_Name_getEvent(&$mixed) ( $mixed = "Different"; // αντικατάσταση του "Coco" με "Different" return $mixed; ) /////////////////// // ΜΕΡΟΣ 4 /////////////////// $PDog-> Όνομα = "Fido"; $PDog->Bark("meow"); $PDog->SayName(); echo "Το νέο μου όνομα είναι: " . $PDog->Name;

Το πρώτο μέρος είναι αυτό που μπορείτε να ενεργοποιήσετε με μια κλήση request_once() στην κορυφή του σεναρίου PHP. Φορτώνει τάξεις για να κάνει κάτι με δυνατότητα σύνδεσης.

Στο μέρος 2 όπου φορτώνουμε την τάξη. Σημείωση. Δεν χρειάστηκε να κάνω κάτι ιδιαίτερο για την τάξη, κάτι που διαφέρει σημαντικά από το μοτίβο του Observer.

Στο Μέρος 3, όπου θα αλλάξουμε την κλάση μας σε "προσθήκη" (δηλ. υποστήριξη προσθηκών που μας επιτρέπουν να παρακάμψουμε μεθόδους και ιδιότητες κλάσης). Έτσι, για παράδειγμα, εάν έχετε μια εφαρμογή Ιστού, μπορεί να έχετε ένα μητρώο προσθηκών και μπορείτε να ενεργοποιήσετε προσθήκες εδώ. Σημειώστε επίσης τη συνάρτηση Dog_bark_beforeEvent(). Εάν ορίσω το $mixed = "BLOCK_EVENT" πριν από τη δήλωση επιστροφής, θα αποκλείσει το γάβγισμα του σκύλου και θα αποκλείσει επίσης το Dog_bark_afterEvent επειδή δεν θα υπάρξει κανένα συμβάν.

Στο μέρος 4, αυτός είναι ο κανονικός κωδικός λειτουργίας, αλλά σημειώστε ότι αυτό που μπορεί να πιστεύετε ότι δεν θα λειτουργήσει είναι πώς λειτουργεί. Για παράδειγμα, ο σκύλος δεν ανακοινώνει το όνομά του ως "Fido", αλλά ως "Coco". Ο σκύλος δεν λέει «νιαούρισμα» αλλά «ουφ». Και όταν θέλετε να ψάξετε αργότερα το όνομα του σκύλου, θα διαπιστώσετε ότι είναι "Διάφορα" και όχι "Κόκο". Όλες αυτές οι παρακάμψεις εισήχθησαν στο Μέρος 3.

Πως λειτουργεί, λοιπόν? Λοιπόν, ας αποκλείσουμε το eval() (που όλοι λένε ότι είναι "κακό") και ας αποκλείσουμε ότι αυτό δεν είναι πρότυπο του Observer. Έτσι, ο τρόπος που λειτουργεί αυτό είναι με μια κρυφή κενή κλάση που ονομάζεται Pluggable που δεν περιέχει τις μεθόδους και τις ιδιότητες που χρησιμοποιούνται από την κλάση Dog. Έτσι, καθώς συμβαίνει αυτό, θα αναπτυχθούν για εμάς μαγικές μέθοδοι. Γι' αυτό στα μέρη 3 και 4 δεσμευόμαστε με το αντικείμενο που προέρχεται από την κλάση Pluggable, παρά με την ίδια την κλάση Dog. Αντίθετα, αφήνουμε την κλάση Plugin να «αγγίξει» το αντικείμενο Dog για εμάς. (Αν αυτό είναι κάποιο σχέδιο που δεν γνωρίζω - παρακαλώ ενημερώστε με.)

Η μέθοδος hook and listener είναι η πιο συχνά χρησιμοποιούμενη, αλλά υπάρχουν και άλλα πράγματα που μπορείτε να κάνετε. Ανάλογα με το μέγεθος της αίτησής σας και το ποιος θέλει να δει τον κώδικα (θα είναι σενάριο FOSS ή κάτι εσωτερικό) θα επηρεάσει σε μεγάλο βαθμό τον τρόπο με τον οποίο θέλετε να επιτρέπετε τα πρόσθετα.

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

1 να kdeloach από μένα.

Εδώ είναι η προσέγγιση που χρησιμοποίησα, η οποία είναι μια προσπάθεια αντιγραφής από τον μηχανισμό σημάτων/θυρίδων του Qt, ένα είδος μοτίβου Observer. Τα αντικείμενα μπορούν να εκπέμπουν σήματα. Κάθε σήμα έχει ένα αναγνωριστικό στο σύστημα - αποτελείται από ένα αναγνωριστικό + ένα αντικείμενο αποστολής. Κάθε σήμα μπορεί να συνδεθεί με δέκτες, οι οποίοι είναι απλώς "καλούμενοι". Χρησιμοποιείτε μια κατηγορία διαύλου για να μεταβιβάσετε σήματα σε οποιονδήποτε ενδιαφέρεται να τα λάβει Όταν συμβαίνει κάτι, στέλνετε ένα σήμα. Παρακάτω είναι ένα παράδειγμα και παράδειγμα εφαρμογής

Σύνδεση(); ?>

Πιστεύω ότι ο ευκολότερος τρόπος είναι να ακολουθήσετε τη συμβουλή του Jeff και να ρίξετε μια ματιά στον υπάρχοντα κώδικα. Δοκιμάστε να δείτε το Wordpress, το Drupal, το Joomla και άλλα γνωστά PHP CMS για να δείτε πώς είναι τα API τους. Με αυτόν τον τρόπο, μπορεί ακόμη και να πάρετε ιδέες που ίσως δεν είχατε σκεφτεί πριν για να κάνετε τα πράγματα λίγο πιο πυκνά.

Μια πιο άμεση απάντηση θα ήταν να γράψω κοινόχρηστα αρχεία, το οποίο θα συμπεριλάμβαναν στο αρχείο συμπερίληψης για να εξασφαλίσουν ευκολία στη χρήση. Αυτό θα κατηγοριοποιηθεί και ΔΕΝ παρέχεται σε ένα μοναδικό αρχείο "hooks.php" MAASSIVE. Να είστε προσεκτικοί, γιατί αυτό που τελικά συμβαίνει είναι ότι τα αρχεία που περιλαμβάνουν καταλήγουν να έχουν όλο και περισσότερες εξαρτήσεις και λειτουργικότητα. Προσπαθήστε να περιορίσετε τις εξαρτήσεις API. I.E. λιγότερα αρχείαγια να τα ενεργοποιήσετε.

Χαιρετισμούς, φίλοι. Σήμερα θα καταλάβουμε πώς να κάνουμε οποιονδήποτε κώδικα PHP να λειτουργεί σε widget, άρθρα και σε σελίδες WordPress. Από προεπιλογή, μια τέτοια λειτουργία δεν είναι διαθέσιμη σε αυτό το CMS και το μέγιστο στο οποίο μπορεί να βασιστεί ένας χρήστης είναι Υλοποίηση HTMLκώδικας.

Γιατί ο κώδικας PHP δεν λειτουργεί από προεπιλογή

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

Επομένως, η εργασία με την PHP επαφίεται σε προγραμματιστές ή άτομα λίγο πολύ προχωρημένα σε αυτό το θέμα - τυχόν σενάρια εκτελούνται απευθείας στα αρχεία.

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

Ανάλογα με τον βαθμό επικινδυνότητας, θα χώριζα όλη αυτή την κατάσταση σε 3 επίπεδα:

  1. Το να αφήσετε τα πάντα όπως σκόπευαν οι προγραμματιστές είναι δύσκολο να βλάψετε τον ιστότοπο με ασφάλεια, κατά λάθος ή εσκεμμένα.
  2. Να επιτρέπεται η εκτέλεση PHP σε widget – μέσο επίπεδοκίνδυνος, μόνο ο διαχειριστής του ιστότοπου έχει πρόσβαση.
  3. Η χρήση κώδικα παντού είναι επικίνδυνη, καθώς οποιοσδήποτε επιτρέπεται να επεξεργάζεται άρθρα και σελίδες (συντονιστές, συντάκτες) μπορεί να διαχειριστεί τον ιστότοπο.

Γιατί χρειάζεστε την PHP σε widget;

Το ερώτημα είναι ατομικό, αφού τα πάντα μπορούν να υλοποιηθούν χρησιμοποιώντας αυτήν τη γλώσσα προγραμματισμού. Προσωπικά, μου ζητήθηκε να γράψω αυτήν την ανάρτηση μετά από παραγγελία ενός πελάτη του οποίου τον ιστότοπο δημιουργώ αυτήν τη στιγμή. Ήταν απαραίτητο να εμφανιστεί στην πλαϊνή γραμμή σε ξεχωριστό widget μια λίστα ειδήσεων από μια κατηγορία - "Ειδήσεις". Τα τυπικά γραφικά στοιχεία του WordPress δεν διαθέτουν αυτήν τη δυνατότητα.

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

Γενικά, επιτρέποντας στην PHP να εκτελεστεί, μπορούμε να λύσουμε 2 προβλήματα:

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

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

Πρόσθετα PHP σε widget

Πλεονέκτημα των προσθηκών: Όταν αλλάζετε θέμα Σχεδιασμός WordPressΗ λειτουργικότητα των λειτουργιών που προστέθηκαν στο πρότυπο δεν διακόπτεται· όλα συνεχίζουν να λειτουργούν χωρίς να απαιτείται η παρέμβαση του webmaster. Τα άγκιστρα που προστίθενται στο πρότυπο κατά την αλλαγή του θέματος θα πρέπει να μεταφερθούν στο νέο με μη αυτόματο τρόπο.

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

Γραφικό στοιχείο κώδικα PHP

Χρησιμοποιώ αυτό το πρόσθετο στην εργασία μου εδώ και πολύ καιρό· προσθέτει στη λίστα των διαθέσιμων γραφικών στοιχείων, παρόμοια με ένα κανονικό κείμενο, με δυνατότητα επεξεργασίας μόνο PHP εκτός από κείμενο και HTML.

Το PHP Code Widget υπάρχει στο επίσημο αποθετήριο του WordPress και μπορεί να βρεθεί εύκολα με το όνομα. Πώς να εγκαταστήσετε τέτοια πρόσθετα.

Δεν απαιτούνται ρυθμίσεις, το γραφικό στοιχείο θα εμφανιστεί στη λίστα αμέσως μετά την εγκατάσταση και την ενεργοποίηση της προσθήκης. Σύρετε το "PHP Code" στην πλαϊνή γραμμή και προσθέστε οποιοδήποτε σενάριο εκεί.

PHP σε γραφικό στοιχείο WordPress χωρίς πρόσθετο

Σε αυτή την περίπτωση, χρειαζόμαστε ένα άγκιστρο που θα αντικατασταθεί τυπική λειτουργία, παρέχοντας εργασία κείμενο wordpress widget με λειτουργία που επιτρέπει την επεξεργασία της PHP.

Αυτό το άγκιστρο προστίθεται στο αρχείο functions.php του τρέχοντος θέματος (στο τέλος πριν από την αγκύλη κλεισίματος;>). Μετά από αυτό, δεν εμφανίζονται νέες επιλογές γραφικών στοιχείων, όπως συμβαίνει με το πρόσθετο, Κώδικες PHPξεκινήστε να εργάζεστε σε τυπικό κείμενο.

Κωδικός έτοιμος:

add_filter("widget_text"," text_html_php_widget ",100); συνάρτηση text_html_php_widget($text) ( if(strpos($text,"".$text); $text = ob_get_contents(); ob_end_clean(); ) επιστροφή $text; )

add_filter("widget_text", "text_html_php_widget", 100);

συνάρτηση text_html_php_widget ($text) (

if (strpos($text, "

Ob_start();

Eval(" ?> ". $text ) ;

$text = ob_get_contents();

ob_end_clean();

επιστροφή $text ;

Η πρώτη γραμμή είναι ένα φίλτρο που αντικαθιστά την τυπική συνάρτηση γραφικού στοιχείου κειμένου με μια νέα κάθε φορά που ονομάζεται - text_html_php_widget και, στη συνέχεια, υπάρχει μια περιγραφή της ίδιας της νέας συνάρτησης.

Γιατί κώδικας PHP σε άρθρα και αναρτήσεις WordPress

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

Αλλά ακόμα και στις αναρτήσεις υπάρχει ανάγκη χρήσης σεναρίων. Πλέον κοινό παράδειγμα– αυτό είναι το αποτέλεσμα ενός χάρτη ιστότοπου χωρίς πρόσθετο. Είναι αλήθεια ότι μπορείτε να χρησιμοποιήσετε μια άλλη τεχνική για τον χάρτη - δημιουργήστε ένα ειδικό πρότυπο σελίδας (αυτό είναι ένα ξεχωριστό θέμα).

Κάποτε χρειάστηκα έξοδο PHP για τον ακόλουθο σκοπό:

Έκανα μια ιστοσελίδα βίντεο. Τα επεισόδια της σειράς εμφανίζονταν σε playlist ανά σεζόν και κάτω από κάθε playlist της σεζόν ήταν απαραίτητο να εμφανιστεί μια λίστα επεισοδίων με έναν σύνδεσμο προς τη σελίδα σας. Μοιάζει με χάρτη τοποθεσίας, μόνο πιο περίπλοκο - το συμπέρασμα έπρεπε να εξαχθεί από λίστες μεμονωμένων ενοτήτων. Ήταν δυνατή η μη αυτόματη εισαγωγή κάθε συνδέσμου χρησιμοποιώντας κώδικα HTML, αλλά υπάρχουν αρκετές εκατοντάδες επεισόδια και η διαδικασία είναι κουραστική. Επιπλέον, εάν εμφανιζόταν μια νέα σειρά, ένας σύνδεσμος σε αυτήν θα έπρεπε να προστεθεί χειροκίνητα - άβολο. Έτσι αποφάσισα να χρησιμοποιήσω συναρτήσεις PHP για υλοποίηση.

Πρόσθετο για εκτέλεση PHP σε περιεχόμενο Exec-PHP

Παρά το γεγονός ότι αυτό το πρόσθετο δεν έχει ενημερωθεί εδώ και 7 χρόνια, κάνει τη δουλειά του τέλεια. Και το επέλεξα για έναν λόγο - δεν χρησιμοποιεί συντομότερους κωδικούς όπως οι ανταγωνιστές του, αλλά σας επιτρέπει να το εισάγετε σε αναρτήσεις Κώδικας WordPress V καθαρή μορφή, ξεκινώντας με .

Το πρόσθετο Exec-PHP βρίσκεται στο αποθετήριο και εγκαθίσταται μέσω του μενού στον πίνακα διαχείρισης του κινητήρα.

Από τις ρυθμίσεις, υπάρχει μόνο μία - άδεια/απαγόρευση εκτέλεσης κώδικα σε ένα γραφικό στοιχείο κειμένου, δεν υπάρχει επιλογή απενεργοποίησης της εργασίας σε αναρτήσεις και σε σελίδες, εάν πρέπει να το αφαιρέσετε, απενεργοποιήστε το πρόσθετο.

Για να εισαγάγετε κώδικα PHP σε ένα άρθρο, πρέπει να μεταφραστεί Λειτουργία HTML(Καρτέλα Κείμενο). Οπτική λειτουργία, πιθανότατα ο κώδικας θα είναι κατεστραμμένος.

Εκτέλεση κώδικα PHP σε άρθρα WordPress χωρίς πρόσθετο

Κατ' αναλογία με τα γραφικά στοιχεία, μπορούμε να αντικαταστήσουμε το πρόσθετο με ειδική λειτουργία, επιτρέποντας την εκτέλεση Σενάρια PHPστο περιεχόμενο. Δυστυχώς, δεν μπόρεσα να βρω μια επιλογή στην οποία ο κώδικας θα λειτουργούσε αυτόματα όπως στην περίπτωση ενός πρόσθετου, αντιδρώντας σε ετικέτες. Απαιτεί τη χρήση συντόμου κωδικού. Οι γνώσεις μου για την PHP δεν ήταν αρκετές για να τη γράψω εγώ απαιτούμενη λειτουργία, οπότε θα το δώσω όπως είναι. Η εργασία με έναν σύντομο κωδικό έχει σημαντικό μειονέκτημα, που περιπλέκει τη δουλειά, θα μιλήσω για αυτό παρακάτω.

Πώς να χρησιμοποιήσετε την παρακάτω λειτουργία

  1. Το επικολλάμε στο αρχείο functions.php του θέματος.
  2. Στη σωστή θέση στο άρθρο εισάγουμε την κατασκευή - εκτελέσιμο κώδικα χωρίς

Λειτουργία:

/* Εκτέλεση php σε άρθρα και σελίδες του WordPress: κωδικός */ συνάρτηση start_php($matches)( eval("ob_start();".$matches."$inline_execute_output = ob_get_contents();ob_end_clean();"); επιστροφή $inline_execute_output ; ) συνάρτηση inline_php($content)( $content = preg_replace_callback("/\((.|\n)*?)\[\/startphp\]/", "start_php", $content); $content = preg_replace( "/\((.|\n)*?)\[\/startphp\]/", "$1", $content); επιστροφή $content; ) add_filter("the_content", "inline_php");

/* Εκτέλεση php σε άρθρα και σελίδες WordPress: κώδικας */

συνάρτηση start_php ($ matches) (

eval ("ob_start();" . $matches [1] . "$inline_execute_output = ob_get_contents();ob_end_clean();") ;

επιστροφή $inline_execute_output ;

συνάρτηση inline_php ($content) (

$content = preg_replace_callback ( "/\((.|\n)*?)\[\/startphp\]/", "start_php" , $content );

$content = preg_replace ( "/\((.|\n)*?)\[\/startphp\]/", "$1" , $content );

επιστροφή $περιεχομένου ;

add_filter ("the_content" , "inline_php" );

Ελάττωμα

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

σωστά

Echo "Έτσι θα λειτουργήσει"?

[startphp]

ηχώ «Έτσι θα λειτουργήσει»;

[/startphp]

Λανθασμένος

Έκδοση 7 Μαΐου PHPκυκλοφόρησε το πρόσφατο 2015. Νέος γύροςστην ανάπτυξη αυτής της γλώσσας προγραμματισμού έχει φέρει πολλές ευκαιρίες για όλους όσους χρησιμοποιούν PHP. Ανάμεσα στα πλεονεκτήματα νέα έκδοσηπρέπει να τονιστεί η ταχύτητα. Έτσι, σύμφωνα με τους προγραμματιστές, η ταχύτητα των σεναρίων είναι PHP 7, σε σύγκριση με το ΠΡΟΗΓΟΥΜΕΝΕΣ ΕΚΔΟΣΕΙΣ, έχει σχεδόν διπλασιαστεί. Από αυτή την άποψη, πολλοί ιδιοκτήτες τοποθεσιών που έχουν εγκαταστήσει παλαιότερες εκδόσεις PHP, θέλετε να μεταβείτε σε νέο.

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

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

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

Πρόσθετο PHP Compatibility Checker

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

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

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

Αυτό είναι το κύριο αρχείο στο δικό σας Θέμα WordPress. Βρίσκεται στο /wp-content/themes/(όνομα του θέματός σας εδώ)/functions.php.
Ορίζει σημαντικές ιδιότητες του θέματος, προσαρμόζει τα άγκιστρα, εμφάνισηκαι τη λειτουργικότητά του, και προσθέτει επίσης μερικές από τις λειτουργίες που χρειάζεστε. Αυτό το αρχείο λαμβάνεται κάθε φορά που ανοίγετε κάποιο Σελίδες WordPress, ώστε να μπορείτε να το χρησιμοποιήσετε για να αλλάξετε οποιοδήποτε στοιχείο του ιστότοπου. Από αυτή την άποψη, πολλές συμβουλές a la " πώς να αλλάξετε κάτι στο WordPress χωρίς πρόσθετα ” συχνά σχετίζονται συγκεκριμένα με την πραγματοποίηση αλλαγών στο functions.php, αντί να δημιουργήσετε ένα ξεχωριστό πρόσθετο για αυτήν τη λειτουργία ή να χρησιμοποιήσετε μια έτοιμη λύση. Αυτό συχνά οδηγεί σε πολλές πληροφορίεςΑυτό το αρχείο, ο κώδικας γίνεται δύσκολο να αναλυθεί και οι διορθώσεις γίνονται ακόμη πιο δύσκολες. Αλλά αυτό δεν είναι το πιο επικίνδυνο πράγμα. Το πιο επικίνδυνο είναι αυτό Όταν αλλάζετε το ενεργό θέμα, ορισμένες ή όλες οι απαραίτητες λειτουργίες του ιστότοπου θα εξαφανιστούν.

Ποια είναι η διαφορά μεταξύ του functions.php και ενός plugin;

Τίποτα. Στον πυρήνα του, το functions.php είναι ένα είδος καθολικής μη απενεργοποιημένης προσθήκης που συνδέεται με το τρέχον θέμα. Μπορείτε να δείτε πώς συνδέεται στο WordPress στο wp-settings.php. Όπως φαίνεται από τον πηγαίο κώδικα, φορτώνεται μετά από όλα τα πρόσθετα, ωστόσο, αυτό δεν παρέχει κανένα μειονέκτημα ή πλεονέκτημα, εκτός ίσως από τη δυνατότητα να παρακάμψετε κάτι στα συνδεδεμένα πρόσθετα. Αυτό επίσης δεν θα επηρεάσει την ταχύτητα εκτέλεσης του κώδικα. Επηρεάζεται μόνο το περιεχόμενο των προσθηκών και του functions.php. Επομένως, να είστε προσεκτικοί όταν επιλέγετε ενεργά πρόσθετα για το θέμα σας και να απορρίψετε τα περιττά που δεν σας χρησιμεύουν ελάχιστα, τότε μπορείτε να κάνετε τον ιστότοπό σας ευκολότερο και να επιταχύνετε τη λειτουργία του.

Πότε να χρησιμοποιήσετε τις λειτουργίες.php

Ακολουθήστε αυτόν τον κανόνα: εάν η λειτουργικότητα σχετίζεται άμεσα με το τρέχον θέμα, αλλά όχι με τη λειτουργία του ιστότοπου, γράψτε τη στο functions.php.

Για παράδειγμα, θα μπορούσε να είναι

  • Ρύθμιση μικρογραφιών
  • Ρύθμιση μεγεθών πλαϊνής γραμμής
  • Ρύθμιση θέσεων για γραφικά στοιχεία
  • Δήλωση θέσεων κάτω από το μενού πλοήγησης
  • Ρυθμίσεις θέματος
  • Πρόσθετες δυνατότητες του θέματός σας

Πότε να αποφύγετε τη χρήση του Functions.php

Εάν η λειτουργικότητα πρέπει να λειτουργεί ακόμα και όταν αλλάξει το ενεργό θέμα, θα πρέπει να φροντίσετε να το μετακινήσετε σε ξεχωριστό πρόσθετο.
Αυτό μπορεί να περιλαμβάνει:

  • Προσδιορισμός μετρητών επισκεψιμότητας (Google Analytics, Yandex.Metrika, Liveinternet)
  • Ρύθμιση πρόσθετης λειτουργικότητας διαχειριστή (για παράδειγμα)
  • Διαμόρφωση πηγαίου κώδικα()
  • Καθορισμός συντομεύσεων
  • Εγγραφή

Οι λίστες είναι ελλιπείς, μπορείτε να προσδιορίσετε μόνοι σας το περιεχόμενό τους.

Πού να καταθέσετε αυτόν τον κωδικόαν όχι στο functions.php; Μπορείτε να γράψετε ειδικά πρόσθετα για αυτά, ωστόσο, υπάρχει πιο ενδιαφέρον και πιο απλός τρόπος.

mu-plugins ως εναλλακτική λύση για τις λειτουργίες.php

Επισκεφθείτε μας στο σύγχρονες εκδόσειςΤο WordPress από το WordPress MU (Multi-User) έχει μια ενδιαφέρουσα λειτουργία που ονομάζεται MU Plugins. Η ουσία του ήταν η εξής. Ο διαχειριστής του WordPress MU χρειαζόταν μερικές φορές να ορίσει πρόσθετα για ένα ολόκληρο δίκτυο τοποθεσιών. Τακτική λειτουργικότηταΑυτό δεν μπορούσε να επιτευχθεί, έτσι εισήγαγαν μια ειδική ενότητα: /wp-content/mu-plugins/, όπου ορίστηκαν. Ένα άλλο ενδιαφέρον πράγμα είναι ότι τα αρχεία πρόσθετων από αυτόν τον κατάλογο φορτώνονται πριν από όλα τα άλλα, γεγονός που καθιστά δυνατό τον προκαθορισμό ορισμένων σταθερών ή ρυθμίσεων.
Αργότερα, το WPMU καταργήθηκε, ο κώδικάς του ενσωματώθηκε στο κύριο ιστολόγιο και τώρα κάθε WordPress μπορεί να χρησιμοποιήσει τη λειτουργία MU-plugins, η οποία πλέον σημαίνει Πρέπει να χρησιμοποιηθεί, δηλαδή υποχρεωτική για χρήση.

Πώς να χρησιμοποιήσετε τα mu-plugins

Πρώτα πρέπει να δημιουργήσετε μια ειδική ενότητα /wp-content/mu-plugins/
Τοποθετούμε τα απαραίτητα αρχεία plugin σε αυτό. Σε αντίθεση με τα κανονικά πρόσθετα, δεν υπάρχει ανάγκη διατήρησης ειδικής σύνταξης και η λειτουργικότητα μπορεί να δηλωθεί απευθείας

Εδώ, για παράδειγμα, έχει δημιουργηθεί ένα αρχείο με κωδικό μετρητή παρουσιών.
Μέσα σε αυτό το αρχείο μοιάζει με αυτό

// ...Αντί για αυτήν τη γραμμή, εισαγάγετε τον κωδικό μετρητή...

Στον πίνακα διαχείρισης θα μοιάζει Απαιτείται