Crochets WordPress: Mastering Object and Name Camed Methods
Les crochets sont fondamentaux pour le développement WordPress. Les articles précédents de sitepoint ont exploré les bases du crochet, la distinction entre les actions et les filtres et les méthodes de tir d'événements alternatifs. Cet article se concentre sur l'accrochage des méthodes de classe instanciées et la navigation sur les espaces de noms dans le système de crochet WordPress.
Méthodes d'objet d'accrochage: un exemple de gestionnaire de publicité
Imaginez la construction d'un plugin de gestionnaire de publicité. Vous créeriez une classe AdManager
avec des méthodes pour différents réseaux d'annonces.
class AdManager { public function adsense() { ?> <ins data-ad-client="ca-pub-xxxxxxxxxxxxxxxx" data-ad-slot="6762452247" style="display:inline-block;width:336px;height:280px"></ins> (adsbygoogle = window.adsbygoogle || []).push({}); <?php } public function buysellads() { // ... } public static function get_instance() { static $instance = null; if ( $instance == null ) { $instance = new self(); } return $instance; } }
pour accrocher la méthode adsense
à l'action before_post_content
(par exemple, dans votre thème functions.php
), vous avez besoin d'une instance de la classe:
add_action( 'before_post_content', array( AdManager::get_instance(), 'adsense' ) );
L'utilisation d'une méthode singleton (get_instance()
) fournit un moyen propre de gérer l'instance de classe.
Espaces de noms et Système de crochet WordPress
Le système WordPress Hook est antérieure aux espaces de noms. Accrocher des fonctions et des méthodes dans les noms de noms nécessite une attention particulière.
Considérons une classe AdManager
dans l'espace de noms SitePointPlugin
:
namespace SitePoint\Plugin; class AdManager { // ... }
pour accrocher sa méthode adsense
, appliquez l'espace de noms:
add_action( 'before_post_content', array( SitePointPluginAdManager::get_instance(), 'adsense' ) );
Si l'appel add_action
et la classe sont dans le même fichier d'espace de nom, la mise en avant n'est pas strictement nécessaire. Il en va de même pour les fonctions dans les noms de noms:
namespace SitePoint\Plugin; function google_site_verification() { echo '<meta content="ytl89rlFsAzH7dWLs_U2mdlivbrr_jgV4Gq7wClHDUJ8" name="google-site-verification"></meta>'; } add_action( 'wp_head', 'SitePoint\Plugin\google_site_verification' );
un piège lié à l'espace de noms
Enregistrer les crochets de désinstallation avec des classes dans les noms de noms nécessite des soins similaires. Ne pas qualifier pleinement le nom de classe peut conduire à un comportement inattendu. Présentez toujours l'espace de noms même si le register_uninstall_hook
et la classe sont dans le même fichier d'espace de nom.
Conclusion
Comprendre comment gérer les méthodes d'objets et les espaces de noms dans le système de crochet WordPress est crucial pour construire des plugins et des thèmes robustes. Alors que certaines bizarreries existent en raison du contexte historique du système, une attention particulière aux détails garantit une intégration en douceur.
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!