【问题标题】:How can I pass a variable wordpress shortcode如何传递变量 wordpress 短代码
【发布时间】:2012-03-05 20:16:35
【问题描述】:

我正在编写一个动态创建字符串的 Wordpress 插件。 我想使用wp_head 钩子将此字符串插入到元标记中。

我的插件的工作方式如下:我定义了一个短代码,其处理函数声明了一个 add_action(...,它将一个特殊的 <meta> 标记添加到标题中。

这行得通,但是...

我唯一的问题是我不知道如何传递包含字符串的变量以打印到头部。该变量未定义,即使我在插件中对其进行了全球化。

//INSIDE MY PLUGIN...

global $head_string;

function initialize_my_plugin_class() {
    $head_string = "<meta>bla bla bla</meta>";
}

function add_action('wp_head', 'add_meta_tags' ) //this is slightly oversimplified
                                                 //the execution order of wp_head makes
                                                 //the real code a bit more complicated
                                                 //for the purposes of this question let's
                                                 //pretend it's like this.

function add_meta_tags() {
    echo $head_string
}

结果有效,除了 $head_string 变量为空。所以它打印一个空的元标记。 (我知道其他一切都有效,因为我可以更改 add_meta_tags() 以执行类似 echo "FAKE META TAG"; 的操作,并且它会显示在标题中的应有位置。)

那么我在做什么有什么问题吗?我认为它必须涉及变量范围,但我被卡住了。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    尝试在你的函数中将 $head_string 设置为全局。

    【讨论】:

    • 我尝试了几种全球化该变量的变体(因为我对全局变量的 PHP 文档感到困惑!)。您的建议是仅在函数内部将其设置为全局,还是在外部的 global 声明之外设置?
    • 我会在原来的全局声明之外尝试一下
    • 不确定它是否“正确”,但它正在工作。每次引用该变量(函数内部和外部)时,我都会指定global。像这样使用全局变量让我感觉很恶心......
    • 是的,这绝对不是使用全局变量的最佳方式,但我过去在使用 Wordpress 时遇到过类似的问题,不幸的是,这是我能够让它们工作的唯一方法。
    猜你喜欢
    • 2014-08-27
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多