如果我理解正确的话,您希望在前面的钩子/动作中预定义一些变量,并在后面的钩子/动作中使用这些变量。
add_action( \'wp\', \'predefine_my_vars\' );
function predefine_my_vars() {
global $my_vars;
$my_vars = array(
\'name\' => \'Bob\',
);
}
add_action( \'wp_footer\' \'show_my_vars\' );
function show_my_vars() {
global $my_vars;
if ( isset( $my_vars[\'name\'] ) )
echo "Hello {$my_vars[\'name\']}!";
}
The
global
关键字是使另一个函数中的var可访问的一种方法。但这不是最好的方式。全局名称空间非常完整,WordPress使用了很多变量。您需要为您的VAR指定一个真正唯一的名称。
另一种方法是使用会话。会话通常不会使var全局可访问,但您可以为此“误用”它。
add_action( \'wp\', \'predefine_my_vars\' );
function predefine_my_vars() {
// start a session if no one was started
$session_id = session_id();
if ( empty( $session_id ) )
session_start();
$my_vars = array(
\'name\' => \'Bob\',
);
$_SESSION[\'my_vars\'] = serialize( $my_vars );
}
add_action( \'wp_footer\' \'show_my_vars\' );
function show_my_vars() {
$session_id = session_id();
// no session was started
if ( empty( $session_id ) )
return false;
else
$my_vars = ( isset( $_SESSION[\'my_vars\'] ) ) ? unserialize( $_SESSION[\'my_vars\'] ) : array();
if( isset( $my_vras[\'name\'] ) )
echo "Hello {$my_vars[\'name\']}!";
}