do_action_ref_array

Создает хук (событие) для зацепки PHP функции. Аргументы передаются в виде массива.

Эта функция идентична do_action(). Разница в том, что аргументы передаваемые через этот хук определяются, используя массив. Это дает возможнсоть передать переменную по ссылке.

Хуков нет.

Возвращает

Использование

<?php do_action_ref_array( $tag, $arg ); ?>
$tag(строка) (обязательный)
Название хука, на который будет вешаться функции через функцию add_action().
По умолчанию: нет
$arg(массив) (обязательный)
Аргументы передаваемые функции, которая будет цепляться на хук.
По умолчанию: нет

Примеры

#1. Пример создания хука с использованием do_action_ref_array()

// цепляем хук
add_action( 'myhook', 'myhook_func' );
function myhook_func( & $num ){
	$num = 2; // изменяем переменную по ссылке      
}

$num = 1;

// обрабатываем хук
do_action_ref_array('myhook', array( & $num ) );

echo $num; //> 2

Код из


wp-includes/plugin.php

WP 4.7.2

<?php
function do_action_ref_array($tag, $args) {
	global $wp_filter, $wp_actions, $wp_current_filter;

	if ( ! isset($wp_actions[$tag]) )
		$wp_actions[$tag] = 1;
	else
		++$wp_actions[$tag];

	// Do 'all' actions first
	if ( isset($wp_filter['all']) ) {
		$wp_current_filter[] = $tag;
		$all_args = func_get_args();
		_wp_call_all_hook($all_args);
	}

	if ( !isset($wp_filter[$tag]) ) {
		if ( isset($wp_filter['all']) )
			array_pop($wp_current_filter);
		return;
	}

	if ( !isset($wp_filter['all']) )
		$wp_current_filter[] = $tag;

	$wp_filter[ $tag ]->do_action( $args );

	array_pop($wp_current_filter);
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *