noasgr Δημοσ. 11 Ιουνίου 2019 Δημοσ. 11 Ιουνίου 2019 Γεια χαρά, Ξεκίνησα να στήνω μια wordpress σελίδα για ένα φίλο. Δουλεύω πάνω σε ένα template το οποίο έχει το παρακάτω κώδικα για να εμφανίζει την ημερομηνία του κάθε post: <?php if ( ! defined( 'ABSPATH' ) ) { exit; } ?> <?php if( $post_Style == 'dt-sc-simple-style' || $post_Style == 'dt-sc-title-overlay-style' || $post_Style == 'dt-sc-simple-withbg-style' || $post_Style == 'dt-sc-overflow-style' ): echo sprintf( esc_html__( '%s ago', 'saara' ), human_time_diff( get_the_date('U'), current_time('timestamp') ) ); elseif( $post_Style == 'dt-sc-overlap-style' ): echo esc_html__('on ', 'saara').get_the_date ( get_option('date_format') ).esc_html__(' at ', 'saara').get_the_time('', $post_ID); elseif( $post_Style == 'dt-sc-classic-style' || $post_Style == 'dt-sc-classic-ii-style' ): ?> <i class="pe-icon pe-date"> </i> <?php echo get_the_date ( get_option('date_format') ); else: ?> <i class="fa fa-calendar-o"> </i> <?php echo get_the_date ( get_option('date_format') ); endif; ?> Το αποτέλεσμα αυτού μπορείτε να το δείτε εδώ: https://prnt.sc/o05gmv Αυτό που θα με ενδιέφερε να κάνω είναι να ελέγχω αν η ημερομηνία του post είναι ίδια με τη σημερινή ή την αυριανή και τότε να δείχνω αντίστοιχα "Σήμερα" ή "Αύριο" και αν όχι, τότε να αφήνω την ημερομηνία ως έχει. Θέλω για παράδειγμα να κάνω modify το τελευταίο μέρος του κώδικα <?php echo get_the_date ( get_option('date_format') ); έτσι ώστε αν η μέρα είναι η σημερινή τότε να κάνω echo "Σήμερα" αν είναι αυριανή να κάνω echo "Αύριο" και αν δεν είναι καμία από αυτές, τότε να κάνω echo αυτό που υπάρχει ήδη στο κώδικα. Το μόνο resource που κατάφερα να βρω είναι αυτό: https://studiosimpati.co/developer-center/show-words-today-tomorrow-advanced-custom-field-date/ Προσπάθησα να προσαρμόσω το κώδικα αλλά το μόνο που κατάφερα είναι να χαλάσω το σάιτ. Όποια βοήθεια καλοδεχούμενη! Ευχαριστώ πολύ!
panmitz Δημοσ. 11 Ιουνίου 2019 Δημοσ. 11 Ιουνίου 2019 (επεξεργασμένο) Ουσιαστικά , το echo get_the_date ( get_option('date_format') ); τυπώνει την ημερομηνία του post. Θα πρέπει να προσθέσεις προηγουμένως έναν έλεγχο για το αν η ημερομηνία του post ταιριάζει με τη σημερινή ή την αυριανή. Άρα να αντικαταστήσεις το παραπάνω με κάτι τέτοιο: // Get today, tomorrow and post's dates in format 'd-m-Y' $today = date('d-m-Y'); $tomorrow = date('d-m-Y', strtotime('tomorrow')); $post_date = get_the_date('d-m-Y'); if ($post_date == $today) { // If this is today echo "Σήμερα"; } elseif ($post_date == $tomorrow) { // If this is tomorrow echo "Αύριο"; } else { // Else, use the default echo get_the_date(get_option('date_format')); } Επεξ/σία 11 Ιουνίου 2019 από panmitz Code reformatting
noasgr Δημοσ. 11 Ιουνίου 2019 Μέλος Δημοσ. 11 Ιουνίου 2019 (επεξεργασμένο) Καλησπέρα και ευχαριστώ για την απάντηση. Τη λογική την καταλαβαίνω, εκεί που χάνομαι (νομίζω) είναι η σύνταξη. Αποτέλεσμα αυτού είναι ότι δεν έχω καταφέρει να το κάνω να δουλέψει... Για να καταλάβω, μου προτείνεις το παρακάτω; Αν ναι, το δοκίμασα σε διάφορα php code validators και όλα βγάζουν errors... <?php if ( ! defined( 'ABSPATH' ) ) { exit; } ?> <?php if( $post_Style == 'dt-sc-simple-style' || $post_Style == 'dt-sc-title-overlay-style' || $post_Style == 'dt-sc-simple-withbg-style' || $post_Style == 'dt-sc-overflow-style' :( [Click and drag to move] echo sprintf( esc_html__( '%s ago', 'saara' ), human_time_diff( get_the_date('U'), current_time('timestamp') ) ); elseif( $post_Style == 'dt-sc-overlap-style' :( echo esc_html__('on ', 'saara').get_the_date ( get_option('date_format') ).esc_html__(' at ', 'saara').get_the_time('', $post_ID); elseif( $post_Style == 'dt-sc-classic-style' || $post_Style == 'dt-sc-classic-ii-style' :( ?> <i class="pe-icon pe-date"> </i> <?php echo get_the_date ( get_option('date_format') ); else: ?> <i class="fa fa-calendar-o"> </i> // Get today, tomorrow and post's dates in format 'd-m-Y' $today = date('d-m-Y'); $tomorrow = date('d-m-Y', strtotime('tomorrow')); $post_date = get_the_date('d-m-Y'); // If this is today if ($post_date == $today) {echo "Σήμερα";} // If this is tomorrow elseif ($post_date == $tomorrow) {echo "Αύριο";} // Else, use the default else { echo get_the_date ( get_option('date_format') ) ;} endif; ?> Επεξ/σία 11 Ιουνίου 2019 από noasgr
panmitz Δημοσ. 11 Ιουνίου 2019 Δημοσ. 11 Ιουνίου 2019 (επεξεργασμένο) Διόρθωσα λίγο το formatting στο προηγούμενο μου. Δοκίμασε αυτό αν θες (ξέχασες το <?php πριν τον κώδικά μου) <?php if ( ! defined( 'ABSPATH' ) ) { exit; } ?> <?php if( $post_Style == 'dt-sc-simple-style' || $post_Style == 'dt-sc-title-overlay-style' || $post_Style == 'dt-sc-simple-withbg-style' || $post_Style == 'dt-sc-overflow-style' ): echo sprintf( esc_html__( '%s ago', 'saara' ), human_time_diff( get_the_date('U'), current_time('timestamp') ) ); elseif( $post_Style == 'dt-sc-overlap-style' ): echo esc_html__('on ', 'saara').get_the_date ( get_option('date_format') ).esc_html__(' at ', 'saara').get_the_time('', $post_ID); elseif( $post_Style == 'dt-sc-classic-style' || $post_Style == 'dt-sc-classic-ii-style' ): ?> <i class="pe-icon pe-date"> </i> <?php echo get_the_date ( get_option('date_format') ); else: ?> <i class="fa fa-calendar-o"> </i> <?php // Get today, tomorrow and post's dates in format 'd-m-Y' $today = date('d-m-Y'); $tomorrow = date('d-m-Y', strtotime('tomorrow')); $post_date = get_the_date('d-m-Y'); if ($post_date == $today) { // If this is today echo "Σήμερα"; } elseif ($post_date == $tomorrow) { // If this is tomorrow echo "Αύριο"; } else { // Else, use the default echo get_the_date(get_option('date_format')); } endif; ?> Επεξ/σία 11 Ιουνίου 2019 από panmitz
noasgr Δημοσ. 11 Ιουνίου 2019 Μέλος Δημοσ. 11 Ιουνίου 2019 Δούλεψε! Ευχαριστώ πάρα πολύ! Μια ερώτηση, από τη στιγμή που υπάρχουν 2 if / else conditions, πως και δεν χρειάζονται 2 endif ? 1
panmitz Δημοσ. 11 Ιουνίου 2019 Δημοσ. 11 Ιουνίου 2019 Πρόκειται για εναλλακτικό τρόπο σύνταξης των if/else στην PHP, που χρησιμοποιείται και στον κώδικά σου: https://www.php.net/manual/en/control-structures.alternative-syntax.php
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα