<?php namespace ColibriWP\Theme\Core; use ColibriWP\Theme\Theme; use function add_action; use function add_filter; /** * Class Hooks * * @package ColibriTheme\Core * * @method static Hooks prefixed_add_action( string $tag, callable $function_to_add, $priority = 10, $accepted_args = 1 ) * @method static Hooks prefixed_add_filter( string $tag, callable $function_to_add, $priority = 10, $accepted_args = 1 ) * @method static Hooks prefixed_do_action( string $tag, ...$args ) * @method static Hooks mixed prefixed_apply_filters( string $tag, $value, ...$args ) */ class Hooks { /** * @param string $tag * @param callable $function_to_add * @param int $priority * @param int $accepted_args */ public static function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) { add_action( $tag, $function_to_add, $priority, $accepted_args ); } /** * @param string $tag * @param callable $function_to_add * @param int $priority * @param int $accepted_args */ public static function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) { add_filter( $tag, $function_to_add, $priority, $accepted_args ); } public static function do_action( $tag, $arg = '' ) { return call_user_func_array( 'do_action', func_get_args() ); } /** * @param string $tag The name of the filter hook. * @param mixed $value The value on which the filters hooked to `$tag` are applied on. * @param mixed $var,... Additional variables passed to the functions hooked to `$tag`. * * @return mixed The filtered value after all hooked functions are applied to it. */ public static function apply_filters( $tag, $value ) { return call_user_func_array( 'apply_filters', func_get_args() ); } public static function __callStatic( $name, $arguments ) { if ( strpos( $name, 'prefixed_' ) === 0 ) { $name = str_replace( 'prefixed_', '', $name ); $arguments[0] = Theme::prefix( $arguments[0] ); return call_user_func_array( array( __CLASS__, $name ), $arguments ); } } public static function add_wp_ajax( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) { // error_log(' \'wp_ajax_\'. Theme::prefix($tag, false)'. 'wp_ajax_'. Theme::prefix($tag, false)); add_action( 'wp_ajax_' . Theme::prefix( $tag, false ), $function_to_add, $priority, $accepted_args ); } /** * @param $data * * @return \Closure */ public static function identity( $data ) { return function () use ( $data ) { return $data; }; } }