Σπουδαίος! Πραγματοποίηση αλλαγών στα αρχεία προτύπων WooCommerce. Οδηγός προσαρμοσμένων τύπων αναρτήσεων: Δημιουργία, προέλευση και προσαρμοσμένα πεδία Δημιουργία προσαρμοσμένων πεδίων για προσαρμοσμένους τύπους αναρτήσεων

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

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

Αλλά πριν συνεχίσουμε, ας καταλάβουμε τι είναι οι αναρτήσεις χρηστών.

Τι είναι οι προσαρμοσμένοι τύποι αναρτήσεων του WordPress;

Με λίγα λόγια, οι προσαρμοσμένοι τύποι αναρτήσεων του WordPress σάς επιτρέπουν να ταξινομείτε τις αναρτήσεις με βάση το περιεχόμενό τους. Στο WordPress, οι προεπιλεγμένοι τύποι ανάρτησης είναι Δημοσίευση, Σελίδα, Μέσα κ.λπ.

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

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

Στο παραπάνω παράδειγμα, εάν ένας χρήστης μεταβεί στην ενότητα της βάσης δεδομένων ταινιών του ιστότοπού σας, οι αναρτήσεις κριτικών δεν θα περιλαμβάνονται. Εάν ορίσετε τις κατηγορίες "Δράση" και "Ρομαντισμό", για παράδειγμα, οι χρήστες σας θα μπορούν να μεταβούν στην κατηγορία Ταινίες δράσης και να δουν όλες τις κριτικές και τις ταινίες της κατηγορίας.

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

Μπορείτε να αλλάξετε διάφορα κείμενα τίτλου (που ορίζονται χρησιμοποιώντας έναν πίνακα $ετικέτες), όπως μετονομασία Προσθήκη νέας ανάρτησης V Προσθήκη νέας ταινίας. Για παράδειγμα, μπορείτε να μετονομάσετε το κείμενο Επιλεγμένη εικόνα V Προσθήκη αφίσας.

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

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

Συνήθως κάθε πεδίο που δημιουργείτε είναι διαθέσιμο σε οποιονδήποτε τύπο ανάρτησης, επομένως η προσθήκη απαιτεί περιορισμούς σε κάθε πεδίο όπου είναι προσβάσιμη.

Δημιουργία νέων τύπων αναρτήσεων

Όταν δημιουργείτε σημαντικές αλλαγές στο WordPress, μία από τις διαθέσιμες επιλογές υλοποίησης είναι να δημιουργήσετε ένα πρόσθετο. Μπορείτε επίσης να δημιουργήσετε νέους προσαρμοσμένους τύπους αναρτήσεων στο αρχείο λειτουργίες.php. Για αυτόν τον οδηγό εμείς Ας δημιουργήσουμε ένα πρόσθετο και ας συνεχίσουμε να χρησιμοποιούμε το παράδειγμα με τη βάση δεδομένων ταινιών/κριτικών.

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

// Η προσαρμοσμένη συνάρτηση ΠΡΕΠΕΙ να συνδεθεί με το άγκιστρο δράσης init add_action("init", "lc_register_movie_post_type"); // Μια προσαρμοσμένη συνάρτηση που καλεί τη συνάρτηση register_post_type lc_register_movie_post_type() ( // Ορίστε διάφορα κομμάτια κειμένου, $labels χρησιμοποιείται μέσα στον πίνακα $args $labels = array("name" => _x("Movies", "post type general name"), "singular_name" => _x("Movie", "post type singular name"), ...); // Ορίστε διάφορες πληροφορίες σχετικά με τον τύπο ανάρτησης $args = array("labels" => $ labels, "description" => "Ο προσαρμοσμένος τύπος ανάρτησής μου", "public" => true, ... // Καταχωρίστε τον τύπο ανάρτησης ταινίας με όλες τις πληροφορίες που περιέχονται στον πίνακα $arguments register_post_type("movie", $); args)?

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

Δύο παράμετροι για τη συνάρτηση register_post_type()Αυτό:

  1. Όνομα τύπου εγγραφής, έως 20 χαρακτήρες και δεν πρέπει να περιέχει κενά ή κεφαλαία γράμματα
  2. Ένας συσχετικός πίνακας που ονομάζεται $args, το οποίο περιέχει πληροφορίες σχετικά με τον τύπο εγγραφής με τη μορφή ζευγών κλειδιού-τιμής 'κλειδί' => 'τιμή'

Πίνακας $args

Τα πιο συχνά χρησιμοποιούμενα κλειδιά πίνακα $argsφαίνεται παρακάτω, όλα είναι προαιρετικά:

  • ετικέτες- πίνακας πίνακας, το οποίο καθορίζει διαφορετικά κομμάτια κειμένου, για παράδειγμα «Προσθήκη νέα καταχώρηση», μπορεί να μετονομαστεί σε «Προσθήκη νέας ταινίας». Τα κλειδιά για τον πίνακα ετικετών περιγράφονται παρακάτω με επεξηγήσεις.
  • περιγραφή– μια σύντομη και συνοπτική περιγραφή του τύπου εγγραφής, μπορεί να εμφανιστεί σε πρότυπα τύπου, αλλά δεν χρησιμοποιείται πουθενά αλλού.
  • δημόσιο– είναι ο τύπος ανάρτησης ορατός στον συγγραφέα και τους επισκέπτες, η προεπιλεγμένη τιμή είναι FALSE, που σημαίνει ότι δεν εμφανίζεται ούτε στην Κονσόλα διαχειριστή.
  • exclude_from_search– εάν οι εγγραφές αυτού του τύπου θα εμφανίζονται στα κανονικά αποτελέσματα αναζήτησης, η προεπιλεγμένη τιμή είναι αντίθετη από τη δημόσια.
  • publicly_queryable– μπορεί αυτός ο τύπος ανάρτησης να ανακτηθεί χρησιμοποιώντας μια διεύθυνση URL, όπως http://www.mywebsite.com/?post_type=movie, ή σε προηγμένη χρήση μέσω της συνάρτησης query_posts(). Η προεπιλεγμένη τιμή είναι δημόσια.
  • show_ui– εάν οι σύνδεσμοι μενού και ο επεξεργαστής μηνυμάτων είναι συνδεδεμένοι στον πίνακα ελέγχου του διαχειριστή. Η προεπιλεγμένη τιμή είναι δημόσια.
  • show_in_nav_menus– εάν καταχωρήσεις αυτού του τύπου θα προστεθούν στο μενού πλοήγησης που δημιουργήθηκε στη σελίδα Εμφάνιση->Μενού, η προεπιλεγμένη τιμή είναι δημόσια.
  • εμφάνιση_σε_μενού– εάν ο σύνδεσμος τύπου ανάρτησης εμφανίζεται στην πλοήγηση της κονσόλας διαχειριστή. FALSE – κρύβει τον σύνδεσμο. TRUE – προσθέτει τον σύνδεσμο ως νέο σύνδεσμο ανώτατου επιπέδου. Η εισαγωγή μιας γραμμής σάς επιτρέπει να τοποθετήσετε έναν σύνδεσμο μέσα σε έναν υπάρχοντα σύνδεσμο ανώτατου επιπέδου, δηλαδή να εισάγετε παραμέτρους options-general.phpτο τοποθετεί κάτω από το σύνδεσμο Ρυθμίσεις.
  • show_in_admin_bar– θα εμφανιστεί αυτός ο τύπος ανάρτησης πάνω από τη γραμμή διαχειριστή, κάτω από τον σύνδεσμο + Νέο
  • μενού_θέση– θέση νέος σύνδεσμοςστο μενού πλοήγησης της κονσόλας διαχειριστή, το 5 βρίσκεται κάτω από τις αναρτήσεις, το 100 βρίσκεται κάτω από τις Ρυθμίσεις, ολόκληρη η λίστα των θέσεων βρίσκεται στον Κώδικα του WordPress
  • ιεραρχικός– εάν η καταχώρηση μπορεί να αντιστοιχιστεί σε γονικό αρχείο, εάν η τιμή είναι TRUE, τότε ο πίνακας $υποστηρίζειπρέπει να περιέχει την παράμετρο "page-attributes".
  • υποστηρίζει– ενεργοποιεί επιλεκτικά λειτουργίες ανάρτησης όπως: εικόνες, θραύσματα κειμένου, προσαρμοσμένα πεδία κ.λπ. Εάν οριστεί σε FALSE, τότε αντί για πίνακα, απενεργοποιείται το πρόγραμμα επεξεργασίας για αυτόν τον τύπο ανάρτησης - χρήσιμο εάν θέλετε να κλείσετε όλες τις αναρτήσεις αυτού πληκτρολογήστε από την επεξεργασία, αλλά αφήστε τα ορατά (λίστα τιμών πίνακα χρε.)
  • ταξινομίες– μια σειρά ταξινομιών που μπορούν να εφαρμοστούν σε δημοσιεύσεις αυτού του τύπου, οι ταξινομίες πρέπει να είναι ήδη καταχωρημένες - δεν δημιουργούνται από εδώ!
  • έχει_αρχείο– οι αναρτήσεις αυτού του τύπου θα έχουν σελίδες αρχειοθέτησης, η διεύθυνση URL έχει τη δομή μόνιμος σύνδεσμοςκαι το περιγραφικό μέρος της διεύθυνσης URL είναι η παράμετρος 1 της συνάρτησης register_post_types(), δηλαδή το http://www.mywebsite.com/movie_reviews/ θα εμφανίζει όλες τις αναρτήσεις movie_review.
  • query_var– TRUE ή FALSE καθορίζει εάν μια ανάρτηση μπορεί να εμφανιστεί ερωτώντας τη διεύθυνση URL για τον τύπο και το όνομα της ανάρτησης, π.χ. «http://www.mywebsite.com/?» ταινία=η-μήτρα‘. Εάν εισαγάγετε μια γραμμή κειμένου, πρέπει να τοποθετήσετε το κείμενο μετά το χαρακτήρα ? ταινία=η-μήτρα‘.

Συστοιχίες ετικετών

Πρώτο κλειδί στον πίνακα $argsπου ονομάζεται ετικέτεςκαι πρέπει να είναι πίνακας. Καθορίζει διάφορα κομμάτια κειμένου που σχετίζονται με τον τύπο ανάρτησης. Επειδή μπορεί να υπάρχουν πολλά δεδομένα εδώ, είναι καλύτερο να δημιουργήσετε έναν πίνακα που ονομάζεται $ετικέτεςγια την αποθήκευσή τους. Ο παραπάνω κώδικας καθιστά λίγο πιο σαφές τι σημαίνει αυτό.

Ακολουθούν ορισμένα σημαντικά κλειδιά για τον πίνακα ετικετών, όλα προαιρετικά:

  • όνομα– γενικά ονόματα για τον τύπο μηνύματος, για παράδειγμα, ταινίες (ταινίες)
  • singular_name– το όνομα για μια καταχώριση αυτού του τύπου, για παράδειγμα, ταινία (ταινία)
  • προσθεσε νεο– αντικατάσταση του κειμένου «Προσθήκη νέου» με το καθορισμένο κείμενο, για παράδειγμα, «Προσθήκη ταινίας»
  • add_new_item– αντικατάσταση του «Προσθήκη νέας ανάρτησης», για παράδειγμα, με το «Προσθήκη νέας ταινίας»
  • edit_item– αντικατάσταση του «Edit Post», για παράδειγμα, με το «Edit Movie»
  • featured_image– αντικατάσταση της «Επιλεγμένης εικόνας» στο πρόγραμμα επεξεργασίας αναρτήσεων, για παράδειγμα, με την «Αφίσα ταινίας»
  • set_featured_image– αντικατάσταση του «Set Featured Image», για παράδειγμα, με αυτήν την επιλογή «Add Movie Poster»
  • όνομα_μενού– αλλάξτε το κείμενο του συνδέσμου στο ανώτερο επίπεδο, το προεπιλεγμένο κείμενο συνδέσμου είναι το όνομα του κλειδιού

Υποστηρίζει Array

// Ενεργοποίηση συγκεκριμένων δυνατοτήτων στον επεξεργαστή ανάρτησης για τον τύπο της ανάρτησής μου $supports = πίνακας ("τίτλος", "επεξεργαστής", "συγγραφέας", "μικρογραφία"); // Απενεργοποιήστε ΟΛΕΣ τις δυνατότητες του προγράμματος επεξεργασίας αναρτήσεων για τον τύπο ανάρτησής μου $supports = FALSE;

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

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

Ακολουθεί μια λίστα με τις λειτουργίες που μπορείτε να συμπεριλάβετε σε έναν πίνακα $υποστηρίζει:

  • τίτλος
  • συντάκτης
  • συγγραφέας – ΣΗΜΕΙΩΣΗ: αυτό σας επιτρέπει να αλλάξετε τον συγγραφέα της ανάρτησης
  • μικρογραφία (εικονίδιο)
  • απόσπασμα (απόσπασμα κειμένου)
  • trackbacks
  • προσαρμοσμένα πεδία (προσαρμοσμένο πεδίο)
  • σχόλια
  • αναθεωρήσεις (εκδόσεις)
  • σελίδα-χαρακτηριστικά
  • μετα-μορφές (μορφές ανάρτησης)

Δημιουργία προσαρμοσμένου τύπου ανάρτησης WordPress μέσω μιας προσθήκης

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

lc_custom_post_movie()στο άγκιστρο δράσης init add_action("init", "lc_custom_post_movie"); // Η προσαρμοσμένη συνάρτηση για την εγγραφή μιας συνάρτησης τύπου ανάρτησης ταινίας lc_custom_post_movie() ( // Ορίστε τις ετικέτες, αυτή η μεταβλητή χρησιμοποιείται στον πίνακα $args $labels = array("name" => __("Movies"), "singular_name " => __("Ταινία"), "add_new" => __("Προσθήκη νέας ταινίας"), "add_new_item" => __("Προσθήκη νέας ταινίας"), "edit_item" => __("Επεξεργασία ταινίας") , "new_item" => __("Νέα ταινία"), "all_items" => __("Όλες οι ταινίες"), "view_item" => __("Προβολή ταινίας"), "search_items" => __("Αναζήτηση ταινιών" "), "featured_image" => "Αφίσα", "set_featured_image" => "Προσθήκη αφίσας"); // Τα ορίσματα για τον τύπο της ανάρτησής μας, που θα εισαχθούν ως παράμετρος 2 του register_post_type() $args = array("labels" => $labels, "description" => "Διατηρεί τα δεδομένα των ταινιών και ταινιών μας", "public" => true, "menu_position" => 5, "supports" => array("title", "editor", " thumbnail", "excerpt", "comments", "custom-fields"), "has_archive" => true, "show_in_admin_bar" => true, "show_in_nav_menus" => true, "has_archive" => true, "query_var" = > "φιλμ"); ) //Γάντζος lc_custom_post_movie_reviews()στο άγκιστρο δράσης init add_action("init", "lc_custom_post_movie_reviews"); // Η προσαρμοσμένη συνάρτηση για την εγγραφή μιας ανάρτησης κριτικής ταινίας συνάρτηση τύπου lc_custom_post_movie_reviews() ( // Ορίστε τις ετικέτες, αυτή η μεταβλητή χρησιμοποιείται στον πίνακα $args $labels = array("name" => __("Κριτικές ταινιών"), "singular_name" => __("Κριτική ταινίας"), "add_new" => __("Προσθήκη νέας κριτικής ταινίας"), "add_new_item" => __("Προσθήκη νέας κριτικής ταινίας"), "edit_item" => __( "Επεξεργασία κριτικής ταινίας"), "new_item" => __("Νέα κριτική ταινίας"), "all_items" => __("Όλες οι κριτικές ταινιών"), "view_item" => __("Προβολή κριτικών ταινιών"), " search_items" => __("Αναζήτηση κριτικών ταινιών")); // Τα ορίσματα για τον τύπο της ανάρτησής μας, που θα εισαχθούν ως παράμετρος 2 του register_post_type() $args = array("labels" => $labels, "description" = > "Διατηρεί τις κριτικές ταινιών μας", "δημόσιο" => true, "menu_position" => 6, "supports" => πίνακας("τίτλος", "επεξεργαστής", "μικρογραφία", "απόσπασμα", "σχόλια", " προσαρμοσμένα πεδία"), "has_archive" => true, "show_in_admin_bar" => true, "show_in_nav_menus" => true, "has_archive" => true); // Κλήση της πραγματικής συνάρτησης WordPress // Η παράμετρος 1 είναι ένα όνομα για ο τύπος ανάρτησης // ο πίνακας $args πηγαίνει στην παράμετρο 2. register_post_type("review", $args); )

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

Όταν τοποθετείτε το ποντίκι, θα εμφανιστούν τα στοιχεία μενού "Προβολή όλων" και "Προσθήκη νέου", το κείμενο θα αντιστοιχεί σε αυτό που καθορίστηκε στον πίνακα $ετικέτες. Κοιτάξτε στο πρόγραμμα επεξεργασίας όπου έχουν αλλάξει οι σύνδεσμοι.

Περιορίστε προσαρμοσμένα πεδία για δεδομένες εγγραφές

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

get_post_meta()

  • παίρνει 3 παραμέτρους και επιστρέφειαποτέλεσμα
  • η πρώτη παράμετρος είναι το αναγνωριστικό ανάρτησης, μπορείτε να το χρησιμοποιήσετε εδώ $post->IDγια να λάβετε το αναγνωριστικό της καταχώρισης που εμφανίζεται αυτήν τη στιγμή
  • η δεύτερη παράμετρος είναι το όνομα ενός προσαρμοσμένου πεδίου εγγραφής, με διάκριση πεζών-κεφαλαίων
  • η τρίτη παράμετρος είναι τύπου boolean, που ονομάζεται $μονόκαι μπορεί να είναι TRUE (επιστρέφει το αποτέλεσμα ως συμβολοσειρά) ή FALSE (επιστρέφει έναν πίνακα).

ΣΗΜΕΙΩΣΗ:Μπορείτε να δημιουργήσετε πολλά προσαρμοσμένα πεδία με το ίδιο όνομα και διαφορετικές τιμές. Εάν υπάρχουν πολλά πεδία με το ίδιο όνομα, η ρύθμιση FALSE θα επιστρέψει έναν πίνακα από αυτά.

ID, "Box Art", TRUE); if (!empty($movie_box_art)) ( ?>
" alt=" !}">

Από τη λειτουργία get_post_meta()επιστρέφει μια τιμή, μπορείτε να χρησιμοποιήσετε την τιμή σε μια έκφραση υπό όρους για να αλλάξετε την εμφάνιση ανάλογα.

Στο παραπάνω παράδειγμα, ελέγχουμε για να δούμε αν η ταινία περιέχει εξώφυλλο πλαίσιο που της έχει εκχωρηθεί ως προσαρμοσμένο πεδίο. Αν $movie_box_artδεν είναι άδειο, εμφανίζει div και εικόνα.

Εμφάνιση σύνθετων προσαρμοσμένων πεδίων

// Εμφάνιση τιμής πεδίου the_field("FIELD NAME"); // Τιμή πεδίου επιστροφής get_field("ΌΝΟΜΑ FIELD");

Το πρόσθετο Advanced Custom Fields προσφέρει τις δικές του λειτουργίες και συντομότερους κωδικούς για την εμφάνιση πεδίων.

the_field('NAME FIELD');

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

get_field('NAME FIELD');

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

Αυτά είναι τα χαρακτηριστικά που πιθανότατα θα χρειαστείτε. Υπάρχουν πολλές πρόσθετες λειτουργίες και μπορείτε να τις βρείτε στο .

Σύντομοι κωδικοί

Μπορείτε να εμφανίσετε πεδία απευθείας σε μια ανάρτηση χρησιμοποιώντας τον παραπάνω σύντομο κωδικό.

Εμφανίστε έναν προσαρμοσμένο τύπο ανάρτησης στην κύρια σελίδα

// Συνδέστε την προσαρμοσμένη συνάρτησή μας στο hook δράσης pre_get_posts add_action("pre_get_posts", "add_reviews_to_frontpage"); // Αλλαγή της κύριας συνάρτησης ερωτήματος add_reviews_to_frontpage($query) ( if (is_home() && $query->is_main_query()) ( $query->set("post_type", array("post", "movie", "review ")); ) επιστροφή $query;)

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

Η συνάρτηση ελέγχει εάν ο επισκέπτης βρίσκεται στην αρχική σελίδα και εάν το ενεργό αίτημα είναι πρωτεύον που δημιουργείται από το WordPress.

$query->set()παίρνει δύο παραμέτρους:

  • η πρώτη παράμετρος είναι η προτεραιότητα που θέλετε να αλλάξετε, στην περίπτωσή μας αλλάζουμε την προτεραιότητα post_type
  • η δεύτερη παράμετρος είναι ο πίνακας που θέλετε να περάσετε ως τιμή χαρακτηριστικού post_type

Στο παραπάνω παράδειγμα κώδικα, ο πίνακας ξεκινά με «ανάρτηση» - γι' αυτό κάθε ανάρτηση του WordPress είναι τύπου «ανάρτηση» και εξακολουθούμε να θέλουμε να τη συμπεριλάβουμε στην κύρια σελίδα.

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

Η τιμή που εισάγετε πρέπει να ταιριάζει με την παράμετρο 1 της συνάρτησης register_post_type().

συμπέρασμα

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

Λάβετε πολύτιμα σχόλια από τους πελάτες σας δίνοντάς τους την ελευθερία να μοιράζονται ελεύθερα τις εντυπώσεις τους. Αφήστε τους να αξιολογήσουν τα προϊόντα ή/και τις υπηρεσίες σας απευθείας στον ιστότοπό σας. Δείτε παρακάτω τα βασικά χαρακτηριστικά που συνοδεύουν το ηλεκτρονικό μας σύστημα κριτικών.

    Κριτικές & Βαθμολογίες

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

    Πολλαπλές γλώσσες

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

    Επεξεργάσιμα Κριτήρια Αξιολόγησης

    Ανάλογα με τον τύπο της επιχείρησης, οι διαχειριστές του συστήματος ελέγχου μπορούν
    ορίστε διαφορετικά κριτήρια αξιολόγησης που θα εμφανίζονται στη φόρμα front-end.
    Κάθε ένα από αυτά τα κριτήρια βαθμολογείται με 1 έως 5 αστέρια.

    Ειδοποιήσεις μέσω email και SMS

    Ρυθμίστε το ηλεκτρονικό σύστημα αναθεώρησης για αποστολή ειδοποιήσεων μέσω email και SMS όταν δημοσιεύεται μια νέα κριτική. Μπορείτε εύκολα να καθορίσετε ποιοι χρήστες θα λαμβάνουν αυτά τα μηνύματα από το μενού Χρήστες.

    Πολλαπλοί τύποι χρηστών

    Δημιουργήστε απεριόριστους τύπους πελατών ανάλογα με τον κλάδο και τις υπηρεσίες που χρησιμοποιούνται. Οι αξιολογήσεις ξενοδοχείων μπορούν να συμβαδίζουν με τους ακόλουθους τύπους χρηστών: Οικογένεια με παιδιά, Ζευγάρι, Επαγγελματικό ταξίδι κ.λπ. Εμφανίζονται ως ετικέτες στις κριτικές.

    Ανταπόκριση & Ελκυστική

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

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

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

Απάντηση

Με βάση το https://toster.ru/q/276441 Είναι σαφές ότι πολλά εξαρτώνται από το έργο, επομένως αυτή η ανάρτηση θα πρέπει να προσαρμοστεί στην περίπτωσή σας.

* Ασφάλεια:
- Κάθε όρισμα μιας μεθόδου απλού τύπου πρέπει να ελέγχεται για τύπο σε περίπτωση διακομιστή μεσολάβησης και για οριακές τιμές σε περίπτωση επεξεργασίας. Αν κάτι πάει στραβά, γίνεται εξαίρεση. Εάν μια μέθοδος με πολλά ορίσματα αποτελείται από 80% επαλήθευση ορισμάτων, αυτό είναι απολύτως φυσιολογικό))
- Χωρίς trigger_error, μόνο εξαιρέσεις.
- Οι εξαιρέσεις ΠΡΕΠΕΙ να είναι κατανοητές από τον άνθρωπο, όλα τα είδη "Κάτι πήγε στραβά" μπορούν να δοθούν στον χρήστη, αλλά το αρχείο καταγραφής πρέπει να περιέχει μια εξαίρεση με ένα ίχνος στοίβας και μια κατανοητή από τον άνθρωπο περιγραφή του τι πήγε στραβά εκεί.
- Κάθε όρισμα (αντικείμενο) μιας μεθόδου πρέπει να υποδεικνύεται τύπου στην κλάση ή τη διεπαφή της.
- Κατά κανόνα δίνεται αυστηρή επίπληξη για ευάλωτη
- Το @ επιτρέπεται μόνο σε απελπιστικές καταστάσεις, για παράδειγμα τον έλεγχο json_last_error.
- Πριν εργαστείτε με τη βάση δεδομένων, είναι υποχρεωτικός ο έλεγχος των δεδομένων.
- Όχι == και!=. Με το swtich - η μόνη εξαίρεση, ανάλογα με την κατάσταση.
- Εάν η μέθοδος επιστρέφει όχι μόνο bool, αλλά κάτι άλλο, απαιτείται αυστηρός έλεγχος με === ή!==.
- Χωρίς όρους με αναθέσεις μέσα. ενώ ($row = ...) είναι επίσης απαράδεκτο.
- Magic getters/setters επιτρέπονται μόνο σε απελπιστικές καταστάσεις, διαφορετικά απαγορεύονται.
- Συνδέσεις σε sql - μόνο σε απελπιστικές καταστάσεις.
- Παράμετροι σε sql - ΜΟΝΟ μέσω placeholders.
- Χωρίς καθολικές μεταβλητές.
- Οι ημερομηνίες με τη μορφή συμβολοσειράς επιτρέπονται μόνο σε πρότυπα και στη βάση δεδομένων στον κώδικα PHP μετατρέπονται αμέσως σε \DateTimeImmutable (σε απελπιστικές καταστάσεις, το \DateTime επιτρέπεται)
- Φυσικά, εξαρτάται από το έργο, αλλά κατά κανόνα θα πρέπει να υπάρχουν μόνο δύο σημεία εισόδου: index.php για το web και κονσόλα (ή κάτι άλλο που ονομάζεται) για την κονσόλα.

* Τουλάχιστον Codestyle PSR-2 + PSR-5, + ένα σωρό πιο αυστηρές απαιτήσεις (για αρχή, ό,τι επισημαίνεται ως SHOULD στο PSR γίνεται MUST)
- Στο PhpStorm, δεν πρέπει να επισημανθεί ούτε μία γραμμή (η εξαίρεση είναι τα τυπογραφικά λάθη, για παράδειγμα, το λεξικό δεν γνωρίζει ορισμένες από τις συντομογραφίες που υιοθετήθηκαν στο έργο σας). Σε αυτήν την περίπτωση, επιτρέπεται η χρήση του /** @noinspection *** */ για απελπιστικές καταστάσεις.
- Αν κάποιος πει ότι γράφει σε άλλο συντάκτη και δεν τονίζεται, πάλι το στέλνει για αναθεώρηση.

* Οργάνωση κωδικών:
- Χωρίς καθολικές λειτουργίες.
- Τάξεις χωρίς χώρο ονομάτων επιτρέπονται μόνο σε εξαιρετικά απελπιστικές καταστάσεις.

* Η δοκιμασιμότητα (με την έννοια της ευκολίας δοκιμής) του κώδικα θα πρέπει να είναι υψηλή.
- Απαιτείται κάλυψη κωδικού για όλες τις πιθανές περιπτώσεις χρήσης κάθε δημόσιας μεθόδου με κοροϊδίες εξάρτησης.

* Αρχές MVC:
- Καμία επεξεργασία των εισροών χρήστη στα μοντέλα, κυριολεκτικά.
- Δεν υπάρχουν ερωτήματα στη βάση δεδομένων από πρότυπα.
- Χωρίς διάταξη/js/css/sql-in σε ελεγκτές.
- ΔΕΝ ΥΠΑΡΧΕΙ ΜΑΓΕΙΑ στα μοντέλα, μόνο ιδιωτικές ιδιοκτησίες + getters με σέτερ.
- Τα μοντέλα επιτρέπεται να χρησιμοποιούν τη μέθοδο αποθήκευσης (αν υπάρχει, φυσικά) μόνο σε εξαιρετικές περιπτώσεις. Σε όλα τα άλλα - είτε εισάγετε είτε ενημερώστε.

* ΣΤΕΡΕΙΣ αρχές:
- Δεν υπάρχουν καθολικά αντικείμενα που μπορούν να κάνουν τα πάντα.
- Εάν η μέθοδος για εσωτερική χρήση είναι ιδιωτική, όχι δημόσια.
- Στατικές μέθοδοι επιτρέπονται μόνο σε περιπτώσεις απελπισίας.

* Η αρχή του DRY επιτρέπεται να παραβιάζεται στις ακόλουθες περιπτώσεις:
- Ρητή διάκριση καθηκόντων
- Σε δοκιμές (κάθε δοκιμή πρέπει να είναι όσο το δυνατόν πιο ανεξάρτητη)

* Εργασία με τη βάση δεδομένων:
- Το αίτημα στον κύκλο πρέπει να είναι ΠΡΑΓΜΑΤΙΚΑ δικαιολογημένο.
- Σοβαρή επίπληξη για ORDER BY RAND()
- Η αναζήτηση όχι με πλήκτρα (φυσικά, αν ο πίνακας ΔΕΝ είναι 5 σειρές) απαγορεύεται.
- Η αναζήτηση χωρίς LIMIT (και πάλι, εάν ο πίνακας ΔΕΝ είναι 5 σειρές) απαγορεύεται.
- ΕΠΙΛΟΓΗ * - απαγορεύεται.
- Η αποκανονικοποίηση της βάσης δεδομένων πρέπει να αιτιολογείται.
- Το MyISAM δεν χρησιμοποιείται (άρα)))
- Απαιτούνται πολλαπλές λειτουργίες σε μια συναλλαγή, με επαναφορά εάν κάτι πάει στραβά.
- Η βάση δεδομένων δεν πρέπει να περιέχει επιχειρηματική λογική, μόνο δεδομένα σε ολιστική μορφή.
- Δεν πρέπει να υπάρχει περιττό τράνταγμα της βάσης δεδομένων όπου μπορεί να γίνει χωρίς αυτό.

* Η προσωρινή μνήμη πρέπει να εκκαθαριστεί υπό δύο συνθήκες (όχι μία από αυτές, αλλά δύο):
- Χρόνος.
- Αποτυχία σύμφωνα με την επιχειρηματική λογική.
Επιτρέπεται μόνο για χρόνο σε απελπιστικές καταστάσεις, αλλά τότε ο χρόνος είναι σύντομος.
- Κατά τον υπολογισμό των κλειδιών κρυφής μνήμης, θα πρέπει να χρησιμοποιείται μια μεταβλητή από τη διαμόρφωση της εφαρμογής (σε περίπτωση ενημερώσεων, η προσωρινή μνήμη επαναφέρεται με κώδικα, όχι με φλας διακομιστή προσωρινής μνήμης). Στην περίπτωση χρήσης πολλών διακομιστών, αυτό είναι ένα πολύ βολικό και ευέλικτο εργαλείο για τη διπλωματία.

* Σχετικά με τους ανθρώπους:
- «Έχω συνηθίσει να γράφω με αυτόν τον τρόπο και θα συνεχίσω να το κάνω» δεν είναι ερώτηση, θα περάσετε την κριτική μόνο όταν αλλάξετε γνώμη.
- "Γράφω στο vim και είναι τόσο βολικό για μένα" - υπέροχο, γράφω επίσης κώδικα κονσόλας σε αυτό)), αλλά υπάρχουν απαιτήσεις για τον κώδικα, αν δεν μπορείτε να τις κάνετε, δεν θα περάσετε την αναθεώρηση.
- "Αντέγραψα αυτήν την τρομερή μέθοδο και άλλαξα 2 γραμμές" - αυτό είναι φυσικά υπέροχο, αλλά σύμφωνα με την ετικέτα, είστε ο συγγραφέας ολόκληρης αυτής της μεθόδου, οπότε ας μην λέμε ανοησίες, εντάξει;
- "Δουλεύει!" - αυτή η φράση μεταφράζεται περίπου ως εξής: "ναι, καταλαβαίνω ότι γράφω τελείως ανοησίες, αλλά δεν μπορώ να γράψω κανονικά επειδή δεν μπορώ," σε κατάλαβα σωστά;))
- "Όλα λειτουργούν!" - Χαίρομαι για σένα, αλλά τι γίνεται με την παραγωγή;
- "Όλα είναι απλά εκεί" - μην χρησιμοποιείτε τη λέξη "απλό", από τη λέξη "απολύτως". Εδώ είναι ένα κομμάτι κώδικα (το πρώτο που συναντάτε με πολύπλοκη επιχειρηματική λογική), πού είναι το σφάλμα (δεν έχει σημασία αν υπάρχει ή όχι); Το βλέπεις ήδη 2 λεπτά, ποιο είναι το πρόβλημα, όλα είναι "απλά"))

* Οτιδήποτε:
Το ActiveRecord (σας το λέω ως πρώην θαυμαστής του Yii) είναι εντελώς χάλια, πάρτε το ως το αρχικό. Στην πραγματικότητα, έχετε μοντέλα συνδεδεμένα στη βάση δεδομένων που περιφέρονται στο έργο ανεξέλεγκτα. Πάνω από μία φορά συνάντησα ότι στα ίδια πρότυπα που λένε αποθήκευση ή ενημέρωση (θα πρέπει να καεί για αυτό).

Βασικά:
1. Η παρουσία κρίσιμων σφαλμάτων και απαρχαιωμένων λειτουργιών.
2. Χρήση μοτίβων, κομψότητα λύσεων.
3. Αναγνωσιμότητα κώδικα, παρουσία σχολίων, παρουσία αποβάθρες.
4. Συμμόρφωση με πρότυπα και συμβάσεις (για παράδειγμα, παραβίαση του MVC).

Δευτερεύον/μη σημαντικό:
1. Απόδοση κώδικα (εκτός από την υψηλή φόρτωση)
2. Κατανάλωση μνήμης (εξαιρουμένων των bigdata)
3. Αποτελεσματικότητα των ερωτημάτων SQL (με εξαίρεση τα πολύ δύσκολα)
4. Αποφυγή ασήμαντων αλλά πιθανών σημείων συμφόρησης στα δεδομένα (για παράδειγμα, επιβράδυνση του συστήματος αρχείων όταν υπάρχει μεγάλος αριθμός εικόνων στο φάκελο μεταφόρτωσης)
5. Καινοτομία των τεχνολογιών που χρησιμοποιούνται.
6. Δικαιολογημένη\Αδικαιολόγητη\Υπερβολική Ποδηλασία.

  1. Ο κώδικας δεν περιέχει προφανή ή πιθανά σφάλματα.
  2. Ο κωδικός λειτουργεί όπως περιγράφεται στην τεκμηρίωση, τις τεχνικές προδιαγραφές ή τα συνοδευτικά σχόλια.
  3. Το στυλ κωδικοποίησης ακολουθεί τους αποδεκτούς κανόνες κωδικοποίησης
  4. Ο κώδικας έχει συνοδευτικά σχόλια σύμφωνα με το phpDoc
  5. Η ένθεση των μπλοκ δεν ξεπερνά το 4ο επίπεδο.
  6. Ο κώδικας δεν δημιουργεί μηνύματα στα επίπεδα αυστηρού, προειδοποίησης, ειδοποίησης ή καταργημένου. Εάν αυτό δεν μπορεί να αποφευχθεί, τότε αμέσως πριν από τη γραμμή που το δημιουργεί, πρέπει να αναγκάσετε να απενεργοποιηθεί το error_reporting και αμέσως μετά τη γραμμή, το error_reporting πρέπει να ενεργοποιηθεί στην αρχική τιμή (που ήταν πριν). Αυτός ο κωδικός πρέπει να τεκμηριώνεται με ειδικό τρόπο.
  7. Το σχολιασμένο κομμάτι κώδικα θα πρέπει να αφαιρεθεί.
  8. Τα ένθετα HTML και JavaScript απαγορεύονται στον κώδικα PHP (εκτός από το phpTemplate). Όλες οι εισαγωγές πρέπει να γίνονται με χρήση ειδικών προτύπων.
  9. Οι κλάσεις, οι συναρτήσεις, οι μεταβλητές και οι σταθερές πρέπει να ονομάζονται λογικά με τρόπο αναγνώσιμο από τον άνθρωπο στα αγγλικά σύμφωνα με τα πρότυπα κωδικοποίησης. Δεν επιτρέπεται η ονομασία σε μεταγραφή στα ρωσικά ή σε άλλες γλώσσες
  10. Το εύρος των μεταβλητών και οι μέθοδοι των κλάσεων πρέπει πάντα να ορίζονται (ιδιωτικό, προστατευμένο, δημόσιο).
  11. Το μέγεθος μιας μεθόδου δεν πρέπει να υπερβαίνει τις 40-50 γραμμές.
  12. Μια μεταβλητή που χρησιμοποιείται σε βρόχο ή σε μπλοκ υπό όρους πρέπει να προετοιμαστεί εκ των προτέρων.
  13. Μια μεταβλητή πρέπει να περιέχει μόνο έναν τύπο ανά πάσα στιγμή. Μια κενή μεταβλητή πρέπει να περιέχει null. ($var = false; $var = "test"; δεν επιτρέπεται. $var = null επιτρέπεται; $var = "test";).
  14. Κατά τη μεταβίβαση αντικειμένων κλάσης σε μεθόδους, πρέπει να χρησιμοποιείται έλεγχος τύπου.
"Bars" "compressor" "Piter-Plast" "Promtek", Barnaul "Work ρούχα" "Expedition", Κίνα "Red Lighthouse" (είδος...) "Ural Gems", Yekaterinburg 444 VKF 720 Armor acmepower Active Leisure Adidas AGU Ajungilak AKU Alexika Alpina αλπικός εξοπλισμός AMV sport AMVsport Απάντηση Aquapac Artiach asolo ATEMI Atomic Συγγραφέας AVL axio Axon B"TWIN Baseg Bask BBB Beal BERCUT, Αγία Πετρούπολη Biemme Big Agnes Big Pack Black Diamond Boblbeeeel Boblbeeel MP Camping Gas Campus Canadian Camper Canon Canondale Capricorn Cascade σχέδια Casio Cassida CatManDo (Κίνα) Cenda.Ru Αλυσίδα επίπλων γραφείου ChainPower Chinook CITIZEN Climbing Technology Cobra Electronics Coflach Columbia Columbia River Knife and Tool (CRKT) Comazo compazocomaqwaq ite Dolomite Duofold (Ιρλανδία) Dupont Duracell Duraflex Dynastar Eka Ekud Ericson Ericsson EuroSport Expedar Favourlite Fenix ​​​​Ferrino (Ιταλία) Fillon Fino 40s p Anorama Fire-Maple Fisher Fiskars Five Fizan Fjall Fjord Nansen Fjord ΑΡΜΙΝ GARMONT Garsing Genimap Gerber (ΗΠΑ) Gist GORDINI GoSystem GoSystem/Karrimor GP Grangers Gravel Grisport GRIVEL Gronell Gruppa 99 Guahoo HAGLOFS (Σουηδία) Haier Halti Hama Hamilton Global Management Hangzhou EXCO Industrial Co Ltd Hannah Camp) HighGear HIKO Sport Hilleberg Hobbit http://sanek99.s19.webhost1.ru/ Husky I/O Magic Icepeak ICOM JackWolfskin Jetboil, Inc. Jinyang JJ-GROUP Jofa Julbo JVC KAISER SPORT Kama Karrimor KATZ KAYLAND KED KEEN Kefas Kongur Kovea La Sportiva Lafuma Lake Leatherman Led Lenser Leki Levron Lifeproof Linton LIOD lma lmaouterwear Loop Lorpen LoweaeLOTOS mmut Mango March δρόμος Marcill Markill Marmot Marpetti Masters Maxpedition McKinley Medico MEINDL Mellert Merrell Midland Millet Milo Minolta montrail Mora της Σουηδίας Morgan Mills Motorola Mountain Hardware (MHW) MSR MTE Mustek MusucBag N1 Ισλανδία NANO ESTTE Normax NeveCom κ NorthWave Norveg Novatour Novus NRS oceAnco Octopus ODLO Okula Olympus Ontario Knife USA OOO Khudobaru7 ooo "yukon" Opinel OPTIMUS ORDANA Osprey Otterbox Outdoor Project Outventure Ozon Panasonic Patagonia Peak-1 Πεντάξον Πεντάξ tec Prijon Primus Princeton Tec Prival prosofta Puma Qualcomm Η.Π.Α. QUARANTASEI QUECHUA Raftmaster Rainbow Red Fox Reed Chill Cheater Ltd Reima Retki (Φινλανδία) Robson Rock Front Rock Pillars Rockland ROGER Rollei (είδος) Rossignol RUBIN Salewa SALMOCARAMITA SALMOCARAMITA SALMOCARA SALMOCAR TOLALOMON vylor Shimano SHIMANO INC. Κίνα. ShredReady Siemens Sievert Silva Silvretta Simex Sport Simms Simond Sivera Sixsixone 661 Smith SneVXULY SnowPeak Sol SOLBEI sonim Sony SOTO Specialized Sportful Sprayway Spyderco Stayer Sun Valley Sunroad Σουούντο Σουάν Σουίστονα Τε.Ε.Τ.Ε scoma The North Face Therm-a- Rest Thermos Time Trial title2 TNP Tramontina Tramp Trezeta Trezetta Trimm Travel Extrem Zhytomyr Ukraine TSL Tubbs Tuckland Ultra-bright Universal UNOMAT UVEX Varta Vasque Vaude Vector, Vertical Verticale Victorinox Viking Viper visu VoileVolkshammerspl XCH Yaesu Yukon Zamberlan Zebra ZebraLight Zippo, Η.Π.Α. Aquagraphics AKME AKME-NORMAL ALVO-TITANIUM Alpindustriya AN "GLOBAL" - ακίνητα στο Tolyatti Αγγλικός κατασκευαστής Russian Army AS Arts Atemi Aerogeodesy Λευκορωσία Beskyd Bundeswehr V. Boytcha-Svaktourdam Βίντεο Εκπαίδευση "Golden Active" Voronezh VostokService Όλοι οι γνωστοί σε εμένα Χάρτες 2 χιλιομέτρων για την περιοχή Maloshuika GalaTour Γερμανία Κύριο Τμήμα Γεωδαισίας και Χαρτογραφίας υπό το Συμβούλιο Υπουργών της ΕΣΣΔ Mountain Country Delta-7 Jet Sport Jet-Sport Discovery επιβιβαστείτε στο εργοστάσιο Eurogas Yeisk τον Οκτώβριο. Vorsma CJSC "Map" LTD CJSC "Petrokhim" S\Pb ZLATOUST Ραντεβού στη Σιβηρία Ilax IP Chirko N.E., Αγία Πετρούπολη Irbis Ισπανία Ιταλία Kazan Kemerovo Kizlyar ταινία Κίνα Κίνα/Τουρκία KMZ im. Zvereva Korea Boilers "CITIZEN" Red Sun Red Triangle KUKRI Kulik LOMO Manaraga Mayak (περιοχή Kirov) Megatest υπηρεσία Ρωσικό Υπουργείο Άμυνας Mito ("Στόχος") Μόσχα Μόσχα Πυξίδα Mukachevo MFK Εθνική αθλητική εταιρεία "EFSI" Μην θυμάστε άγνωστο NEOPRO Neris ( Κίεβο) Nova Tour JSC "ERA" Octopus LLC "Aerosol Novomoskovsk" LLC "Biogprd", Moscow LLC "Veloklub.ru" LLC "Capital - New Century" LLC "FORNEL", Ρωσία, Moscow LLC "Albatross", Vorsma LLC Stelz - St. Petersburg LLC Lesiteks LLC Monopoly LLC Pohudat.rf7 Otech. χημ. χώρος κολλέγιου. σκηνή Perm-19 PIK-99 βιομηχανία τροφίμων Prime-A Proffi εκπρόσωπος Λευκορωσία Rostov-on-Don St. Petersburg Svarog; Synthesis BA Sintepon SINTO Sinto (Ταξιδιωτικά Είδη) Σλοβενία ​​Εξοπλισμός snowboard Lamar Alloy ALLOY, OKG Αθλητική διατροφή από την Scott USA USSR Stalker Stalker (Mikhail Chernetsky) Stream Shipyard Taimen Terra Techno-Avia (πόλη. Μόσχα) TM Η άνεσή σας Triton labor - vacha Turion Turlan Ural-expedition Factory 1 Μαΐου, Ufa Federal Service of Geodesy and Cartography Company "Crossbow", εκδοτικός οίκος "Ultra EXTENT" flesna FMK Fumakilla, Ινδονησία Kharkov Ukraine Heaton Hobbit HSN (Cheboksary) Cherepo εργοστάσιο Τι - στο Νόβγκοροντ, το εργοστάσιο αγώνων Chudov Σουηδική άγνωστη Schultz Crew - T expedition ELF Mukachevo Yaroslavrezinotekhnika άλλα:

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

Include("includes/reviews.php");

Με αυτόν τον τρόπο, οι σελίδες προϊόντων μπορούν να παραμείνουν ανόθευτες και ο ίδιος κωδικός κριτικής μπορεί εύκολα να χρησιμοποιηθεί ή να τροποποιηθεί, ανάλογα με τις ανάγκες. Το σενάριο reviews.php θα έκανε πολλά πράγματα:

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

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

Αξιολογήστε αυτό το προϊόν

5 4 3 2 1

Σαφώς θα θέλατε να χρησιμοποιήσετε κάποιο CSS για να το κάνετε όμορφο, αλλά αυτή είναι η βασική ιδέα. Το κύριο στοιχείο είναι ότι το αναγνωριστικό προϊόντος και ο τύπος προϊόντος (ή οτιδήποτε άλλο πρέπει να έχει η βάση δεδομένων για να συσχετιστεί μια κριτική με ένα αντικείμενο) πρέπει να αποθηκεύονται σε κρυφές εισόδους. Θα έπρεπε το σενάριο PHP που εμφανίζει το προϊόν να γράψει αυτές τις τιμές στις εισόδους.

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

Η υποβολή της φόρμας θα μπορούσεμεταβείτε σε μια νέα σελίδα, αλλά στη συνέχεια ο χρήστης θα πρέπει να κάνει κλικ στο κουμπί Πίσω για να επιστρέψει στη σελίδα του προϊόντος, κάτι που δεν είναι ιδανικό. Αντίθετα, θα υποβάλλω τη φόρμα πίσω στη σελίδα του προϊόντος. Για παράδειγμα, σε οποιονδήποτε δυναμικό ιστότοπο, το ίδιο σενάριο PHP χρησιμοποιείται για την εμφάνιση όλου του περιεχομένου ενός συγκεκριμένου τύπου. Στο δικό μου Αβίαστο ηλεκτρονικό εμπόριο με PHP και MySQLβιβλίου, το πρώτο παράδειγμα τοποθεσίας χρησιμοποιεί το σενάριο page.php για να εμφανίσει οποιαδήποτε σελίδα περιεχομένου. Το χαρακτηριστικό action της φόρμας θα δείχνει στην ίδια σελίδα.php . Μπορείτε να το πετύχετε αφήνοντας απλώς το χαρακτηριστικό κενό ή χρησιμοποιώντας PHP για να ορίσετε δυναμικά την τιμή.

Εάν η σελίδα PHP που παραθέτει τα προϊόντα απαιτεί να μεταβιβαστεί μια τιμή που προσδιορίζει το προϊόν στη διεύθυνση URL, τότε η φόρμα θα πρέπει να αποθηκεύσει αυτήν την τιμή και σε μια κρυφή είσοδο. (Αυτό μπορεί να συμβαίνει ήδη, με την είσοδο product_id, ανάλογα με τον τρόπο ρύθμισης του ιστότοπου.) Δεύτερον, το σενάριο προϊόντος θα πρέπει επίσης να ενημερωθεί για να επιτρέπεται η λήψη της τιμής προϊόντος μέσω POST .

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

Αν ($_SERVER["REQUEST_METHOD"] == "POST") ( // Χειριστείτε τη φόρμα.

Όταν υποβάλλεται η φόρμα αξιολόγησης, τα δεδομένα της φόρμας θα πρέπει να επικυρωθούν. Θα πρέπει επίσης να εφαρμόσετε strip_tags() στα δεδομένα για να αποτρέψετε επιθέσεις Cross-Site Scripting (XSS) ή άλλη κακή συμπεριφορά. Και οι μη αριθμητικές τιμές θα εκτελούνται μέσω μιας συνάρτησης διαφυγής, όπως η mysqli_real_escape_string(). Ή μπορείτε απλώς να χρησιμοποιήσετε έτοιμες δηλώσεις ή αποθηκευμένες διαδικασίες για καλύτερη ασφάλεια και απόδοση.

Εάν προσθέσετε μια άγκυρα στο χαρακτηριστικό action="page.php#reviews" της φόρμας, ο χρήστης θα μεταφερθεί στην ενότητα κριτικών της σελίδας κατά την υποβολή, κάτι που είναι μια ωραία πινελιά.

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

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

mob_info