如何从另一个PHP函数引用/Echo变量

时间:2014-08-13 作者:Ryan Murphy

我已经成功地为我的博客帖子设置了一个PHP函数,以创建一个快捷码,自动显示/设置YouTube视频的iFrame标记的样式,并将持续时间和视图计数直接拉到下面。

我现在只想在主页/列表页上显示视频的视图计数和持续时间值(通过loop.php),但很难确定合适的php代码来实现这一点。

以下是我在post视图中成功使用的函数:

add_shortcode(\'yt\', \'getYoutubeDetails\');

function getYoutubeDetails($atts) {
    extract(shortcode_atts(array(
    \'video\' => \'\'
    ), $atts));

    // Get YouTube data via the API
    $JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos?q=$video&alt=json");
    $JSON_Data = json_decode($JSON);
    $views = $JSON_Data->{\'feed\'}->{\'entry\'}[0]->{\'yt$statistics\'}->{\'viewCount\'};
    $views = number_format($views);
    $duration = $JSON_Data->{\'feed\'}->{\'entry\'}[0]->{\'media$group\'}->{\'yt$duration\'}->{\'seconds\'};


    echo "<iframe width=\\"1280\\" height=\\"720\\" src=\\"//www.youtube.com/embed/$video?showinfo=0&rel=0&modestbranding=1&theme=light&iv_load_policy=3&autohide=1&enablejsapi=1\\" frameborder=\\"0\\" allowfullscreen></iframe>";
    echo "<strong>Views:</strong> $views<br><strong>Duration:</strong> ";
    echo sec2hms($duration);
    echo "<br /><br />";
    }
在我的帖子内容中,我将我的视频标记为[yt video=“VIDEOID”]。我希望通过使用以下方法可以获得视图/持续时间的特定属性:<?php echo GetYoutubeDetails($views) ?> 循环中。php,但这似乎不起作用。有没有一种方法可以将其构造为在函数中引入特定属性?它是否能够利用传递到帖子内容中已存在的短代码的视频属性中的值?

我更喜欢利用帖子内容中已有的短代码(因此我不必在两个或更多不同的地方维护它)。但是,如果没有方法为特定的post-in循环回显现有函数的值。php,我想它可能需要通过自定义字段进行处理。

有没有关于如何解决这个问题的建议?

1 个回复
SO网友:kqw

如评论所示,您应该return 字符串,而不是echo 信息技术:

add_shortcode(\'yt\', \'getYoutubeDetails\');

function getYoutubeDetails($atts) {
    extract(shortcode_atts(array(
    \'video\' => \'\'
    ), $atts));

    // Get YouTube data via the API
    $JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos?q=$video&alt=json");
    $JSON_Data = json_decode($JSON);
    $views = $JSON_Data->{\'feed\'}->{\'entry\'}[0]->{\'yt$statistics\'}->{\'viewCount\'};
    $views = number_format($views);
    $duration = $JSON_Data->{\'feed\'}->{\'entry\'}[0]->{\'media$group\'}->{\'yt$duration\'}->{\'seconds\'};


    $s = "<iframe width=\\"1280\\" height=\\"720\\" src=\\"//www.youtube.com/embed/$video?showinfo=0&rel=0&modestbranding=1&theme=light&iv_load_policy=3&autohide=1&enablejsapi=1\\" frameborder=\\"0\\" allowfullscreen></iframe>";
    $s .= "<strong>Views:</strong> $views<br><strong>Duration:</strong> ";
    $s .= sec2hms($duration);
    $s .= "<br /><br />";
    return $s;
}

结束

相关推荐

Restrict access to xmlrpc.php

我是Wordpress的新手,最近我注意到大量流量会影响以下内容:162.242.170.222 - - [01/Aug/2014:08:18:54 -0500] \"POST /xmlrpc.php HTTP/1.0\" 503 4859 162.242.170.222 - - [01/Aug/2014:08:19:01 -0500] \"POST /xmlrpc.php HTTP/1.0\" 503 4859 162.242.170.222 - - [01/Aug/2014:08:19