Zoeken…


Syntaxis

  • add cialis (tag, function_to_call, priority, num_of_args);
  • add_filter (tag, function_to_call, prioriteit, num_of_args);

parameters

Parameter Uitleg
$ tag (string) (Vereist) De naam van de actie waaraan de functie $ is gekoppeld.
$ functie (opvraagbaar) (vereist) Vereist een tekenreeks die de functienaam of anonieme functie bevat. Zie voorbeelden voor het toevoegen van functies binnen klassen.
$ prioriteit (int) standaard = 10. Functies die zijn gekoppeld aan haken / filters worden uitgevoerd in de toegewezen prioriteit. U kunt een situatie hebben waarin u met code wilt werken vóór andere acties, prioriteit = 1 instellen of na alle andere gekoppelde functies prioriteit = 100 enz. Zoals met alle php-functies, kunt u de functie gebruiken zonder een waarde door te geven voor een variabele waar een standaardwaarde is ingesteld, maar als u het aantal geretourneerde parameters wilt wijzigen, moet u opgeven!
$ parameters (int) default = 1. Het aantal parameters dat is geretourneerd naar uw gekoppelde functie. De geretourneerde parameters zijn afhankelijk van het nummer dat is toegevoegd waar de haak is gemaakt. Zie apply_filters() en do_action() voor meer informatie.

Opmerkingen

Wordpress Haken

Iets dat ontwikkelaars vaak verwart wanneer ze met WordPress beginnen te werken, is het gebruik van apply_filters() en add_action() . U zult vaak plug-ins / thema's zien die hiervan gebruikmaken in code en als u het concept niet begrijpt, zult u het moeilijk vinden om ermee te werken.

In het kort (heel kort, zoek WordPress load flowchart op voor details in detail), WordPress laadt op de volgende manier:

  1. wp-load.php - functies enz
  2. mu-plug-ins - alle bestanden in de map mu-plug-ins - vaak gebruikt om objecten in de cache te dienen
  3. Plug-ins - geen specifieke volgorde, geïnstalleerde en geactiveerde plug-ins worden geladen
  4. Actief kindthema / ouderthema
  5. init - rest van gegevens
  6. sjabloon

Als u een ontwikkelaar bent en met een functiebestand werkt, kunt u zien dat beide eerder in het proces zijn geladen dan de bestanden waarmee u werkt. Dit betekent dat u geen processen kunt wijzigen (merk op dat u functies niet kunt overschrijven) of variabelen die later worden uitgevoerd of nog niet zijn gedefinieerd. Ook kunnen themaontwikkelaars hooks in hun code plaatsen om plug-ins toe te staan of plug-ins kunnen toestaan dat andere plug-ins hun variabelen overschrijven. Nu kan dit tot nu toe verwarrend zijn, maar houd vol.

Om add_filter() en add_action() te begrijpen, add_filter() we eerst kijken hoe de hooks worden gemaakt.

$arga= 'hello';
do_action('im_a_hook', $arga );

Wanneer u het bovenstaande in WordPress tegenkomt, roept het alle functies die aan de hook zijn im_a_hook (zoek $wp_filter voor informatie over het proces). In uw bijgevoegde functie zal $arga beschikbaar zijn voor de bijgevoegde functie om mee te werken.

add_action('im_a_hook', 'attached_function');

function attached_function($arga){
     echo $arga;
}

Dit opent krachtige nieuwe mogelijkheden om variabelen op bepaalde punten van het laadproces te wijzigen. Weet je nog dat we eerder zeiden dat sjablonen na plug-ins / thema's worden geladen? Een veel voorkomende plug-in is WooCommerce die later in het proces schermen maakt. Ik ga niet documenteren hoe maar een voorbeeld van do_action te vinden is in de plug-in.

do_action( 'woocommerce_after_add_to_cart_button' );

Hier hebben we een hook gemaakt die geen variabelen teruggeeft, maar we kunnen er nog steeds plezier mee hebben:

add_action( 'woocommerce_after_add_to_cart_button', 'special_offer');

function special_offer(){
    echo '<h1>Special Offer!</h1>;
}

De bovenstaande add_action echo een rubriek van speciale aanbieding waar do_action('woocommerce_after_add_to_cart_button') zich bevindt die zich bevindt bij het maken van een WooCommerce-scherm. Dus we kunnen deze haak gebruiken om HTML in te voegen. Andere toepassingen zijn onder meer omleiden naar een ander scherm, enz.

Ook kunnen meerdere variabelen aan de functie worden doorgegeven. Probeer dit in uw themafuncties. Let op de laatste parameter die we instellen op 3, omdat we met de 3 beschikbare parameters willen werken. Als we dit in 2 zouden veranderen, zou er slechts 2 worden geretourneerd en zouden we een ongedefinieerde fout krijgen.

add_action('custom_hook', 'attached_function', 10, 3);

function attached_function($a,$b,$c){
    
    var_dump($a);
    var_dump($b);
    var_dump($c);
    
}
    

$arga = 1;
$argb = 2;
$argc = 3;

do_action('custom_hook', $arga, $argb, $argc);
exit;

Er is nog een WP-haaktype dat een filter wordt genoemd. Een filter is anders dan een actie in het gebruik ervan, een actie kan alleen variabelen ontvangen, uiteraard vallen deze variabelen binnen het bereik van de functies (u moet weten wat php-bereik is, zo niet google). Filters geven de geretourneerde gegevens terug, zodat u variabelen kunt wijzigen.

$filter_me= apply_filters('im_a_filter', $variable_to_filter);

Waar u het bovenstaande ziet, kunt u de waarde van $filter_me omdat alle gegevens die u retourneert de waarde zijn die is opgeslagen in de variabele. Dus bijvoorbeeld (let op, we veranderen $variable_to_filter in $filter_me in het voorbeeld):

add_filter('im_a_filter', 'attached_function', 100);

function attached_function($filter_me){
    
    $filter_me= 'ray';
    
    return $filter_me;
    
}


$filter_me = 'bob';
$filter_me= apply_filters('im_a_filter', $filter_me);

De variabele $filter_me zal nu 'ray' bevatten in plaats van 'bob' , we hebben een prioriteit van 100 ingesteld, dus we zijn er redelijk zeker van dat niemand de waarde na gebruik wijzigt (er kunnen meerdere filters op dezelfde haak draaien) Dus we kan nu variabelen wijzigen die later in het proces worden gebruikt als apply_filters() aanwezig is.

U kunt ook meerdere parameters doorgeven, maar u kunt alleen de waarde van één wijzigen. U moet ook een waarde retourneren, anders bevat uw variabele niets. Als u begrijpt hoe u php gebruikt om waarden / arrays / objecten aan variabelen toe te wijzen, zal dit voor u duidelijk zijn, bijvoorbeeld:

add_filter('im_a_filter', 'attached_function', 100, 3);

function attached_function($filter_me, $arga, $argb){
    
    $filter_me= 'ray'.$arga.$argb;

    $arga= 'you fool';
    
    return $filter_me;
    
}

$filter_me = 'bob';

$arga = ' middlename';
$argb = ' surname';

$filter_me= apply_filters('im_a_filter', $filter_me, $arga, $argb);

De variabele $filter_me bevat nu 'achternaam voor ray middlename' . Maar hoe zit het met $arga ? Dit bevat nog steeds 'middlename' , het veranderen van een $arga naar 'you fool' binnen onze functie heeft geen effect op de gedefinieerde waarde buiten zijn bereik (er zijn manieren, Google Global etc.)

add cialis ($ hook_name, $ function, $ priority, $ parameters)

add_filter ($ hook_name, $ functie, $ prioriteit, $ parameters);

add cialis - init

add_action('init', 'process_post');

function process_post(){
   if($_POST)
     var_dump($_POST);
}

add Lite - init - anonieme functie toevoegen

add_action('init' , function(){
    echo 'i did something';
});

add Lite - init - binnen klasseobject toevoegen

 class sample{

     public function __construct(){
         add_action('init', array($this, 'samp') );
     }


     public function samp(){ // must be public!!
         echo 'i did something';
     }
 }

 new sample();   

add cialis - init - binnen de statische klasse

 class sample{

     public static function add_action_func(){
         //note __CLASS__ will also include any namespacing
         add_action('init', array(__CLASS__, 'samp') );
     }

     public static function samp(){
         echo 'i did something';
     }
     
 }

 sample::add_action_func();


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow