Zoeken…


Syntaxis

  • add cialis ($ tag, $ function_to_add)
  • add cialis ($ tag, $ function_to_add, $ priority)
  • add cialis ($ tag, $ function_to_add, $ priority, $ geaccepteerd_args)

parameters

Parameter Details
$ tag (string) (Vereist) De naam van de actie waaraan de $function_to_add is gekoppeld
$ function_to_add ( opvraagbaar ) (Vereist) De functie die moet worden aangeroepen wanneer de actie die wordt aangegeven met $tag wordt uitgevoerd
$ prioriteit (int) (Optioneel) Standaardwaarde: 10 Wordt gebruikt om de volgorde op te geven waarin de functies die aan een bepaalde actie zijn gekoppeld, worden uitgevoerd. Lagere nummers komen overeen met eerdere uitvoering en functies met dezelfde prioriteit worden uitgevoerd in de volgorde waarin ze aan de actie zijn toegevoegd.
$ accepted_args (int) (Optioneel) Standaardwaarde: 1 Het aantal argumenten dat de functie accepteert.

Opmerkingen

De add_action() functie maakt een actie Hook, het associëren van een PHP-functie met een bepaalde actie "tag" of naam. Wanneer de actie wordt "geactiveerd" door een aanroep van do_action() (of do_action_ref_array() ) met een specifieke tag, worden alle functies "verslaafd" aan die tag uitgevoerd.

In de meeste gevallen moet deze functie worden gebruikt in het bestand functions.php een thema of een plug-inbestand - of een ander bronbestand dat door beide is geladen.

Deze functie maakt deel uit van de Plugin API

Basic Action Hook

De meest basale toepassing van add_action() is het toevoegen van aangepaste code die moet worden uitgevoerd op een bepaalde locatie in de broncode van een WordPress-installatie - hetzij met acties die worden geleverd door de Core of WordPress, hetzij acties die worden gemaakt door externe code, zoals plug-ins en thema's.

Om inhoud toe te voegen aan het <head></head> gedeelte van de site - zeg tegen een add <link> meta-element om aan te geven waar copyrightinformatie voor de site kan worden gevonden - add_action() kan worden gebruikt om een functie toe te add_action() die wordt afgedrukt de juiste markup voor de actie 'wp_head' (die "triggert" wanneer WordPress de sectie <head> bouwt):

function add_copyright_meta_link() {
  echo( '<link rel="copyright" href="' . get_home_url() . '/copyright">' );
}

add_action( 'wp_head', 'add_copyright_meta_link' );

Actie Hook Prioriteit

Elk aantal functies kan worden "gekoppeld" aan een bepaalde actie. In sommige gevallen is het belangrijk dat een gekoppelde functie voor of na anderen wordt uitgevoerd, en dat is waar de derde parameter om add_action() te add_action() , $priority in het spel komt.

Als het argument $priority wordt weggelaten, wordt de functie gekoppeld met de standaardprioriteit 10 . Wanneer de actie wordt "geactiveerd", worden de "gekoppelde" functies aangeroepen, beginnend met die toegevoegd met de laagste $priority , en doorgaand naar de functies met de grootste $priority . Alle gekoppelde functies die dezelfde prioriteit delen, worden aangeroepen in de volgorde waarin ze zijn toegevoegd (de volgorde waarin hun respectieve add_action() -aanroepen zijn uitgevoerd).

Stel bijvoorbeeld dat een plug-in van derden een functie gebruikt die is gekoppeld aan de actie 'template_redirect' om bezoekers van de pagina met de daily-deal naar een gelieerde link voor een externe e-commercesite, maar u wilt de omleiding alleen optreden voor ingelogde gebruikers. U moet uw eigen 'template_redirect' hook gebruiken om uitgelogde bezoekers naar de inlogpagina te sturen. Nadat u hebt vastgesteld dat de plug-in van derden zijn functie bevestigt met de standaard $piority van 10 , kunt u uw functie $piority aan een prioriteit van 9 om ervoor te zorgen dat uw ingelogde controle eerst gebeurt:

function redirect_deal_visitors_to_login() {
  if( is_page( 'daily-deal' ) && !user_is_logged_in() ) {
    wp_redirect( wp_login_url() );
    exit();
  }
}

add_action( 'template_redirect', 'redirect_deal_visitors_to_login', 9 );

Klasse- en objectmethoden koppelen aan acties

PHP Classes zijn krachtige tools voor het verbeteren van code-organisatie en het minimaliseren van naamgevingsbotsingen. Op een of ander punt rijst onvermijdelijk de vraag hoe je een actiehaak voor een klassemethode kunt maken.

Het argument $function_to_add wordt vaak weergegeven als een tekenreeks die de naam van de functie bevat, maar het gegevenstype van het argument is eigenlijk een " opvraagbaar ", dat voor onze doeleinden kan worden samengevat als "een verwijzing naar een functie of methode".

Er zijn een aantal opvraagbare formaten die kunnen worden gebruikt om te verwijzen naar methoden voor klassen en objecten. In ieder geval moet echter de vermelde werkwijze publiekelijk toegankelijk . Een methode is openbaar wanneer deze wordt voorafgegaan door het public trefwoord of helemaal geen zichtbaarheidswoord (in dat geval is de methode standaard openbaar).

Object Methode Actie Haken

Objectmethoden worden uitgevoerd op een bepaalde instantie van een klasse.

class My_Class {
  // Constructor
  function My_Class() {
    // (Instantiation logic)
  }

  // Initialization function
  public function initialize() {
    // (Initialization logic)
  }
}

Na het instantiëren van de bovenstaande klasse als volgt,

$my_class_instance = new My_Class();

de methode initialize() wordt normaal gesproken op het object opgeroepen door $my_class_instance->initialize(); aan te roepen $my_class_instance->initialize(); . De methode koppelen aan de 'init' WordPress-actie wordt gedaan door een array met een verwijzing naar de instantie en een tekenreeks met de naam van de objectmethode door te geven:

add_action( 'init', [ $my_class_instance, 'initialize' ] );

Als add_action() wordt aangeroepen binnen een add_action() , kan de $this pseudo-variabele ook worden gebruikt:

class My_Class {
  // Constructor
  function My_Class() {
    // (Instantiation logic)
    add_action( 'init', [ $this, 'initialize' ] );
  }

  // Initialization function
  public function initialize() {
    // (Initialization logic)
  }
}

Klasse Methode Actie Haken

Class-methoden worden statisch op een klasse uitgevoerd in plaats van op een bepaalde instantie. Gezien de volgende klasse,

class My_Class {   
  // Initialization function
  public static function initialize() {
    // (Initialization logic)
  }
}

de methode initialize() wordt normaal gesproken aangeroepen met de operator :: scope-resolution, dwz My_Class::initialize(); . Een statische klassemethode koppelen aan een WordPress kan op verschillende manieren:

  • Een array gebruiken die bestaat uit een string die de klassenaam bevat en een string die de methode naam bevat:

    add_action( 'init', [ 'My_Class', 'initialize' ] );
    
  • Een string doorgeven die een volledige verwijzing naar de methode bevat, inclusief de :: operator:

    add_action( 'init', 'My_Class::initialize' );
    
  • Als add_action() wordt aangeroepen binnen een statische klassenmethode, kan het self of de __CLASS__ magic-constante worden gebruikt in plaats van de __CLASS__ . Merk op dat dit over het algemeen af te raden is, omdat de waarden van deze items enigszins contra-intuïtief worden in het geval van overerving van klassen.

    class My_Class {
      // Setup function
      public static function setup_actions() {
        add_action( 'init', 'self::initialize' );
      }
    
      // Initialization function
      public static function initialize() {
        // (Initialization logic)
      }
    }
    


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