WooCommerce. Sådan finder du funktioner knyttet til specifikke hooks i WordPress og WooCommerce

I WordPress og WooCommerce er hooks en vigtig del af, hvordan man kan tilpasse og udvide funktionaliteten af et WordPress tema. Hooks giver udviklere mulighed for at tilføje funktionalitet på specifikke steder i kodebasen, uden at ændre de oprindelige filer.

Men hvad nu hvis du gerne vil finde de funktioner som bliver aktiveret på et givent hook?

Hvad er en Hook?
En hook i WordPress og WooCommerce kan være enten en action hook eller en filter hook:

  • Action Hooks: Bruges til at udføre funktioner på bestemte steder i koden.
  • Filter Hooks: Bruges til at ændre data før det bliver sendt videre (f.eks. ændre indholdet af et indlæg eller en produktbeskrivelse).

For eksempel, i WooCommerce er der mange foruddefinerede hooks, som du kan bruge til at tilføje ekstra indhold før eller efter et produkt, på produkt-sider, og meget mere.

Sådan finder du funktioner, der er knyttet til et specifikt hook

Hvis du vil identificere, hvilke funktioner der er tilknyttet et bestemt hook, kan du debugge det ved at bruge følgende metode. Indsæt nedenstående kode i din header.php eksempelvis, og fjern det igen, når du er færdig med at debugge. Bemærk, at denne debugging-metode ikke er skjult og vil være synlig for alle besøgende på siden.

I dette eksempel ser vi på hooket woocommerce_before_single_product_summary.

<?php
global $wp_filter;
echo ‘<pre>’;
print_r($wp_filter[‘woocommerce_before_single_product_summary’]);
echo ‘</pre>’;
?>

Husk at bruge denne metode midlertidigt eller på et udviklings- eller stagingmiljø.

Hvad bruger jeg det til?
Når jeg arbejder med at rette kode i temaer udviklet af andre, kan det nogle gange være nødvendigt at deaktivere bestemte hooks sat af det aktive tema selv og/eller andre plugins. Det sker typisk, hvis vi har udviklet nye funktioner, der erstatter de eksisterende. For eksempel kunne det være et produktgalleri. I sådanne tilfælde er det vigtigt at få overblik over, hvilke hooks der bliver eksekveret, så jeg kan fjerne de relevante hooks uden at påvirke resten af funktionaliteten.