Κατανόηση του προσαρμοσμένου Meta Box του WordPress
Στην προηγούμενη ανάρτηση, έχουμε μιλήσει για το προσαρμοσμένο πεδίο WordPress, το οποίο σας επιτρέπει να προσθέσετε και να εξάγετε μια νέα καταχώρηση σε μια ανάρτηση χρησιμοποιώντας το πλαίσιο Προσαρμοσμένου πεδίου που παρέχει το WordPress στην οθόνη μετά την επεξεργασία. Εάν, ωστόσο, δεν είστε άνετοι χρησιμοποιώντας το προσαρμοσμένο πεδίο πεδίου (όλοι έχουμε τις μεμονωμένες προτιμήσεις μας), εδώ είναι μια εναλλακτική λύση: μπορείτε να δημιουργήσετε ένα μετα-κουτί.
Ένα μετα-πλαίσιο είναι α προσαρμοσμένο κουτί που δημιουργούμε μόνοι μας, που μπορεί να περιέχει εισροές ή άλλα διαλογικά UI για να προσθέσετε νέες καταχωρήσεις των αναρτήσεων ή των σελίδων. Μπορείτε να χρησιμοποιήσετε το μετα-πλαίσιο αντί για το πεδίο Προσαρμοσμένο πεδίο για να κάνετε το ίδιο πράγμα. Ας δούμε πώς να δημιουργήσετε ένα.
Περισσότερα για το Hongkiat.com:
- Προσαρμόστε τον κατάλογο μεταφόρτωσης μέσων στο WordPress
- Προσαρμόστε τα στυλ επεξεργαστών WordPress
- Προσαρμογή “Γεια σου” Στη γραμμή admin του WordPress
- Καταχωρίστε προσαρμοσμένη ταξινόμηση για χρήστες του WordPress
- Εμφάνιση εικονιδίων Στο μενού WordPress
Δημιουργία ενός Meta Box
Το WordPress παρέχει μια λειτουργία API, που ονομάζεται add_meta_box
, που μας επιτρέπει να δημιουργήσουμε ένα μετα-κιβώτιο αμέσως. Αυτό είναι σε απόλυτα βασική μορφή.
συνάρτηση add_post_reference () add_meta_box ('post-reference', 'αναφορά', 'referenceCallBack', 'post'); add_action ('add_meta_boxes', 'add_post_reference'). συνάρτηση αναφοράςCallBack () echo 'Hello World'
ο add_meta_box
παίρνει τέσσερις παραμέτρους: το αναγνωριστικό, τον τίτλο του μετα-κουτιού, μια λειτουργία επανάκλησης που θα καλέσει «Hello World» και τον τύπο θέματος που θέλουμε να εμφανίσουμε. Σε αυτήν την περίπτωση, αναθέτουμε ένα νέο μετα-πλαίσιο σε μια σελίδα επεξεργασίας μετά την επεξεργασία (αυτό επίσης λειτουργεί με σελίδες).
Στην ενότητα μετά την επεξεργασία, θα βρείτε ένα νέο πλαίσιο, ως εξής.
Το νέο μετα-πλαίσιο, όπως μπορείτε να δείτε παραπάνω, θα εμφανιστεί κάτω από τον επεξεργαστή WYSIWYG. Εάν θέλετε να το προσθέσετε στην πλαϊνή μπάρα, μπορείτε να προσθέσετε το 'side' μετά την παράμετρο post και μαζί με το 'high' αν θέλετε να το βάλετε στο πάνω μέρος της πλαϊνής γραμμής.
συνάρτηση add_post_reference () add_meta_box ('post-reference', 'αναφορά', 'referenceCallBack', 'post', 'side', 'high'). add_action ('add_meta_boxes', 'add_post_reference').
Τώρα θα το βρείτε πάνω από το Δημοσιεύω κουτί…
Τώρα για να αντικαταστήσετε το κείμενο "Hello World" εκεί. Ας προσθέσουμε στοιχεία όπως ένα πεδίο εισαγωγής για μια νέα εγγραφή.
Σε αυτό το παράδειγμα, θα προσθέσουμε δύο πεδία εισαγωγής που αποτελούνται από ένα για την προσθήκη του ονόματος αναφοράς και ενός άλλου για το σύνδεσμο αναφοράς:
συνάρτηση referenceCallBack ($ post) wp_nonce_field ('reference_meta_box', 'reference_nonce'); $ name_value = get_post_meta ($ post-> ID, '_post_reference_name', true); $ link_value = get_post_meta ($ post-> ID, '_post_reference_link', true); ηχώ '' ηχώ '' ηχώ ''. 'Προσθέστε το όνομα της αναφοράς'. '
' ηχώ '' ηχώ '' ηχώ ''. 'Προσθέστε τον σύνδεσμο της αναφοράς'. '
'
Ανανεώστε τη σελίδα μετά την επεξεργασία και θα πρέπει να δείτε αυτές τις δύο εισόδους που έχουν προστεθεί.
ο $ name_value
και $ link_value
η μεταβλητή θα ανακτήσει τις καταχωρίσεις από τη βάση δεδομένων και θα τις συμπληρώσει στα πεδία εισαγωγής. Για να λάβουμε τις καταχωρίσεις στη βάση δεδομένων, θα πρέπει να δημιουργήσουμε μια λειτουργία για αυτό.
Πρέπει να προσθέσουμε μερικές γραμμές κώδικα που θα συμπληρώσουν τις καταχωρήσεις που προστέθηκαν μέσω αυτών των δεδομένων στη βάση δεδομένων με ασφάλεια. “Ασφαλώς” εδώ σημαίνει νόμιμη και εγκεκριμένη είσοδο (όχι αυτή που προέρχεται από χάκερ ή άλλο μη εξουσιοδοτημένο προσωπικό). Για να αποθηκεύσετε την καταχώρηση, θα πρέπει να δημιουργήσουμε μια νέα λειτουργία. Ας ονομάσουμε τη λειτουργία: save_post_reference
, όπως έτσι.
συνάρτηση save_post_reference ($ post_id) add_action ('save_post', 'save_post_reference');
Όπως αναφέρθηκε, πρέπει να επαληθεύσουμε ορισμένα πράγματα για λόγους ασφαλείας:
(1) Θα πρέπει να ελέγξουμε αν ο χρήστης έχει τη δυνατότητα να επεξεργαστεί μια ανάρτηση.
αν (! current_user_can ('edit_post', $ post_id)) επιστροφή;
(2) Πρέπει επίσης Ελέγξτε εάν έχει οριστεί η ρύθμιση Nonce.
αν (! isset ($ _POST ['reference_nonce'])) επιστροφή; αν (! wp_verify_nonce ($ _POST ['reference_nonce'], 'reference_meta_box')) επιστροφή;
(3) Στη συνέχεια, πρέπει να αποτρέψουμε την αυτόματη αποθήκευση των δεδομένων. Η αποθήκευση μπορεί να γίνει μόνο μία φορά “Αποθηκεύσετε” ή “Εκσυγχρονίζω” έχει πατηθεί το κουμπί.
αν (οριστεί ('DOING_AUTOSAVE') && DOING_AUTOSAVE) επιστροφή;
(4) Θα πρέπει επίσης να διασφαλίσουμε ότι οι δύο εισροές μας, post_reference_name
και post_reference_link
, είναι ρυθμισμένες και έτοιμες προτού υποβάλουμε τις καταχωρίσεις.
αν είναι (! isset ($ _POST ['post_reference_name']) ||! isset ($ _POST ['post_reference_link'])) επιστροφή;
(5) Και η καταχώρηση πρέπει να είναι απαλλαγμένη από τυχόν μη αναμενόμενους χαρακτήρες που ενδέχεται να θέσουν σε κίνδυνο την ασφάλεια του ιστότοπου. Για να το ελέγξετε μπορείτε να χρησιμοποιήσετε την ενσωματωμένη λειτουργία WordPress sanitize_text_field
.
$ reference_name = sanitize_text_field ($ _POST ['post_reference_name']). $ reference_link = sanitize_text_field ($ _POST ['post_reference_link']).
Εντάξει, τώρα είμαστε έτοιμοι να αποθηκεύσουμε τις καταχωρήσεις στη βάση δεδομένων:
update_post_meta ($ post_id, '_post_reference_name', $ όνομα_αναφοράς); update_post_meta ($ post_id, '_post_reference_link', $ reference_link).
Τώρα μπορείτε να το δοκιμάσετε: εισάγετε κάποιο περιεχόμενο στα πεδία εισαγωγής και κάντε κλικ στο “Εκσυγχρονίζω” για να τα αποθηκεύσετε.
συμπέρασμα
Δημιουργήσαμε ένα μετα-κουτί που αποτελείται από δύο εισόδους. Μπορείτε να επεκτείνετε περαιτέρω το κουτί με άλλους τύπους εισόδων, όπως το κουμπί επιλογής ή το πλαίσιο επιλογής. Αυτό το παράδειγμα μπορεί να είναι πολύ βασικό, αλλά μόλις το έχετε κρεμάσει, θα μπορείτε να χρησιμοποιήσετε αυτό το μετα-κιβώτιο για πολύ πιο πολύπλοκες χρήσεις. Ενημερώστε μας αν χρησιμοποιείτε αυτό και τι θα το χρησιμοποιήσετε.