Created
January 23, 2025 16:35
-
-
Save cdsaenz/a164e9dd5963222a38b0ae48fe77e936 to your computer and use it in GitHub Desktop.
WordPress Central Hooks Loader
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Register all actions and filters for the main class | |
*/ | |
namespace CSDev\PluginName; | |
class Loader { | |
/** | |
* The array of actions registered with WordPress. | |
*/ | |
protected $actions; | |
/** | |
* The array of filters registered with WordPress. | |
*/ | |
protected $filters; | |
/** | |
* Initialize the collections used to maintain the actions and filters. | |
*/ | |
public function __construct() { | |
$this->actions = array(); | |
$this->filters = array(); | |
} | |
/** | |
* Add a new action to the collection to be registered with WordPress. | |
*/ | |
public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) { | |
$this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args ); | |
} | |
/** | |
* Add a new filter to the collection to be registered with WordPress. | |
*/ | |
public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) { | |
$this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args ); | |
} | |
/** | |
* A utility function that is used to register the actions and hooks into a single | |
* collection. | |
*/ | |
private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) { | |
$hooks[] = array( | |
'hook' => $hook, | |
'component' => $component, | |
'callback' => $callback, | |
'priority' => $priority, | |
'accepted_args' => $accepted_args | |
); | |
return $hooks; | |
} | |
/** | |
* Register the filters and actions with WordPress. | |
*/ | |
public function run() { | |
foreach ( $this->filters as $hook ) { | |
add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] ); | |
} | |
foreach ( $this->actions as $hook ) { | |
add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] ); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment