Ευρετήριο WordPress Hooks
Ένα ευρετήριο με δυνατότητα αναζήτησης για τις ενέργειες (actions) και τα φίλτρα (filters) του WordPress που όντως χρησιμοποιούν οι προγραμματιστές — με την ακριβή υπογραφή add_action/add_filter, το πότε εκτελείται, ένα λειτουργικό παράδειγμα και το σημείο που ταλαιπωρεί τον κόσμο.
39 hooks, με την ακριβή υπογραφή add_action / add_filter, πότε ενεργοποιείται το καθένα, ένα λειτουργικό παράδειγμα, και το σημείο που ξεγελάει τον κόσμο. 1 είναι σημειωμένα ως μη επαληθευμένα — δεν έχουμε ελέγξει το πλήθος των ορισμάτων τους σε σχέση με τον πηγαίο κώδικα του WordPress, και προτιμούμε να το επισημάνουμε παρά να παρουσιάσουμε μια εικασία ως γεγονός.
Αυτό δεν είναι εξαντλητικό, ούτε το προσποιείται — το WordPress έχει χιλιάδες hooks. Καλύπτει αυτά που πραγματικά χρησιμοποιεί ο κόσμος.
Εκτελείται αφού το WordPress ολοκληρώσει τη φόρτωση, αλλά προτού σταλεί οποιαδήποτε κεφαλίδα. Το τυπικό σημείο για την καταχώρηση προσαρμοσμένων τύπων περιεχομένου, ταξινομιών και κανόνων επανεγγραφής (rewrite rules).
Ενεργοποιείται
Σε κάθε αίτημα, στο front end και στο admin, αφού έχουν φορτωθεί ο πυρήνας, τα πρόσθετα και το θέμα.
Υπογραφή
add_action( 'init', 'my_callback' );Παράδειγμα
add_action( 'init', function () {
register_post_type( 'book', array(
'public' => true,
'label' => 'Books',
'show_in_rest' => true, // required for the block editor
) );
} );Η παγίδα
Το init εκτελείται σε ΚΑΘΕ αίτημα, συμπεριλαμβανομένων των AJAX, REST και cron. Οτιδήποτε αργό εδώ (ένα HTTP request, ένα βαρύ ερώτημα) επιβαρύνει κάθε μεμονωμένη φόρτωση σελίδας. Επίσης: ο τρέχων χρήστης είναι διαθέσιμος εδώ, αλλά δεν μπορείτε να εμφανίσετε τίποτα — οι κεφαλίδες δεν έχουν σταλεί ακόμη, αλλά πρόκειται να σταλούν.
Εκτελείται μόλις φορτωθεί το θέμα. Το σωστό σημείο για add_theme_support(), add_image_size() και την καταχώρηση μενού πλοήγησης.
Ενεργοποιείται
Αφού φορτωθεί το functions.php του θέματος, ΠΡΙΝ από το init.
Υπογραφή
add_action( 'after_setup_theme', 'my_callback' );Παράδειγμα
add_action( 'after_setup_theme', function () {
add_theme_support( 'post-thumbnails' );
add_theme_support( 'title-tag' );
add_image_size( 'card', 600, 400, true ); // true = hard crop
} );Η παγίδα
Η καταχώρηση μεγεθών εικόνας στο init αντί για εδώ λειτουργεί κατά τύχη στις περισσότερες περιπτώσεις και μετά αποτυγχάνει ανεξήγητα σε κάποιες. Χρησιμοποιήστε το after_setup_theme — γι' αυτό υπάρχει.
Εκτελείται μόλις φορτωθούν όλα τα ενεργά πρόσθετα. Το νωρίτερο ασφαλές σημείο για αλληλεπίδραση με ένα άλλο πρόσθετο.
Ενεργοποιείται
Αφού συμπεριληφθεί κάθε αρχείο προσθέτου, προτού φορτωθεί το θέμα.
Υπογραφή
add_action( 'plugins_loaded', 'my_callback' );Η παγίδα
Ο τρέχων χρήστης ΔΕΝ είναι ακόμη διαθέσιμος εδώ — η wp_get_current_user() δεν θα λειτουργεί αξιόπιστα. Αν χρειάζεστε τον χρήστη, χρησιμοποιήστε το init.
Εκτελείται αφού το WordPress φορτωθεί πλήρως — τα πρόσθετα, το θέμα, το init και ο χρήστης είναι όλα έτοιμα.
Ενεργοποιείται
Μετά το init και αφού έχει ρυθμιστεί ο τρέχων χρήστης.
Υπογραφή
add_action( 'wp_loaded', 'my_callback' );Εκτελείται στην αρχή κάθε αιτήματος του admin. Χρησιμοποιείται για register_setting(), ελέγχους δικαιωμάτων και ανακατευθύνσεις στο admin.
Ενεργοποιείται
Σε κάθε αίτημα από την πλευρά του admin.
Υπογραφή
add_action( 'admin_init', 'my_callback' );Η παγίδα
Εκτελείται επίσης σε αιτήματα admin-ajax.php, τα οποία δεν είναι πραγματικά «οθόνες admin». Αν η συνάρτηση επανάκλησής σας προϋποθέτει ότι υπάρχει οθόνη, προστατέψτε τη με wp_doing_ajax().
Το ένα και μοναδικό σωστό σημείο για την προσθήκη (enqueue) CSS και JavaScript στο front end.
Ενεργοποιείται
Στις φορτώσεις σελίδων του front end, προτού αποδοθεί το head.
Υπογραφή
add_action( 'wp_enqueue_scripts', 'my_callback' );Παράδειγμα
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_style(
'child-style',
get_stylesheet_uri(),
array( 'parent-style' ), // load AFTER the parent
wp_get_theme()->get( 'Version' ) // cache-bust on version change
);
} );Η παγίδα
Παρά το όνομά του, χειρίζεται ΣΤΥΛ (styles) εκτός από scripts — δεν υπάρχει hook wp_enqueue_styles, και ο κόσμος σπαταλά πραγματικό χρόνο ψάχνοντας για ένα. Επίσης: δεν εκτελείται στο admin (χρησιμοποιήστε admin_enqueue_scripts) ούτε στον επεξεργαστή μπλοκ (χρησιμοποιήστε enqueue_block_editor_assets).
Προσθήκη (enqueue) CSS/JS στο admin. Λαμβάνει το επίθημα του hook (hook suffix) της τρέχουσας οθόνης, ώστε να φορτώνετε πόρους σε μία μόνο οθόνη.
Ενεργοποιείται
Στις φορτώσεις σελίδων του admin.
Υπογραφή
add_action( 'admin_enqueue_scripts', 'my_callback' ); // receives $hook_suffixΠαράδειγμα
add_action( 'admin_enqueue_scripts', function ( $hook ) {
if ( 'settings_page_my-plugin' !== $hook ) {
return; // do not load our JS on every admin screen
}
wp_enqueue_script( 'my-admin', plugins_url( 'admin.js', __FILE__ ), array(), '1.0', true );
} );Η παγίδα
Η μη προστασία με βάση το $hook είναι η πιο συνηθισμένη αιτία που ένα πρόσθετο χαλάει άσχετες οθόνες του admin. Φορτώστε τους πόρους σας εκεί που χρειάζονται και πουθενά αλλού.
Προσθήκη (enqueue) πόρων μόνο στον επεξεργαστή μπλοκ (Gutenberg) — όχι στο front end, όχι στο υπόλοιπο admin.
Ενεργοποιείται
Όταν φορτώνεται ο επεξεργαστής μπλοκ.
Υπογραφή
add_action( 'enqueue_block_editor_assets', 'my_callback' );Εκτυπώνει περιεχόμενο μέσα στο <head>. Χρησιμοποιείται για meta tags και ενσωματωμένο (inline) κρίσιμο CSS.
Ενεργοποιείται
Μέσα στο <head>, στο front end.
Υπογραφή
add_action( 'wp_head', 'my_callback' );Η παγίδα
ΜΗΝ κάνετε enqueue scripts ή styles εδώ — χρησιμοποιήστε το wp_enqueue_scripts, που αφήνει το WordPress να χειριστεί τις εξαρτήσεις και την αποφυγή διπλότυπων. Το να τυπώνετε ένα <script> tag μέσα στο wp_head παρακάμπτει όλα αυτά, και γι' αυτό τόσα sites φορτώνουν το jQuery τρεις φορές.
Εκτυπώνει περιεχόμενο ακριβώς πριν από το </body>. Το σωστό σημείο για αποσπάσματα analytics και σήμανση με καθυστέρηση (deferred).
Ενεργοποιείται
Στο τέλος της σελίδας του front end.
Υπογραφή
add_action( 'wp_footer', 'my_callback' );Η παγίδα
Ένα θέμα που ξεχνά να καλέσει την wp_footer() χαλάει τη γραμμή διαχείρισης (admin bar), χαλάει κάθε πρόσθετο που κάνει enqueue script στο υποσέλιδο, και απορρίπτεται αυτόματα στον έλεγχο θεμάτων του wordpress.org.
Φιλτράρει το περιεχόμενο του άρθρου ακριβώς πριν εμφανιστεί. Το συνηθισμένο σημείο για την προσθήκη σήμανσης στην αρχή ή στο τέλος ενός άρθρου.
Ενεργοποιείται
Κάθε φορά που καλείται η the_content().
Υπογραφή
add_filter( 'the_content', 'my_callback' ); // receives $contentΠαράδειγμα
add_filter( 'the_content', function ( $content ) {
if ( ! is_singular( 'post' ) || ! in_the_loop() || ! is_main_query() ) {
return $content; // <- the guard everyone forgets
}
return $content . '<p class="cta">Enjoyed this? Read more.</p>';
} );Η παγίδα
Αυτό εκτελείται πολύ πιο συχνά απ' όσο νομίζετε — σε widgets, σε απαντήσεις REST, στη δημιουργία αποσπασμάτων ορισμένων προσθέτων, και μία φορά ανά άρθρο σε έναν βρόχο (loop) σε ένα αρχείο. Χωρίς την προστασία is_singular / in_the_loop / is_main_query, το CTA σας εμφανίζεται δεκαπέντε φορές στο ευρετήριο του ιστολογίου και μέσα στη ροή RSS. Είναι το πιο κακομεταχειρισμένο φίλτρο στο WordPress.
Φιλτράρει τον τίτλο του άρθρου πριν την εμφάνιση.
Ενεργοποιείται
Κάθε φορά που καλείται η the_title() ή η get_the_title().
Υπογραφή
add_filter( 'the_title', 'my_callback', 10, 2 ); // receives $title, $post_idΗ παγίδα
Εκτελείται επίσης για τίτλους στο μενού του admin, στα μενού πλοήγησης και στο <title> του εγγράφου. Το να το φιλτράρετε χωρίς συνθήκη θα μετονομάσει πράγματα σε σημεία που δεν σκοπεύατε.
Ορίζει πόσες ΛΕΞΕΙΣ περιέχει ένα αυτόματα δημιουργημένο απόσπασμα. Η προεπιλογή είναι 55.
Ενεργοποιείται
Όταν το WordPress δημιουργεί ένα απόσπασμα για ένα άρθρο που δεν έχει χειροκίνητο απόσπασμα.
Υπογραφή
add_filter( 'excerpt_length', 'my_callback' ); // receives $length (words)Παράδειγμα
add_filter( 'excerpt_length', function ( $length ) {
return 25;
}, 999 ); // high priority: many themes set this too, and last one winsΗ παγίδα
Δεν έχει καμία επίδραση σε άρθρα που έχουν ΧΕΙΡΟΚΙΝΗΤΟ απόσπασμα — αυτά χρησιμοποιούνται αυτούσια. Και πολλά θέματα ορίζουν αυτό το φίλτρο μόνα τους, οπότε συχνά χρειάζεστε μεγάλο αριθμό προτεραιότητας για να επικρατήσετε.
Αλλάζει τη συμβολοσειρά που προστίθεται σε ένα περικομμένο απόσπασμα. Η προεπιλογή είναι " […]".
Ενεργοποιείται
Όταν περικόπτεται ένα αυτόματα δημιουργημένο απόσπασμα.
Υπογραφή
add_filter( 'excerpt_more', 'my_callback' ); // receives $moreΤροποποιεί ένα ερώτημα ΠΡΙΝ εκτελεστεί. Ο σωστός τρόπος για να αλλάξετε τι εμφανίζεται σε ένα αρχείο — πολύ καλύτερος από ένα δεύτερο WP_Query.
Ενεργοποιείται
Αφού αναλυθούν οι μεταβλητές του ερωτήματος, προτού δημιουργηθεί το SQL.
Υπογραφή
add_action( 'pre_get_posts', 'my_callback' ); // receives WP_Query $query (by reference)Παράδειγμα
add_action( 'pre_get_posts', function ( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return; // <- both guards are mandatory
}
if ( $query->is_category() ) {
$query->set( 'posts_per_page', 12 );
}
} );Η παγίδα
Εκτελείται και στο ADMIN, και εκτελείται για ΚΑΘΕ ερώτημα, συμπεριλαμβανομένων των μενού, των widgets και της βιβλιοθήκης πολυμέσων. Παραλείψτε τις προστασίες is_admin() και is_main_query() και θα αλλάξετε σιωπηλά τι εμφανίζει η λίστα άρθρων του admin — ένα σφάλμα που είναι πραγματικά δύσκολο να εντοπιστεί. Σημειώστε επίσης: τροποποιήστε το $query, μην επιστρέφετε τίποτα.
Φιλτράρει την ακατέργαστη πρόταση SQL WHERE ενός ερωτήματος.
Ενεργοποιείται
Καθώς συναρμολογείται το SQL του ερωτήματος.
Υπογραφή
add_filter( 'posts_where', 'my_callback', 10, 2 ); // receives $where, WP_Query $queryΗ παγίδα
Γράφετε ακατέργαστο SQL. Πάντα να προστατεύεστε με $query->is_main_query() και πάντα να χρησιμοποιείτε $wpdb->prepare() για κάθε είσοδο χρήστη. Αυτός είναι ο πιο γρήγορος τρόπος να εισαγάγετε SQL injection σε έναν ιστότοπο WordPress.
Φιλτράρει τον συνολικό αριθμό των άρθρων που βρήκε ένα ερώτημα — με βάση αυτόν υπολογίζεται η σελιδοποίηση.
Ενεργοποιείται
Αφού εκτελεστεί το ερώτημα, προτού υπολογιστεί η σελιδοποίηση.
Υπογραφή
add_filter( 'found_posts', 'my_callback', 10, 2 ); // receives $found_posts, WP_Query $queryΟρίζει το μέγεθος σε pixel πάνω από το οποίο το WordPress υποβαθμίζει ένα μεταφορτωμένο αρχείο και σερβίρει ένα αντίγραφο «-scaled» αντί για το πρωτότυπό σας. Προεπιλογή 2560.
Ενεργοποιείται
Κατά τη μεταφόρτωση, όταν το WordPress αποφασίζει αν μια εικόνα είναι «μεγάλη».
Υπογραφή
add_filter( 'big_image_size_threshold', 'my_callback' ); // receives int $thresholdΠαράδειγμα
// Serve originals at full resolution — no -scaled copy.
add_filter( 'big_image_size_threshold', '__return_false' );
// Or just raise the ceiling:
add_filter( 'big_image_size_threshold', function () {
return 3840;
} );Η παγίδα
Αυτή είναι η πιο συνηθισμένη αιτία του «η εικόνα μου φαίνεται θολή αφού την ανέβασα στο WordPress», και σχεδόν κανείς δεν ξέρει ότι υπάρχει. Το πρωτότυπό σας είναι ακόμη στον δίσκο — απλώς δεν σερβίρεται ποτέ. Σημειώστε ότι εφαρμόζεται στη ΜΕΓΑΛΥΤΕΡΗ πλευρά και επηρεάζει μόνο τις εικόνες που ανεβαίνουν αφού ενεργοποιηθεί το φίλτρο.
Φιλτράρει τον πίνακα των μεγεθών εικόνας που πρόκειται να δημιουργήσει το WordPress για μια μεταφόρτωση. Αφαιρέστε ένα μέγεθος (unset) για να σταματήσει η δημιουργία του.
Ενεργοποιείται
Κατά τη μεταφόρτωση, προτού δημιουργηθούν τα παράγωγα αρχεία.
Υπογραφή
add_filter( 'intermediate_image_sizes_advanced', 'my_callback', 10, 2 ); // receives $sizes, $metadataΠαράδειγμα
add_filter( 'intermediate_image_sizes_advanced', function ( $sizes ) {
unset( $sizes['1536x1536'] );
unset( $sizes['2048x2048'] );
return $sizes;
} );Η παγίδα
Η αφαίρεση ενός μεγέθους που το θέμα σας όντως ΧΡΗΣΙΜΟΠΟΙΕΙ σημαίνει ότι το WordPress καταφεύγει στο πρωτότυπο πλήρους μεγέθους — κάτι που είναι χειρότερο από τον χώρο δίσκου που εξοικονομήσατε. Και αυτό σταματά μόνο τη δημιουργία ΝΕΩΝ αρχείων· τα υπάρχοντα παραμένουν μέχρι να τα αναδημιουργήσετε.
Ορίζει την ποιότητα JPEG με την οποία το WordPress επανακωδικοποιεί τις μεταφορτωμένες εικόνες. Προεπιλογή 82.
Ενεργοποιείται
Κάθε φορά που το WordPress γράφει ένα JPEG.
Υπογραφή
add_filter( 'jpeg_quality', 'my_callback', 10, 2 ); // receives $quality, $contextΗ παγίδα
Η ποιότητα 82 είναι εντάξει για φωτογραφίες και εμφανώς κακή για screenshots, λογότυπα και επίπεδα γραφικά — αυτά έχουν έντονες ακμές και καθόλου φωτογραφικό θόρυβο για να κρύψουν τα ελαττώματα (artefacts). Επίσης: το wp_editor_set_quality είναι το πιο σύγχρονο φίλτρο και καλύπτει απευθείας τις κλάσεις του επεξεργαστή εικόνας· είναι σύνηθες να ορίζονται και τα δύο.
Ορίζει την ποιότητα εξόδου που χρησιμοποιούν οι κλάσεις WP_Image_Editor (GD και Imagick).
Ενεργοποιείται
Όταν ένα στιγμιότυπο επεξεργαστή εικόνας ορίζει την ποιότητά του.
Υπογραφή
add_filter( 'wp_editor_set_quality', 'my_callback', 10, 2 ); // receives $quality, $mime_typeΠροσθέτει τα προσαρμοσμένα μεγέθη εικόνας σας στο αναπτυσσόμενο μενού μεγεθών στο παράθυρο πολυμέσων και στον επεξεργαστή μπλοκ.
Ενεργοποιείται
Όταν το περιβάλλον πολυμέσων δημιουργεί τον επιλογέα μεγέθους του.
Υπογραφή
add_filter( 'image_size_names_choose', 'my_callback' ); // receives $sizesΠαράδειγμα
add_filter( 'image_size_names_choose', function ( $sizes ) {
return array_merge( $sizes, array( 'card' => __( 'Card', 'textdomain' ) ) );
} );Η παγίδα
Η add_image_size() καταχωρεί το μέγεθος αλλά ΔΕΝ το κάνει επιλέξιμο στον επεξεργαστή. Κάθε ερώτηση του τύπου «το προσαρμοσμένο μου μέγεθος εικόνας δεν εμφανίζεται στο αναπτυσσόμενο μενού» οφείλεται στην απουσία αυτού του φίλτρου.
Ελέγχει ή απορρίπτει ένα αρχείο ΠΡΙΝ μετακινηθεί στον φάκελο μεταφορτώσεων.
Ενεργοποιείται
Κατά τη μεταφόρτωση, προτού γραφτεί το αρχείο.
Υπογραφή
add_filter( 'wp_handle_upload_prefilter', 'my_callback' ); // receives $fileΗ παγίδα
Για να απορρίψετε ένα αρχείο, ορίστε το $file['error'] σε μια συμβολοσειρά μηνύματος και επιστρέψτε το $file. Η επιστροφή false ή η ρίψη εξαίρεσης δεν θα κάνει αυτό που θέλετε.
Φιλτράρει τον πίνακα μεταδεδομένων (συμπεριλαμβανομένων των μεγεθών που δημιουργήθηκαν) αφού επεξεργαστεί ένα συνημμένο.
Ενεργοποιείται
Αφού δημιουργηθούν οι παράγωγες εικόνες κατά τη μεταφόρτωση.
Υπογραφή
add_filter( 'wp_generate_attachment_metadata', 'my_callback', 10, 2 ); // receives $metadata, $attachment_idΗ παγίδα
Αυτό είναι το hook που χρησιμοποιούν τα πρόσθετα βελτιστοποίησης εικόνων. Μπορεί να είναι αργό — εκτελείται αφού γραφτεί κάθε μέγεθος εικόνας, και ένα HTTP request εδώ κάνει κάθε μεταφόρτωση να το περιμένει.
Φιλτράρει τους υποψήφιους του srcset που δημιουργεί το WordPress για μια responsive εικόνα.
Ενεργοποιείται
Όταν αποδίδεται μια responsive εικόνα.
Υπογραφή
add_filter( 'wp_calculate_image_srcset', 'my_callback', 10, 5 );Η παγίδα
Η αφαίρεση του μεγέθους medium_large (768w) αλλού υποβαθμίζει σιωπηλά το srcset — αυτό το μέγεθος υπάρχει σχεδόν αποκλειστικά για να το εξυπηρετεί.
Δεν έχουμε επαληθεύσει το ακριβές πλήθος ορισμάτων αυτού του hook σε σχέση με τον πηγαίο κώδικα του WordPress. Έλεγξε το developer.wordpress.org πριν βασιστείς σε αυτό. Προτιμούμε να επισημάνουμε την αβεβαιότητα παρά να παρουσιάσουμε σιωπηλά μια εικασία ως γεγονός.
Καταχωρεί σελίδες μενού και υπομενού στο admin.
Ενεργοποιείται
Όταν δημιουργείται το μενού του admin.
Υπογραφή
add_action( 'admin_menu', 'my_callback' );Παράδειγμα
add_action( 'admin_menu', function () {
add_options_page(
'My Plugin',
'My Plugin',
'manage_options', // capability — NOT a role
'my-plugin',
'my_render_settings_page'
);
} );Η παγίδα
Το όρισμα capability είναι ΔΙΚΑΙΩΜΑ (capability), όχι ρόλος. Το να περνάτε «administrator» φαίνεται να λειτουργεί (επειδή οι διαχειριστές έχουν ένα δικαίωμα με αυτό το όνομα σε ορισμένες διαμορφώσεις) και μετά παραχωρεί σιωπηλά πρόσβαση σε λάθος άτομα. Χρησιμοποιήστε το manage_options.
Εκτυπώνει μια ειδοποίηση στο πάνω μέρος μιας οθόνης του admin.
Ενεργοποιείται
Κατά την απόδοση μιας σελίδας του admin.
Υπογραφή
add_action( 'admin_notices', 'my_callback' );Η παγίδα
Εκτελείται σε ΚΑΘΕ οθόνη του admin. Ένα πρόσθετο που εμφανίζει μια ειδοποίηση «ευχαριστούμε για την εγκατάσταση!» χωρίς συνθήκη σε όλες τους είναι το πιο μισητό μοτίβο στο admin του WordPress. Προστατέψτε τη και κάντε τη να μπορεί να απορριφθεί.
Εκτελείται κάθε φορά που δημιουργείται ή ενημερώνεται ένα άρθρο. Το συνηθισμένο σημείο για την αποθήκευση δεδομένων meta box.
Ενεργοποιείται
Αφού γραφτεί ένα άρθρο στη βάση δεδομένων.
Υπογραφή
add_action( 'save_post', 'my_callback', 10, 3 ); // receives $post_id, $post, $updateΠαράδειγμα
add_action( 'save_post', function ( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( wp_is_post_revision( $post_id ) ) return;
if ( ! current_user_can( 'edit_post', $post_id ) ) return;
// ... now it is safe to save
}, 10, 1 );Η παγίδα
Εκτελείται σε ΑΥΤΟΜΑΤΕΣ ΑΠΟΘΗΚΕΥΣΕΙΣ και σε ΑΝΑΘΕΩΡΗΣΕΙΣ, καθώς και σε πραγματικές αποθηκεύσεις. Χωρίς τις τρεις προστασίες παραπάνω, τα meta σας αντικαθίστανται με κενές τιμές κάθε φορά που ο επεξεργαστής κάνει αυτόματη αποθήκευση — ένα σφάλμα που μοιάζει με δεδομένα που εξαφανίζονται τυχαία.
Καταχωρεί meta boxes στην οθόνη επεξεργασίας άρθρου.
Ενεργοποιείται
Όταν δημιουργείται η οθόνη επεξεργασίας.
Υπογραφή
add_action( 'add_meta_boxes', 'my_callback', 10, 2 ); // receives $post_type, $postΗ παγίδα
Τα κλασικά meta boxes δεν εμφανίζονται στον επεξεργαστή μπλοκ, εκτός αν ο επεξεργαστής μπλοκ καταφύγει σε λειτουργία συμβατότητας. Για έναν ιστότοπο εγγενή στον επεξεργαστή μπλοκ, καταχωρήστε post meta με show_in_rest και φτιάξτε αντ' αυτού ένα πάνελ στην πλαϊνή μπάρα.
Εκτελείται αφού ένας χρήστης συνδεθεί επιτυχώς.
Ενεργοποιείται
Κατά την επιτυχή ταυτοποίηση.
Υπογραφή
add_action( 'wp_login', 'my_callback', 10, 2 ); // receives $user_login, WP_User $userΕκτελείται αμέσως μετά τη δημιουργία ενός νέου χρήστη.
Ενεργοποιείται
Κατά την εγγραφή.
Υπογραφή
add_action( 'user_register', 'my_callback', 10, 2 ); // receives $user_id, $userdataΦιλτράρει το αποτέλεσμα της ταυτοποίησης. Επιστρέψτε ένα WP_Error για να μπλοκάρετε μια σύνδεση.
Ενεργοποιείται
Κατά τη διάρκεια της προσπάθειας σύνδεσης.
Υπογραφή
add_filter( 'authenticate', 'my_callback', 30, 3 ); // receives $user, $username, $passwordΗ παγίδα
Η προτεραιότητα έχει μεγάλη σημασία εδώ. Ο πυρήνας του WordPress συνδέει τους δικούς του ελέγχους στις προτεραιότητες 20 και 30 — αν συνδεθείτε πολύ νωρίς, εκτελείστε προτού καν ελεγχθεί ο κωδικός πρόσβασης.
Καταχωρεί διαδρομές (routes) και πεδία REST.
Ενεργοποιείται
Όταν αρχικοποιείται το REST API.
Υπογραφή
add_action( 'rest_api_init', 'my_callback' );Παράδειγμα
add_action( 'rest_api_init', function () {
register_rest_route( 'myplugin/v1', '/items', array(
'methods' => 'GET',
'callback' => 'my_get_items',
'permission_callback' => '__return_true', // BE DELIBERATE ABOUT THIS
) );
} );Η παγίδα
Το permission_callback είναι ΑΠΑΡΑΙΤΗΤΟ — από το WP 5.5 η παράλειψή του προκαλεί προειδοποίηση (notice), και η ρύθμισή του σε __return_true κάνει το endpoint εντελώς δημόσιο. Αυτό είναι εντάξει για πραγματικά δημόσια δεδομένα και σοβαρή τρύπα ασφαλείας για οτιδήποτε άλλο. Αποφασίστε, μην αφήνετε την προεπιλογή.
Προσθέτει ένα προσαρμοσμένο διάστημα επανάληψης για την wp_schedule_event().
Ενεργοποιείται
Όταν το WordPress δημιουργεί τη λίστα των διαθέσιμων προγραμμάτων του.
Υπογραφή
add_filter( 'cron_schedules', 'my_callback' ); // receives $schedulesΠαράδειγμα
add_filter( 'cron_schedules', function ( $schedules ) {
$schedules['every_five_minutes'] = array(
'interval' => 300, // seconds
'display' => __( 'Every 5 minutes', 'textdomain' ),
);
return $schedules;
} );Η παγίδα
Το WP-Cron δεν είναι πραγματικό cron. Εκτελείται μόνο όταν κάποιος επισκέπτεται τον ιστότοπο, οπότε ένας ιστότοπος με χαμηλή επισκεψιμότητα δεν θα εκτελεί ένα πεντάλεπτο πρόγραμμα κάθε πέντε λεπτά. Αν ο χρονισμός όντως έχει σημασία, απενεργοποιήστε το WP-Cron (DISABLE_WP_CRON) και καλέστε το wp-cron.php από ένα πραγματικό cron του συστήματος.
Εκτελείται αμέσως μετά την αποθήκευση ενός σχολίου.
Ενεργοποιείται
Κατά την υποβολή σχολίου.
Υπογραφή
add_action( 'comment_post', 'my_callback', 10, 3 ); // receives $comment_id, $approved, $commentdataΦιλτράρει τα δεδομένα σχολίου πριν αποθηκευτούν. Χρησιμοποιείται για ελέγχους spam και επικύρωση.
Ενεργοποιείται
Προτού γραφτεί το σχόλιο.
Υπογραφή
add_filter( 'preprocess_comment', 'my_callback' ); // receives $commentdataΗ παγίδα
Για να απορρίψετε ένα σχόλιο εδώ, καλέστε την wp_die() με ένα μήνυμα — η επιστροφή false δεν το σταματά.
Εκτελείται στη σελίδα λήψης παραγγελίας (order-received) μετά από μια επιτυχή ολοκλήρωση αγοράς.
Ενεργοποιείται
Όταν ο πελάτης φτάνει στη σελίδα ευχαριστιών.
Υπογραφή
add_action( 'woocommerce_thankyou', 'my_callback' ); // receives $order_idΗ παγίδα
ΔΕΝ είναι αξιόπιστο σημείο για να ενεργοποιήσετε την εκτέλεση της παραγγελίας. Εκτελείται μόνο αν ο πελάτης όντως φτάσει στη σελίδα ευχαριστιών — αν κλείσει την καρτέλα αφού πληρώσει, δεν εκτελείται ποτέ. Χρησιμοποιήστε το woocommerce_payment_complete ή ένα hook μετάβασης κατάστασης παραγγελίας για οτιδήποτε πρέπει οπωσδήποτε να συμβεί.
Εμφανίζει σήμανση ακριβώς πριν από το κουμπί προσθήκης στο καλάθι σε μια σελίδα προϊόντος.
Ενεργοποιείται
Καθώς αποδίδεται η σελίδα προϊόντος.
Υπογραφή
add_action( 'woocommerce_before_add_to_cart_button', 'my_callback' );Προσθέτει, αφαιρεί ή αναδιατάσσει πεδία στην κλασική ολοκλήρωση αγοράς (checkout).
Ενεργοποιείται
Όταν δημιουργείται η φόρμα ολοκλήρωσης αγοράς.
Υπογραφή
add_filter( 'woocommerce_checkout_fields', 'my_callback' ); // receives $fieldsΗ παγίδα
Επηρεάζει μόνο την ΚΛΑΣΙΚΗ ολοκλήρωση αγοράς (με shortcode). Η νεότερη ολοκλήρωση αγοράς με μπλοκ την αγνοεί εντελώς και προσαρμόζεται μέσω Slot & Fill σε JavaScript. Αυτό μπερδεύει σχεδόν τους πάντες την πρώτη φορά.