[wp-hackers] Changing two variables listed in apply_filters hook

FUJINAKA Tohru tohru at nakarika.com
Sun Jul 22 12:30:01 GMT 2007


Hi,

> When the apply_filters hook has 2 variables how 
> do you change the second variable in a plugin?

I think you have no chance while you do not change hook source's code.

Or, you can do but there's a limitation.

Here's a sample code.

--- [wordpress/test.php] ---
require './wp-config.php';

add_filter('test-me', 'earlier_filter',    9, 2);
add_filter('test-me', 'change_2nd_value', 10, 3);
add_filter('test-me', 'later_filter',     11, 2);

function earlier_filter($first, $second)
{
    printf("%-20s[in]: %-16s, %s\n", __FUNCTION__, $first, $second);
    return 'earlier';
}

function change_2nd_value($first, $second, $second_array)
{
    printf("%-20s[in]: %-16s, %s\n", __FUNCTION__, $first, $second);
    $second_array[0] = 'world';
    return 'change_2nd_value';
}

function later_filter($first, $second)
{
    printf("%-20s[in]: %-16s, %s\n", __FUNCTION__, $first, $second);
    return 'later';
}

$second = 'second';
$first = apply_filters('test-me', 'first', &$second, array(&$second));

printf("%-20s    : %-16s, %s\n", 'result', $first, $second);

---[end]---

---[RESULT]---
earlier_filter      [in]: first           , second
change_2nd_value    [in]: earlier         , second
later_filter        [in]: change_2nd_value, second
result                  : later           , world
---[end]---

As you see, the second argument of hook source's variable is modified after
calling filters but not among filters. It's the limitation I mentioned
above.

--
  FUJINAKA Tohru aka reedom <tohru at nakarika.com>



More information about the wp-hackers mailing list