Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια χαρά,

Ξεκίνησα να στήνω μια 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/

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

Όποια βοήθεια καλοδεχούμενη! Ευχαριστώ πολύ!

 

 

Δημοσ. (επεξεργασμένο)

Ουσιαστικά , το 

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'));
}

 

Επεξ/σία από panmitz
Code reformatting
Δημοσ. (επεξεργασμένο)

Καλησπέρα και ευχαριστώ για την απάντηση.

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

Για να καταλάβω, μου προτείνεις το παρακάτω; Αν ναι, το δοκίμασα σε διάφορα 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; ?>

 

Επεξ/σία από noasgr
Δημοσ. (επεξεργασμένο)

Διόρθωσα λίγο το 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; ?>

 

Επεξ/σία από panmitz
Δημοσ.

Δούλεψε! Ευχαριστώ πάρα πολύ! Μια ερώτηση, από τη στιγμή που υπάρχουν 2 if / else conditions, πως και δεν χρειάζονται 2 endif ?

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...