快捷码函数中的某些代码被忽略

时间:2016-01-06 作者:Adrian

我有以下代码,这是插件短代码的一部分,我一直在尝试调试为什么它似乎跳过了对do_shortcode. 为了调试,我一直在尝试将其写入日志文件(只是暂时编辑插件中的代码以尝试各种日志记录方法)。但奇怪的是file_put_contents() 这个电话实际上可以做任何事。其余的似乎都被跳过了,好像它们根本就不存在。

我甚至尝试在每个调试点组合一个长字符串,然后将其写入file_put_contents() 打电话似乎有用。。。除此之外,它们似乎都不起作用。我不知道还能尝试什么。这快把我逼疯了。(请注意:我最初并不是写这个插件的,我只是想知道为什么我们升级到Wordpress 4.4后它就停止工作了。我也不能升级插件或它来自的主题,因为网站的主题是建立在主题之上的,而不是作为子主题,如果我拉错了线,它是一个很容易掉到堆里的意大利面。)

add_shortcode(\'tabs\', \'kopa_shortcode_tabs\');

function kopa_shortcode_tabs($atts, $content = null) {

    extract(shortcode_atts(array(), $atts));
    $log_string = "";
    $i = 0;
    //CUSTOM DEBUG CODE START
    $log_string += "Dealing with " . count($atts) . " tab(s)\\n";
    file_put_contents($_SERVER[\'DOCUMENT_ROOT\'] . "/wp_log/test_log", "Test " . $i++ . "\\n", FILE_APPEND);
    //CUSTOM DEBUG CODE END

    $out = \'\';

    //CUSTOM DEBUG CODE START
    $log_string += "Handling content: " . $content . "\\n";
    file_put_contents($_SERVER[\'DOCUMENT_ROOT\'] . "/wp_log/test_log", "Test " . $i++ . "\\n", FILE_APPEND);
    //CUSTOM DEBUG CODE END

    $out .= \'<div class="list-container-1">\';

    $out .= \'<ul class="tabs-1 clearfix">\';

    foreach ($atts as $key => $tab) {

        $out .= \'<li><a href="#\' . $key . \'">\' . $tab . \'</a></li>\';
        //CUSTOM DEBUG CODE START
        $log_string += "Added key = " . $key . "; tab = " . $tab . "\\n";
        file_put_contents($_SERVER[\'DOCUMENT_ROOT\'] . "/wp_log/test_log", "Test " . $i++ . "\\n", FILE_APPEND);
        //CUSTOM DEBUG CODE END
    }

    $out .= \'</ul>\';

    $out .= \'</div>\';

    $out .= \'<div class="tab-container-1">\';

    $out .= do_shortcode($content);

    $out .= \'</div>\';
    //CUSTOM DEBUG CODE START
    $log_string += "Result: " . $out . "\\n";
    //file_put_contents($_SERVER[\'DOCUMENT_ROOT\'] . "/wp_log/test_log", $log_string . "Run Complete\\n", FILE_APPEND);
    file_put_contents($_SERVER[\'DOCUMENT_ROOT\'] . "/wp_log/test_log", "Test " . $i++ . "\\n", FILE_APPEND);
    error_log($log_string . "Run Complete\\n\\n\\n");
    //CUSTOM DEBUG CODE END
    return $out;

}

1 个回复
SO网友:Linnea Huxford

这一行是您的问题:

$log_string += "Dealing with " . count($atts) . " tab(s)\\n";
它应该是:

$log_string .= "Dealing with " . count($atts) . " tab(s)\\n";
看起来您混淆了javascript和PHP连接运算符。别担心,我已经做过很多次了!啊!

编辑:事实上,看起来你在其他行也犯了这个错误。