Sam
Sam

Reputation: 7058

Function arguments in add_action() to init

I am looking to pass arguments in my function to add_action(), but apparently I need to do this through do_action. My problem is the add_action tag is 'init', which I think will cause issues if I run it again/prematurely. Any ideas?

function taxonomy_equipment( ) {
    $name = "Equipment";
    $labels = array(
        'name'              => _x( $name, 'taxonomy general name' ),
        'singular_name'     => _x( $name, 'taxonomy singular name' ),
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
    );
    register_taxonomy( str_replace(' ', '', strtolower($name)), 'exercise', $args );
}
add_action( 'init', 'taxonomy_equipment', 0 );

I want to pass $name as an argument.

Upvotes: 2

Views: 1886

Answers (1)

Test:

global $my_var;
$my_var = $value;
add_action('any_hook', 'myfunction');

function myfunction() {
    global $my_var;
}

UPDATED

Other way:

function taxonomy_equipment( ) {
    $my_arg_globals = $GLOBALS['my_arg_globals'];
    $name = $my_arg_globals['name'];
    $labels = array(
        'name'              => _x( $name, 'taxonomy general name' ),
        'singular_name'     => _x( $name, 'taxonomy singular name' ),
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
    );
    register_taxonomy( str_replace(' ', '', strtolower($name)), 'exercise', $args );
}
$my_arg_globals = array('name' => 'Equipment');
add_action( 'init', 'taxonomy_equipment', 0 );

In this case work and is very simple:

function get_var_test()
{
    $my_arg_globals = $GLOBALS['my_arg_globals'];
    return $my_arg_globals['name'];
}
$my_arg_globals = array('name' => 'name1');
echo Sum();

$my_arg_globals = array('name' => 'name2');
echo Sum();

$my_arg_globals = array('name' => 'name3');
echo Sum();

Upvotes: 2

Related Questions