在unctions.php中定义全局数组?

时间:2013-03-01 作者:schwarzgrau

我尝试创建一个年份数组,它可以在我的模板文件中使用,也可以在函数中的至少一个其他函数中使用。php。

function get_the_years() 
{
    global $year_arr = range(2001, date(\'Y\'));
    return $year_arr;
}
然后我想在一个函数中使用它,该函数在自定义分类法“year”中为每年创建一个术语。

function create_year_terms() {
foreach($year_arr as $value){   
    $term = term_exists($value, \'year\');
        if ($term !== 0 && $term !== null) {
            echo $value . \' category exists!\';
        }
        else { wp_insert_term(
            $value, // the term 
            \'year\', // the taxonomy
            array(
                \'description\'=> \'The name of a year\',
                \'slug\' => $value )
            );
            echo\'term \'. $value . \' created\';
        }
    }
}

并尝试将此函数附加到wp\\u登录挂钩

add_action(\'wp_login\', \'create_year_terms\');
我试着让我的hoeworks工作,我想我理解“某物”,但我有点害怕通过在我的函数中放入错误的东西来杀死某些东西。php,请原谅我的问题。

2 个回复
最合适的回答,由SO网友:Sunyatasattva 整理而成

为了访问中定义的变量global 范围,您必须使用global 关键字,无论您想在哪里再次调用它。

在您的情况下,函数create_year_terms() 必须调用global $year_arr 在其范围内。

此外,您始终可以在global 通过使用$GLOBALS 将变量名称作为key, 因此:

$GLOBALS["year_arr"]
更新挂钩决策:首先,最好将此类代码放在插件中,而不是放在主题函数中。其次,把它挂上init; 或者为你的插件注册一个激活挂钩,然后可能使用wp_schedule_event 自定义间隔为一年。

……但话说回来,这真的有必要吗?

SO网友:tfrommen

首先,你必须在你想要访问它的范围内定义一个全局变量,这意味着在你的函数之外(甚至在类之外——如果你有一个的话)。

其次,据我所知,您必须首先“呈现”一个全局变量,然后在新行中设置其值:

global $myvar;
$myvar = "whatever";
在函数中,在使用变量之前,必须将其再次声明为全局变量。否则,它将只是一个局部变量,与来自“外部”的全局(但尚未可知)变量同名。

你到底想用这个函数做什么?你知道那个钩子吗?

wp_login 已弃用-使用wp_signon. 但我不明白你想做什么。。。

结束

相关推荐

ARRAY_POP()需要数组,为$EVENT_TYPE_TERM->slug给定的布尔值

我写了以下函数…add_filter(\'post_type_link\', \'events_permalink_structure\', 10, 4); function events_permalink_structure($post_link, $post, $leavename, $sample) { if ( false !== strpos( $post_link, \'%event_type%\' ) ) { $event_type