Maison > Tutoriel CMS > WordPresse > D'autres façons de déclencher des événements dans WordPress

D'autres façons de déclencher des événements dans WordPress

Christopher Nolan
Libérer: 2025-02-15 11:12:12
original
435 Les gens l'ont consulté

Alternative Ways of Triggering Events in WordPress

Explication détaillée du mécanisme de déclenchement des événements WordPress: conseils avancés et meilleures pratiques

Cet article est la deuxième partie du tutoriel WordPress Hook System. Méthodes de classe avec des actions et des filtres.

Points clés:

    Les fonctions
  • do_action_ref_array() et apply_filters_ref_array() fournissent des alternatives pour déclencher des événements WordPress, qui utilisent des tableaux pour transmettre des paramètres et sont plus efficaces lors de la gestion d'un grand nombre de paramètres.
  • WordPress permet d'accrocher les méthodes de classe (statique et non statique) aux actions et aux filtres. Une méthode statique utilise un nom de classe ou une constante __CLASS__ au lieu de $this.
  • Événements déclenchés via des plugins WordPress sans écrire de code, tels que l'événement Espresso, le calendrier des événements et l'organisateur d'événements. Ces plugins prennent également en charge l'intégration avec des plateformes telles que Facebook, Google Calendar et EventBrite.

Méthode de déclenchement de l'événement avancé

Dans l'article précédent, WordPress utilise généralement des fonctions do_actions() et apply_filters() pour déclencher des événements et s'abonner à eux via add_action() et add_filter(). Mais il existe d'autres façons: do_action_ref_array() pour les crochets d'action, apply_filters_ref_array() pour les crochets filtrants.

Les fonctions de ces deux paires de fonctions sont les mêmes, la différence est la méthode de passage des paramètres. do_action() et apply_filters() passer directement les paramètres, tandis que do_action_ref_array() et apply_filters_ref_array() utilisent des tableaux pour transmettre des paramètres, qui sont plus clairs et plus faciles à lire lorsqu'il existe de nombreux paramètres.

Exemple de code

L'exemple suivant montre comment do_action_ref_array() et apply_filters_ref_array() sont utilisés:

do_action_ref_array() Exemple:

user_profile_update_errors Les actions sont déclenchées avant que WordPress ne mette à jour les profils utilisateur. Le code suivant vérifie que le champ personnalisé "ville" est vide:

add_action( 'user_profile_update_errors', function ( $errors, $update, $user ) {
    if ( empty( $_POST['city'] ) ) {
        $errors->add( 'city_empty', __( 'City field cannot be left empty.' ) );
    }
}, 10, 3 );
Copier après la connexion
Copier après la connexion

apply_filters_ref_array() Exemple:

Le code suivant modifie l'URL de redirection du filtre bp_activity_permalink_redirect_url dans bbpress:

add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
    $redirect = 'http://website.com/custom-page/';
    return $redirect;
}, 10, 2 );
Copier après la connexion
Copier après la connexion

quand utiliser do_action_ref_array() et apply_filters_ref_array()

Lors du développement de plug-ins ou de thèmes,

et do_action_ref_array() sont meilleurs que apply_filters_ref_array() et do_action(), et le code est plus simple et plus facile à lire lorsqu'un grand nombre de paramètres sont nécessaires. apply_filters()

Hook Class Méthodes aux actions et filtres

L'exemple précédent montre comment accrocher les fonctions nommées et anonymes des actions et des filtres. Ce qui suit décrit comment accrocher les méthodes de classe (statique et non statique) aux actions et filtres WordPress.

Ajouter des crochets dans le constructeur:

La plupart des développeurs WordPress ajoutent tous les appels add_action() et add_filter() au constructeur de la classe:

add_action( 'user_profile_update_errors', function ( $errors, $update, $user ) {
    if ( empty( $_POST['city'] ) ) {
        $errors->add( 'city_empty', __( 'City field cannot be left empty.' ) );
    }
}, 10, 3 );
Copier après la connexion
Copier après la connexion

Pour les méthodes statiques, utilisez le nom de classe ou __CLASS__ constante au lieu de $this:

add_filter( 'bp_activity_permalink_redirect_url', function ( $redirect, $activity ) {
    $redirect = 'http://website.com/custom-page/';
    return $redirect;
}, 10, 2 );
Copier après la connexion
Copier après la connexion

Utiliser la méthode d'initialisation statique:

Une autre façon est de créer une méthode statique pour initialiser tous les crochets:

class DemoPlugin {
    public function __construct() {
        add_action( 'wp_head', array( $this, 'google_site_verification' ) );
        add_filter( 'the_content', array( $this, 'we_love_sitepoint' ) );
    }
    // ... 方法定义 ...
}
new DemoPlugin();
Copier après la connexion

Résumé

Cet article décrit des alternatives au déclenchement des événements WordPress et comment accrocher les méthodes de classe aux actions et aux filtres. Les articles ultérieurs continueront d'explorer une utilisation et des précautions plus avancées.

Alternative Ways of Triggering Events in WordPress

FAQ

(La partie FAQ est omise ici, car le contenu de la partie FAQ d'origine est faiblement lié au sujet de l'article et est plus long, vous pouvez donc le compléter ou le modifier vous-même selon les besoins.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal