在该函数之外的函数中定义的访问变量

时间:2014-01-25 01:48:02

标签: php wordpress scope shortcode

首先:我知道之前已经问过这个问题,但是我已经查看了很多问题/答案,我无法弄清楚如何让它们中的任何一个起作用。所以,对不起。

所以基本上我在Wordpress中编写一些函数/短代码,这意味着我可以使用短代码将Vine视频发布到Wordpress博客:

function embedVine($atts) {

    extract(shortcode_atts(array(
        "id" => ''
    ), $atts));

    $vine_id = $id;

   // I'm then doing a whole load of stuff involving $vine_id, including using it as a parameter to pass to different functions I've written that are separate to this function.
  // I should also mention that $vine_id is the id on the end of a Vine URL.
} add_shortcode("vine", "embedVine");

然后,用户可以在Wordpress编辑器中使用[vine id="..."]短代码。

然后我有一个我写过的函数,但我不想在上面的函数中执行它,否则它会在每次运行函数/短代码时运行,这不会很好。我需要在函数之外执行它,但仍然使用$vine_id作为参数。但是,由于在上面的函数中定义了$vine_id,我无法在函数外部访问它。

这是第二个功能:

function vineThumb($id) {
    $vine = file_get_contents("http://vine.co/v/{$id}");
    return $vine;
    // of course, it's a lot more complicated than this but for the sake of this, it works.
} vineThumb($vine_id);

执行该函数将返回http://vine.co/v/ {$ vine_id}。如何在短代码函数(第一个)之外访问$ vine_id函数?

希望我已经清楚地解释了这一点,我不是一个PHP程序员,因为你可能会告诉我,但我知道得足够了。这种让我很难过。感谢您的帮助:))

1 个答案:

答案 0 :(得分:0)

我不知道这两个函数是否位于同一个文件中但是试试这个。 http://www.php.net/manual/en/language.variables.scope.php

$vine_id = null; //Define it outside the function

function embedVine($atts) {

    global $vine_id; //Refers to $vine_id outside the function

    extract(shortcode_atts(array(
        "id" => ''
    ), $atts));

    $vine_id = $id; //$vine_id now has the value of $id when embedVine exits
} add_shortcode("vine", "embedVine");