0

基本上,我一直在尝试制作一个简单的 Wordpress 小部件,它显示带有当前页面 URL 的 QR 码。我正在使用解析 PHP 的简单文本小部件的修改版本。

function the_qrcode($permalink = '', $title = '') {
    if($permalink && $title == '') {
        $permalink = 'http://eternityofgamers.com/forums';
        $title = 'Forums';
    }

    echo '<img src="http://api.qrserver.com/v1/create-qr-code/?data=' .$permalink. '" alt="QR: ' .$title. '"/>;
}

有人可以告诉我这有什么问题吗?当我将它添加到functions.php.

4

2 回答 2

1

您将需要使用该urlencode()功能。一般来说,根据经验,所有查询字符串值都应该是 url 编码的。

function the_qrcode( $permalink = '' ) {
    if($permalink == '') {
        $permalink = 'http://eternityofgamers.com/forums';
    }

    echo '<img src="http://api.qrserver.com/v1/create-qr-code/?data='.urlencode($permalink);
}

现在您可以使用以下方法创建 QR 码:

the_qrcode(the_permalink());

此外,您缺少一个非常糟糕的等号=了解和之间的区别非常重要==。如果您不这样做,则无论上下文如何=,都==意味着两件事。=将右侧分配给左侧。==无论左右手边是否松散相等,都返回真或假(松散地因为如果两边的类型不同,将使用强制转换)。

看这个例子(键盘演示):

$a = 5;
$b = 10;

if($a = 6) {
    echo "This always appears because when you assign a truthy (all non-zero numbers are true) to a variable, true is returned.\n";
    echo "Also a should now equal six instead of five: " . $a . "\n";
}

if($b == 10) {
    echo "This will work as expected because == is a comparison not an assignment.\n";
    echo "And b should still be 10: " . $b;
}
于 2012-07-16T23:11:09.053 回答
0

尝试:

<?php
    function the_permalink( $permalink ) {
        if ($permalink == '') {
            echo '<img src="http://api.qrserver.com/v1/create-qr-code/?data=http://eternityofgamers.com/forums" alt="QR Code">';
        } else {
            echo '<img src="http://api.qrserver.com/v1/create-qr-code/?data='.$permalink;
        }
    }
?>

我已经纠正了一堆语法错误

于 2012-07-16T23:40:47.760 回答