【问题标题】:Wordpress - Safest method to define global variablesWordpress - 定义全局变量的最安全方法
【发布时间】:2013-04-26 10:00:07
【问题描述】:

我不知道“全局”这个词是否正确,但我要做的是:定义一个我可以在模板的许多部分中使用的变量。

示例:我必须定义一个包含静态页面 ID 的变量

$page_id = 34

我必须在不同的模板部分使用它,像

这样的功能
get_page_link($page_id)

我找到了很多方法(PHP 定义(),在 function.php 中,全局,...),但我想问在您看来,什么是最安全的

【问题讨论】:

    标签: php wordpress variables global-variables


    【解决方案1】:

    您可以在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();
    

    【讨论】:

    • 嗨瑞凯什!对不起,但不清楚。我宁愿不修改 wp-config,然后我选择 functions.php 方法,但它不起作用。什么是$domain?我也试过global $page_id,但没有。
    • @FredK - 抱歉更新了。尝试像这样声明 var,而不是在任何主题文件中访问它。
    • 在 function.php 中尝试了 global $page_id; $page_id = 34;,在另一个 php 文件中尝试了 get_page_link($page_id),但它不起作用!
    • @FredK - 在get_page_link($page_id) 之前添加global $page_id;
    • 是的!现在它可以工作了,但请注意,它也可以在 functions.php 中没有 global $page_id 的情况下工作。正常吗?我的问题是关于最安全的:这是最安全的方式吗?你怎么看define('PAGE_ID', 34);
    【解决方案2】:

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

    全局 $wpdb;

    上面的全局变量 $wpdb 用于 wordpress 的所有页面,因此您也可以创建自己的函数并创建一个全局变量来声明所有页面或帖子。

    【讨论】:

    • 我在functions.php中定义了global $page_id;,但它不起作用
    【解决方案3】:

    如果您使用漂亮的永久链接,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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      相关资源
      最近更新 更多