Hjemmeside » WordPress » Sådan bruges WordPress Action Hooks i Theme Customization

    Sådan bruges WordPress Action Hooks i Theme Customization

    WordPress-temaer giver en forholdsvis nem måde at tilpasse udseendet af et tema. Hvis temaets valg ikke giver dig passende designvalg, kan du blot tilføje en ny regel til barnetemaets standard stilarkfil, der hedder style.css. Men hvad sker der, når du også vil ændre temaets funktionalitet? Det er et af de tilfælde, hvor WordPress-handlinger kommer til din hjælp.

    WordPress er blevet så populært dels på grund af dets høje tilpasningsevne. WordPress Core er fyldt med forskellige kroge, der gør det muligt for udviklere at ændre eller forbedre standardfunktionaliteten. Desuden har vi lov til at medtage brugerdefinerede kroge i vores temaer og plugins til hjælpe andre udviklere til nemt at tilpasse vores kode til deres behov.

    Om WordPress kroge

    WordPress kroge virker lidt ligner virkelige kroge i den forstand, at du kan fange fisken du ønsker på det rette sted, hvis du bruger dem korrekt.

    Du kan fjern en fanget funktion (for eksempel kan du fjerne WordPress-administratorlinjen for brugere på lavt niveau), du kan lad det være intakt og forbedre det med din egen funktionalitet (for eksempel kan du tilføje flere menuer eller widgetområder til et tema), eller du kan tilsidesætte det (for eksempel kan du ændre opførelsen af ​​en kernefunktion).

    Der er to forskellige slags kroge i WordPress: handlinger og filtre. I dette indlæg vil vi se på, hvordan vi kan gøre brug af action kroge i tema tilpasning.

    Hvordan WordPress kroge arbejde

    At bruge et meget simpelt sprog, handlinger Angiv det der er sket noget under WordPress-livscyklus: visse dele af webstedet er blevet indlæst, visse indstillinger eller indstillinger er blevet oprettet, plugins eller widgets er blevet initialiseret og så videre.

    filtre er forskellige fra handlinger i deres natur. De er vant til send data igennem, og ændre, administrere eller opfange det før det gøres til skærmen eller gemmer brugerdata i databasen.

    På hvert væsentligt vartegn af WordPresss livscyklus findes der enten en handling eller a filter krog som vi kan Tilføj vores brugerdefinerede kode for at ændre standardadfærd til vores behov.

    De bestemte handlinger og filtre, der kører under en forespørgsel, afhænger af, hvilken side der blev anmodet af brugeragenten: For eksempel er der i en enkelt postforespørgsel kroge relateret til enkelte indlæg tilgængelige, men kroge relateret til andre dele af webstedet (f.eks. Admin-området) er ikke.

    Find Action Hooks

    Handlingsreferencen til WordPress Codex giver et detaljeret overblik over de handlinger, der kører gennem forskellige anmodninger. Det vigtige er, at hvis vi vil udføre en opgave, skal vi krog på det rigtige sted, ikke før eller efter det, ellers vil handlingen ikke blive gennemført.

    Så for eksempel hvis vi vil Tilføj vores Google Analytics-kode til et websted vi er nødt til Krog vores handling lige før foden er lastet.

    Hvis vi taler om tema tilpasning, kan action kroge komme fra to forskellige steder: fra WordPress Core og selve temaet. Der er temaer, der slet ikke har kroge, men andre giver udviklere nogle eller mange - det er altid temaforfatterens valg. Standard Twenty Fifteen Theme har kun en handlingskrog til footer-tilpasning under navnet 'twentyfifteen_credits'.

    Hvis du kan lide at gennemse kildekoden, kan du også finde handlingskroge nemt. Handlingskroge tilføjes til koden med do_action () WordPress-funktionen.

    Hvis du kører en hurtig søgning efter udtrykket 'do_action' i en mere avanceret kodeditor - som jeg gjorde i Eclipse nedenfor - kan du se en liste over de steder, hvor du kan tilslutte din brugerdefinerede funktionalitet til kernen. Jeg søgte i / Wp-includes / mappe, men du kan også køre en søgning efter / Wp-admin / mappe, der indeholder handlingskroge relateret til WordPress dashboard (admin area).

    Den gode ting er, at navne på action kroge er normalt temmelig selvforklarende, men der er normalt en god kommentar inde i koden Det kan give dig mere viden om, hvorvidt den givne handlingskrog er god, fordi du vil bruge den til.

    For eksempel siger kodekommentaren før 'widgets_init'-handlingskrogen det “brande efter at alle standard WordPress widgets er blevet registreret”. Hvis du kigger på koden før denne handlingskrog, kan du finde alle standard WP widgets initialisering før det - så du kan være sikker på, at kommentaren ikke lykkedes, og hvis du vil registrere din egen brugerdefinerede widget, Dette vil være det rette sted.

    I mange tilfælde giver kildekoden os meget mere information end Codex, så det kan være en god ide at lære at hurtigt navigere i det.

    Tilføj dine egne handlinger

    Når du vil tilføje din egen handling, skal du Opret en brugerdefineret funktion og binde denne funktion til en bestemt handlingskrog ved at bruge funktionen add_action () WordPress. Tilpassede handlinger tilføjet med funktionen add_action () er normalt udløst på stedet når kernen kalder den relevante do_action () funktion.

    Lad os se et simpelt eksempel.

    Sådan finder du den handling, du har brug for

    Lad os sige, at du vil tilføje dit brugerdefinerede favicon til dit websted. For det første skal du finde den rigtige handlingskrog, du kan binde din egen funktionalitet til.

    Lad os tænke. Hvis du vil tilføje et favicon til en almindelig HTML-side, hvor vil du sætte det? Selvfølgelig skal du placere det inde i afsnit af HTML-filen med følgende markering:

      

    Så handlingen krogen du har brug for skal være relateret til indlæsningen af afsnit.

    (1) Åbn handlingsreferencen, og se hvad den har at tilbyde. Vi er heldige, som om vi gennemser handlingerne, kan vi kun finde en, wp_head, at baseret på dets navn har muligheden for at være relateret til indlæsningen af afsnit.

    (2) For at være sikker, lad os tjek dokumentationen i WordPress Codex. Codex anbefaler det “du bruger denne krog ved at have din funktion ekko output til browseren”, så lige nu synes det at være perfekt for os. Men lad os kontrollere det i kildekoden.

    (3) Da denne krog ikke er relateret til adminområdet, skal vi køre vores søgning i / Wp-includes / folder. Hvis vi søger efter ordet 'wp-head', får vi mange resultater, da denne specifikke handling bruges af WP Core mange gange.

    Vi skal kigge efter stedet, hvor det bliver defineret, så søg efter udtrykket do_action ('wp_head'. Bemærk, at vi ikke afsluttede parenteserne, da vi ikke kan være sikre på, om denne handling har parametre eller ej.

    Eclipse returnerer kun ét resultat, der kan findes inde i /wp-includes/general-template.php fil. Kommentaren inden handlingskrogdefinitionen siger, at den “udskriver scripts eller data i hovedetiketten på forsiden”, så nu kan vi være døde i det wp_head er den handlingskrog vi har brug for.

    Kontrol af parametre

    Når du tilføjer dine egne handlinger, skal du også være sikker på, om den krog du vil bruge tager parametre eller ej. Du kan nemt finde ud af dette ved at se på funktionen do_action ().

    Syntikken af ​​funktionen do_action () er følgende:

     do_action ('name_of_action' [, $ parameter1, $ parameter2, ...]) 

    Kun navnet på handlingen er påkrævet, parametrene er valgfrie. Hvis du finder argumenter i det relevante opkald af funktionen do_action (), skal du inkludere dem i erklæringen af ​​den brugerdefinerede funktion, du opretter.

    Hvis du ikke finder nogen, skal din brugerdefinerede funktion arbejde uden argumenter. I do_action () definitionen af ​​wp_head action hook er der ingen parametre.

    Lad os sammenligne det med en handlingskrog, der tager en parameter. Handlingskroen kaldet 'wp_register_sidebar_widget' tager en parameter, som du altid skal passere til den brugerdefinerede funktion, du binder til krogen.

    Lad os se forskellen i do_action () syntaksen af ​​de to tilfælde:

     do_action ('wp_head'); do_action ('wp_register_sidebar_widget', $ widget);

    I det første tilfælde er der ingen parameter, så den brugerdefinerede funktion vil bruge følgende syntaks:

     funktion my_function_without_parameters () ... 

    I det andet tilfælde er der en parameter, som du altid skal passere som et argument i erklæringen af ​​din brugerdefinerede funktion:

     funktion my_function_with_parameters ($ widget) ... 

    Sådan får du din egen funktion i

    Nu ved vi alt, hvad vi har brug for. Lad os oprette vores brugerdefinerede funktion, der vil vise et favicon på vores hjemmeside.

    Opret først en ny funktion uden nogen argumenter, og bind den derefter til wp_head-handlingskrogen ved hjælp af add_action () WordPress-funktionen.

     funktion custom_add_favicon () echo '';  add_action ('wp_head', 'custom_add_favicon');

    Du skal send navnet af handlingen krogen til funktionen add_action () som et argument først, så skal du Tilføj navnet på din brugerdefinerede funktion.

    Dette er de to nødvendige parametre for add_action (). Det har også to valgfrie parametre, prioritet og accepterede argumenter. Lad os se, hvordan du bruger disse.

    Definer prioriteter

    Det sker i mange tilfælde, at der er mere end en handling bundet til samme krog. Så hvilken vil blive udført først? Det er her, vi kan bruge $ prioritet valgfri parameter af funktionen add_action ().

    Vi tilføjer prioriteten som et positivt heltal, standardværdien er 10. Hvis vi ønsker en handling, der skal udføres tidligt, giver vi det en lavere værdi, hvis vi vil have det til at blive henrettet senere, giver vi det en højere værdi.

    Så hvis vi mener, at favicon skal være der tidligt, kan vi forbedre vores tidligere add_action () opkald på følgende måde:

     add_action ('wp_head', 'custom_add_favicon', 5); 

    Vær opmærksom på, at prioriteterne altid skal være sat forholdsvis til de andre brugerdefinerede funktioner der bruger den samme handlingskrog.

    Tilføj antallet af accepterede argumenter

    Du skal tilføje antallet af accepterede argumenter, hvis du bruger en handlingskrog, der tager parametre. Lad os se det eksempel, vi tidligere brugte.

    Handlingskrogen 'wp_register_sidebar_widget' tager en parameter, så når vi binder vores brugerdefinerede funktion til denne krok, skal vi også inkludere dette som et argument, når vi kalder funktionen add_action ().

    Vores kode i dette tilfælde vil se sådan ud:

     funktion my_sidebar_widget_function ($ widget) // Din kode add_action ('wp_register_sidebar_widget', 'my_sidebar_widget_function', 10, 1); 

    Bemærk at vi skal Tilføj også prioriteten (vi valgte standard 10 her) for at sikre, at WordPress ved, hvad hver parameter betyder. Hvis vi udelade prioriteten, kunne WordPress antage, at 1 er prioriteret hvilket ikke er sandt, da det angiver antallet af accepterede argumenter.

    Konklusion

    Du kan lave mange eksperimenter med action kroge i tema tilpasning. For eksempel kan du tilføje dine brugerdefinerede scripts (JS) og stilarter (CSS) med wp_enqueue_scripts action hook eller din Google Analytics kode med wp_footer action hook.

    Du kan ikke kun tilføj dine egne handlinger, men du kan også fjern komplette funktionaliteter fra WordPress-kernen ved hjælp af funktionen remove_action (), der bruger den samme logik som add_action ().

    Hvis du er en temaforfatter, og du vil gøre et udvideligt tema, kan det være en god ide at Tilføj dine egne brugerdefinerede handlingskrog til de relevante skabeloner med funktionen do_action ().

    Hvis du vil gøre det, Tænk grundigt på parametre, som andre udviklere hvem vil bruge dit tema bliver nødt til at gå som argumenter når de vil tilslutte deres brugerdefinerede funktionaliteter.

    Mens du designer placeringen af ​​dit tema's brugerdefinerede handling, må kroge ikke glemme det giver ikke stor mening at medtage brugerdefinerede tema kroge på de samme steder, hvor WordPress Core selv har sine egne kroge.