template_redirect
Εκτελείται στο δημόσιο site όταν το WordPress ξέρει τι προβάλλεται, πριν φορτώσει το πρότυπο. Ιδανικό για ανακατευθύνσεις και ελέγχους πρόσβασης.
Πότε εκτελείται
Το template_redirect εκτελείται μόνο κατά τη φόρτωση δημόσιων σελίδων, αφού εκτελεστεί το κύριο ερώτημα και πριν το WordPress διαλέξει αρχείο προτύπου. Οι συνθήκες όπως is_page(), is_singular() και is_404() λειτουργούν, και δεν έχει σταλεί HTML, οπότε μπορείτε ακόμη να κάνετε ανακατεύθυνση ή να ορίσετε κεφαλίδες.
Δεν εκτελείται στη διαχείριση, σε κλήσεις AJAX ούτε σε αιτήματα REST API.
Παράμετροι
Καμία. Το callback σας δεν δέχεται ορίσματα.
Παράδειγμα: Ανακατεύθυνση αποσυνδεδεμένων επισκεπτών από σελίδα μελών στη σύνδεση
add_action( 'template_redirect', function () {
if ( is_page( 'members' ) && ! is_user_logged_in() ) {
wp_safe_redirect( wp_login_url( get_permalink() ) );
exit;
}
} );
Καλό να ξέρετε
- Καλείτε πάντα exit μετά τη wp_safe_redirect() ή τη wp_redirect(), αλλιώς η σελίδα συνεχίζει να φορτώνει.
- Μη χρησιμοποιείτε αυτό το hook για να φορτώσετε άλλο πρότυπο. Γι' αυτό υπάρχει το φίλτρο template_include.
- Η cache σελίδων μπορεί να σερβίρει αποθηκευμένο αντίγραφο χωρίς να τρέξει καθόλου PHP. Εξαιρέστε τις προστατευμένες σελίδες από την cache, ώστε ο έλεγχος να γίνεται πάντα.