WordPress pour le développement d'applications Web événements, actions et filtres

Tout au long de cette série, nous avons examiné comment utiliser WordPress pour créer des applications Web..

Jusqu'à présent, nous avons établi que WordPress est une base - et non un cadre - et nous avons un peu discuté de la nécessité d'éviter d'essayer d'insérer WordPress dans un autre type de modèle de conception que celui de type natif..

À cette fin, nous avons établi que WordPress utilisait un modèle de conception piloté par les événements et que celui-ci était mieux représenté avec son système d'actions et de filtres..

Bien que l’objectif général de cette série soit de fournir un aperçu de la manière dont WordPress peut être utilisé pour le développement d’applications Web, il est important de jeter un coup d’œil à quelques exemples pratiques de la puissance réelle du système de points d'ancrage afin de comprendre à quel point en tant que développeurs, pouvons personnaliser WordPress pour répondre à nos besoins.

Dans cet article, nous allons donc examiner un code qui représente certaines actions courantes pouvant être réalisées à l'aide de points d'ancrage WordPress, ainsi que des fonctionnalités légèrement non standard..

En fin de compte, à la fin de l’article, vous devez bien comprendre pourquoi il est essentiel de tirer parti de la nature événementielle de WordPress pour créer des applications, et pourquoi nous ne devrions pas essayer de transformer WordPress et ses modèles sous-jacents ne pas.


Crochets: Actions et Filtres

Dans l'article précédent, nous avions donné deux définitions - une spécifiquement pour les actions et une autre pour les hameçons:

Les actions sont des événements du cycle de vie d'une page WordPress lorsque certaines choses se sont produites: certaines ressources sont chargées, certaines installations sont disponibles et, en fonction du délai de l'action, certaines choses doivent encore être chargées..

Les filtres sont des fonctions par lesquelles WordPress transmet des données à certains moments du cycle de vie d'une page. Ils sont principalement responsables de l’interception, de la gestion et de la restitution des données avant de les restituer au navigateur ou de leur sauvegarde dans la base de données..

C’est essentiel pour comprendre les deux types d’événements WordPress, car il peut arriver que vous souhaitiez anticiper un processus, en suivre un, ou manipuler des informations avant de les afficher à l’écran..

Il est essentiel de connaître la différence entre les actions et les filtres pour créer des applications, des plugins et des thèmes dans WordPress..

À cette fin, nous allons suspendre la discussion sur Pourquoi WordPress peut être utilisé pour des applications Web et examine de manière pratique plusieurs actions et filtres afin de nous assurer que nous comprenons tous le fonctionnement du système d’événements, le type de choses que nous pouvons faire avec et, espérons-le, une créativité débordante. ceux-ci peuvent être utilisés pour créer une expérience plus personnalisée.

Actions communes

Dans un premier temps, nous examinerons plusieurs actions dont la complexité augmente par rapport à la précédente afin de montrer à quel point des actions puissantes peuvent devenir.

1. Ajouter un fichier JavaScript à l'en-tête

Cette action est si courante qu'elle est probablement commune aux développeurs les plus intermédiaires. Reste cependant le point: ceci est un exemple d’action WordPress classique utilisée dans presque tous les types de thèmes existants..

En bref, il profite de la wp_enqueue_scripts crochet. Cela se déclenche au cours de la séquence de chargement des pages et vous permet d'indiquer à WordPress les fichiers source à inclure, ainsi que  il devrait l'inclure (comme dans, dans l'en-tête ou le pied de page).

function example_add_theme_scripts () wp_enqueue_script ('re-example-script', get_stylesheet_directory_uri (). '' /js/example.js ', array (' jquery '),' 1.0.0 ', FALSE);  add_action ('wp_enqueue_scripts', 're_add_theme_scripts');

C'est assez facile à comprendre, à droite?

Prenez le script dans le thème exemple.js fichier du répertoire JavaScript, assurez-vous qu'il est marqué comme dépendant du chargement de jQuery en premier, notez qu'il s'agit de la version 1.0.0 du script, et nous le faisons ne pas vouloir le charger dans le pied de page.

2. Personnaliser le Lire la suite Lien

WordPress fournit directement la possibilité d’ajouter un lien "Lire la suite ..." ou "Continuer la lecture ..." obtenu à l'aide de la tag dans l'éditeur de publication.

Vous pouvez le styler à l'aide de styles natifs, mais supposons que vous souhaitiez ajouter du code supplémentaire qui l'intègre mieux à votre thème, soit plus facile à intégrer à un design réactif, ou quelque chose de similaire..

Vous pouvez ensuite utiliser l'action suivante:

function exemple_add_more_link_class ($ link, $ text) $ html = '
'; $ html. = '
'. $ link. '
'; $ html. = '
'; return $ html; add_action ('the_content_more_link', 'example_add_more_link_class', 10, 2);

Notez que nous accrochons dans the_content_more_link qui accepte l'ancre et le texte de l'ancre pour le lien plus.

Dans la fonction, nous encapsulons alors le lien réel dans sa propre div conteneur afin que nous puissions avoir un plus grand contrôle sur le style du lien.

3. Récupérer le nom d'une personne via Ajax

Cet exemple particulier suppose que vous utilisez Ajax dans votre projet et que vous avez déjà configuré les fonctionnalités appropriées pour vous assurer que vous pouvez effectuer des requêtes asynchrones..

Cela suppose également que les données envoyées du côté client au côté serveur sont l'ID d'un utilisateur pour lequel vous voulez renvoyer son nom..

fonction example_get_user_name () $ user = null; if (isset ($ _GET ['user_id']]) && 0 < strlen( trim( $_GET['user_id'] ) ) )  $user = get_user_by( 'id', $_GET['user_id'] ); if ( FALSE == $user )  echo $user->Prénom;  else echo '-1';  // end if die;  // end re_get_employee_by_name add_action ('wp_ajax_example_get_user_user_name', 'example_get_user_name_name'); add_action ('wp_ajax_nopriv_example_get_user_name_name', 'example_get_user_name_name');

Donc, dans l'exemple ci-dessus, nous vérifions d'abord pour nous assurer que le identifiant d'utilisateur est situé dans le $ _GET collection, et, si tel est le cas, il tentera de récupérer l'utilisateur à partir de cet ID.

Si l'utilisateur existe, il renvoie alors le prénom de l'utilisateur au client; sinon, ça va faire écho à un-1'. Cela nous donne ensuite la souplesse nécessaire pour réagir de manière appropriée côté client..

Filtres communs

Comme nous l'avons fait avec les actions susmentionnées, nous examinerons plusieurs filtres dont chacun augmentera légèrement sa complexité afin que nous puissions voir certaines des choses que nous sommes capables de faire avec des filtres qui nous donnent une plus grande flexibilité dans nos projets WordPress.

1. Ajouter du contenu à un seul poste

Bien que le titre de cette action particulière soit suffisamment clair, supposons que vous souhaitiez ajouter une phrase au bas de chaque message de votre blog, mais seulement vouloir le faire sur des postes simples.

Ceci peut être réalisé avec le code suivant:

function exemple_append_post_content ($ content) if (is_single ()) $ html = '
'; $ html. = 'Ce contenu apparaîtra à la fin d’un message.'; $ html. = '
'; $ content. = $ html; return $ content; add_filter ('the_content', 'example_append_post_content');

C'est assez facile à comprendre, à droite?

le contenu Le filtre passe le contenu réel de la publication à la fonction accrochée. À partir de là, nous sommes libres de manipuler les données comme bon nous semble..

Dans notre cas, nous vérifions d'abord s'il s'agit d'une seule page. Si oui, alors nous ajouterons un post-suffixe conteneur avec une seule phrase, l'ajouter au contenu, puis le renvoyer.

S'il ne s'agit pas d'un article en particulier, le contenu sera renvoyé normalement..

2. Rediriger les utilisateurs après la connexion

Un autre type de filtre dont vous pouvez tirer parti consiste à rediriger les utilisateurs après leur connexion à l'application..

Par exemple, s’il s’agit d’un administrateur, il devrait être dirigé vers le tableau de bord des messages; sinon, ils devraient être redirigés vers la page d'accueil du site.

Pour ce faire, nous pouvons tirer parti de la filtre login_redirect:

function exemple_login_redirect ($ redirect_to, $ request, $ utilisateur) return (isset ($ utilisateur-> rôles) && is_array ($ utilisateur-> rôles) && in_array ('administrateur', $ utilisateur-> rôles))? home_url ('/ wp-admin /'): home_url ();  // end soi_login_redirect add_filter ('login_redirect', 'example_login_redirect', 10, 3);

Dans le code ci-dessus, nous avons fourni un filtre personnalisé dans le login_redirect crochet qui effectue les opérations suivantes:

  • Si l'utilisateur est un administrateur, redirigez-le vers le tableau de bord.
  • Sinon, dirigez-les vers le home_url du site.

Assez facile.

Bien que ce soit un exemple relativement simple, il devrait vous inciter à penser davantage aux choses avancées que vous pouvez faire en fonction des rôles et / ou des capacités de l'utilisateur..

Par exemple, au lieu de vous contenter de les rediriger vers certains aspects de l’application, vous pourrez leur montrer diverses informations en fonction de leurs rôles, par exemple..

3. Personnalisation des emails

Cet exemple particulier est un peu plus compliqué car le add_filter les appels entrent dans le contexte d'une autre fonction qui a un appelant tiers.

Plus précisément, nous allons envoyer un courrier électronique, mais nous voulons nous assurer que nous avons personnalisé le type de contenu, le contenu et le nom de l'expéditeur avant d'envoyer le contenu..

Pour ce faire, nous devons d’abord définir une fonction:

function exemple_exmail_user ($ input) // Code retiré de la brièveté. // Supposons que $ message est défini comme étant le contenu du courrier électronique add_filter ('wp_mail_content_type', create_function (", 'return" text / html ";')); add_filter ('wp_mail_from', 'example_mail_from'); add_filter (wp_mail_from ');' ',' example_mail_from_name '); if (wp_mail ($ input [' adresse email '],' votre compte a été créé! ', $ message)) // Redirection vers la maison wp_redirect (home_url ()); else  // Spécifie une page vers laquelle diriger une erreur exit; function example_mail_from ($ email) return '[email protected]'; function exemple_mail_from_name ($ name) return 'Example Web App';

Après cela, nous devons définir des fonctions qui sont rattachées au filtre spécifié ci-dessus. À savoir…

  • wp_mail_content_type
  • wp_mail_from
  • wp_mail_from_name

Comme vous pouvez le constater, les filtres peuvent se compliquer assez rapidement, mais ils sont puissant et si vous comprenez ce que vous faites et comment toutes les pièces s'assemblent, pour ainsi dire, vous pouvez vraiment faire des choses incroyables..


Il suffit de gratter la surface

Comme avec la plupart des tutoriels et des exemples sur ce site, nous ne faisons que gratter la surface de ce qui peut être fait en utilisant le système de hook WordPress.

Bien entendu, ces exemples ne sont en réalité que cela - des exemples de la puissance des filtres et des actions en matière de personnalisation de l'expérience WordPress..

Bien que cet article et l'exemple de code servent d'exemples pratiques de certaines choses que vous puissiez faire, ils ne sont pas censés être le guide ultime pour travailler avec des hooks..

Au lieu de cela, ils sont destinés à montrer comment nous pouvons commencer à tirer parti de ce qui est disponible dans l'API WordPress lors de la création d'une application Web..


Suivant…

Dans le prochain article, nous allons commencer par examiner plusieurs installations fournies par WordPress dès la sortie de la boîte. Nous verrons en quoi elles sont utiles pour créer des applications Web, comment les utiliser pour notre travail spécifique et comment elles peuvent être utiles pour créer des applications Web..

Nous verrons ensuite si nombre de ces fonctionnalités fonctionnent bien dans le contexte d’une application Web et comment nous pouvons utiliser des points d’accès pour personnaliser davantage le comportement qu’elles fournissent..