2013-04-26 51 views
0

我不知道是否“全球”是正确的词,但我要做的是:定义一个变量,我可以在模板的许多部分使用。WordPress的 - 最安全的方法来定义全局变量

例如:我有定义一个包含一个静态页面

$page_id = 34 

的ID的变量,我必须使用它在不同的模板零件,具有的功能类似于

get_page_link($page_id) 

我发现许多方式来做到这一点(PHP的define(),在function.php,全球...),但我问你最想要的是什么最安全的

回答

3

您可以在wp-config文件(可在所有主题中访问)或主题目录的function.php中定义它。

例子:Function.php

global $blog_pageId; 
$blog_pageId = 34; 

或者只是创建一个小功能,返回你的ID。

function get_blog_page_id(){ 
     return "34"; 
} 

不止一个可以把它作为,

$blog_pageId = get_blog_page_id(); 
+0

嗨Rikesh!抱歉,但不清楚。我宁愿不修改wp-config,然后去为functions.php方法,但它不起作用。什么是'$域'?我也尝试'全球$ page_id',但没有。 – 2013-04-26 10:18:21

+0

@FredK - 抱歉已更新。尝试像这样声明var,并在你的任何主题文件中访问它。 – Rikesh 2013-04-26 10:22:57

+0

尝试过'global $ page_id; $ page_id = 34;'在另一个php文件中的function.php和'get_page_link($ page_id)''但它不起作用! – 2013-04-26 10:24:37

0

您还可以使用WordPress的默认功能,例如

全球WPDB $;上面全局变量

WPDB $是 WordPress中的所有页面使用,所以你也可以创建自己的功能,并创建一个全局变量是声明的所有页面或帖子。

+0

我在functions.php中定义了'global $ page_id;'但它不起作用 – 2013-04-26 10:26:13

0

如果你使用漂亮的固定链接,get_query_var('page_id')将不起作用。

取而代之的是,从全球$ wp_query得到被查询对象ID:

// Since 3.1 - recommended! 
$page_object = get_queried_object(); 
$page_id  = get_queried_object_id(); 


// "Dirty" pre 3.1 
global $wp_query; 

$page_object = $wp_query->get_queried_object(); 
$page_id  = $wp_query->get_queried_object_id(); 
+0

请在你的function.php文件中尝试上面的代码 – 2013-04-26 10:42:32