Ίσως να έχετε διαβάσει για ένα πρόβλημα που είχα συναντήσει όταν είχα φτιάξει μια σελίδα για τη σύζυγό μου. Στο παρών άρθρο θα αναφερθώ σε ένα άλλο πρόβλημα που συνάντησα φτιάχνοντας μια καινούρια σελίδα, ξανά για τη διαιτολόγο σύζυγό μου.
Θα έχετε παρατηρήσει σε πολλές σελίδες ότι (συνήθως) κάτω από ένα άρθρο αναφέρεται ο συντάκτης μαζί με ένα σύντομο βιογραφικό ή τέλος πάντων κάποιου είδους περιγραφή. Σε σελίδες που έχουν φτιαχτεί με τη χρήση του WordPress το κείμενο αυτό προέρχεται από το πεδίο Βιογραφικά στοιχεία που βρίσκεται στο Προφίλ του χρήστη/συντάκτη.

Το πρόβλημα
Όσες φορές και να πατήσουμε Enter για να αλλάξουμε γραμμή μέσα σε αυτό το πεδίο, όταν αυτό θα μετατραπεί σε html οι αλλαγές γραμμής θα εξαφανιστούν. Το ίδιο θα συμβεί αν αφήσουμε πολλά συνεχόμενα κενά (θα μετατραπούν σε ένα) ή αν πατήσουμε tab.
Για να αλλάξουμε γραμμή σε html θα έπρεπε να χρησιμοποιήσουμε το tag “<br />”. Όμως, ακόμα και αν γεμίσουμε το πεδίο με <br /> δε πρόκειται να δούμε να αλλάζουν οι γραμμές.
Αυτό συμβαίνει, γιατί η συνάρτηση του Worpdress που χρησιμοποιείται συνήθως από τα θέματα (themes) για να δείξει αυτά τα στοιχεία, είναι η the_author_meta (με όρισμα description), η οποία τυπώνει τα περιεχόμενα του προαναφερθέν πεδίου. Υπάρχει όμως ένα προβληματάκι! Η συγκεκριμένη συνάρτηση για λόγους ασφαλείας καθαρίζει τα δεδομένα (sanitize) από html tags, με αποτέλεσμα ότι γράψουμε μέσα στο παραπάνω πεδίο να βγει όλο σε μια γραμμή!
Η λύση(;)
Μια λύση είναι απλά να αποδεχτούμε το γεγονός ότι τα πάντα θα βγούν σε μια γραμμή. Συχνά αυτό όμως δεν είναι και πολύ όμορφο.
Αν θέλουμε λοιπόν να έχουμε αλλαγές γραμμών, η λύση είναι να χρησιμοποιήσουμε τη συνάρτηση nl2br της PHP, η οποία μετατρέπει όσες αλλαγές γραμμής βρει σε ένα κείμενο σε <br /> tags της html.
Έτσι, θα πρέπει να ψάξουμε στο κώδικα από το θέμα μας που υπάρχει μια γραμμή σαν τη παρακάτω:
<?php the_author_meta('description'); ?> .
Επειδή η the_author_meta δεν επιστρέφει τη τιμή του πεδίου αλλά την τυπώνει, θα πρέπει να την αντικαταστήσουμε με την get_the_author_meta που μας επιστρέφει την τιμή. Αυτή θα πρέπει να την περάσουμε μέσα από την nl2br και να τυπώσουμε το αποτέλεσμα (με την echo). Δηλαδή η παραπάνω γραμμή θα γίνει κάπως έτσι:
<?php echo nl2br(get_the_author_meta('description')); ?> .
Μια καλή περιγραφή μπορείτε να βρείτε και εδώ.
Παρενέργειες
Βέβαια θα πρέπει να έχουμε υπόψη μας ότι αν ενημερώσουμε το θέμα μας σε μια πιο καινούρια έκδοση είναι πολύ πιθανόν να χαθούν οι αλλαγές μας και να πρέπει να τις ξανακάνουμε.
Επίσης, κάτι που συνέβη σε μένα μετά από κάποια ενημέρωση του θέματος, είναι αλλάζοντας τη παραπάνω γραμμή στο θέμα, για κάποιο λόγο που δεν αναζήτησα παραπέρα, να “χαλάσει” η εμφάνιση του θέματος (κάποιο θέμα με το CSS πιθανόν) και να αναγκαστώ να αφήσω να βγαίνει η περιγραφή σε μια γραμμή τελικά. 🙁