PHP文件存在& Wordpress Shortcode

时间:2015-12-27 11:49:23

标签: php wordpress shortcode

我试图从.txt文件中检索停车场的数量,它在静态网站iframe上工作,但我想制作一个短代码并将其放在wordpress主题功能文件中。

出于某种原因,它没有读取数据...

function GenerateLOT($atts = array()) {

// Default Parameters
extract(shortcode_atts(array(
    'id' => 'id'
), $atts));

// Create Default Park / Help
if ($id == '') {
    $id = 'PARK IDs: bahnhofgarage;';
}

// Create Park Bahnhofgarage
if ($id == 'bahnhofgarage') {
    $completeBahnhof = "//xxx.de/bahnhof.txt";
    if(file_exists($completeBahnhof )) {
        $fp=file($completeBahnhof );
        $Garage = $fp[0];
        $valmpl=explode(" ",$Garage);
        $Bahnhof_Platz =  $valmpl[0];
        $Bahnhof_Tendenz = $valmpl[1];
    }

    $id = $Bahnhof_Platz;
}

return $id;
}
add_shortcode('parking', 'GenerateLOT');

[停车id =' bahnhofgarage']

PS: .txt正常检索如下:000 - //bahnhof 27.12.15 12:46:59

出于某种原因,它只显示$park == ''文本,而不是根据短代码参数显示停车场。

我已经使用过本教程:sitepoint.com/wordpress-shortcodes-tutorial /

编辑:有6个停车场。

EDIT2:在所有实例上将park更改为id

1 个答案:

答案 0 :(得分:0)

问题是您无法在远程路径上有意义地使用file_exists。有关详细信息,请参阅SO answer to "file_exists() returns false even if file exist (remote URL)" question

您应该只在该路径上调用file()。如果遇到错误,它将返回FALSE

if ($id == 'bahnhofgarage') {
    $completeBahnhof = "//xxx.de/bahnhof.txt";
    $fp=file($completeBahnhof );
    if ($fp !== false) {
        $Garage = $fp[0];
        // rest of code

在旁注中,shortcode_atts()用于为短代码属性提供默认值,而您似乎将其用作短代码属性和内部变量名称之间的某种映射。

在短代码内访问远程服务器上的文件会遇到麻烦。试想一下,如果这台服务器过载,响应缓慢或不再可用,会发生什么。您应该真正异步访问该文件。如果它位于您的服务器,请通过文件系统路径访问它。