【问题标题】:Wordpress QR Code WidgetWordpress 二维码小部件
【发布时间】:2012-07-15 20:40:18
【问题描述】:

基本上,我一直在尝试制作一个简单的 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 时出现 500 错误。

【问题讨论】:

  • “很确定”?你测试过吗?怎么了?
  • 它不起作用,所以我确信我失败得很惨。没有错误出现。抱歉不清楚。 >_
  • 在任何其他行之前添加 ini_set('display_errors', 1);error_reporting(E_ALL); 并告诉我结果如何。

标签: php wordpress widget qr-code


【解决方案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);
}

现在您可以使用以下方法创建您的二维码:

the_qrcode(the_permalink());

另外,您有一个非常糟糕的缺少等号。了解=== 之间的区别非常重要。如果你不这样做,无论在上下文中=== 意味着两个不同的东西。 = 将右侧分配给左侧。 == 返回 true 或 false 左右手边是否松散相等(松散地因为如果边不是同一类型,将使用强制转换)。

看这个例子(Codepad demo):

$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;
}

【讨论】:

  • 还是不行。 PHP 太混乱了。不知道是小部件还是代码。
  • 好吧,我假设这是在类的上下文中完成的。如果你不是为一个类编写这个函数,那么你不应该有public function。你只需要function
  • 好吧...事实证明,我失败得很惨,以至于我没有意识到我正在尝试对一个函数进行 call内置在wordpress中。 &lt;img src="http://api.qrserver.com/v1/create-qr-code/?data=&lt;?php the_permalink(); ?&gt;" alt="QR: &lt;?php the_title(); ?&gt;"/&gt; 有一个例子说明我以前是如何使用它的,它确实有效。我现在要做的就是在对the_permalink 的调用没有返回任何内容时,将永久链接更改为http://eternityofgamers.com/forums。我真的很抱歉我这么愚蠢。 >_
  • the_permalink 的调用什么都不返回是什么意思?此外,就目前而言,您应该像这样调用the_permalink()。但是,我相信the_parmalink() 已经是一个 Wordpress 功能。也许您应该将其称为 the_qrcode() 之类的其他名称并将永久链接传递给它(请参阅更新的代码)。
  • the_permalink 确实已经是一个 Wordpress 函数,我试图调用它来获取用于 QR 码 API 的 URL。而现在,由于 bbpress 中的一些明显故障,它唯一一次没有返回任何内容是在论坛页面上。我试图避免的是创建一个新功能。
【解决方案2】:

尝试:

<?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;
        }
    }
?>

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

【讨论】:

  • 使用此代码,并添加ini_set('display_errors', 1);error_reporting(E_ALL);,仍然没有错误返回。
  • @KeithGadberry,不应该。这意味着没关系。我们刚刚在这里声明了一个函数。没有要显示的输出。
  • 好吧,正如我发现的那样,我正在尝试做的是调用现有函数; the_permalink() 已经在 Wordpress 中了。 ://
  • @KeithGadberry,等什么?如果有一个名为the_permaling() 的函数,并且您正在尝试实现也称为the_permalink() 的函数,那么它显然会形成对比。您真正想要实现什么?您的整个代码是什么?
  • 正如我所说,我是新手,几乎不知道自己在做什么。以前我一直使用&lt;img src="http://api.qrserver.com/v1/create-qr-code/?data=&lt;?php the_permalink(); ?&gt;" alt="QR: &lt;?php the_title(); ?&gt;"/&gt; 作为小部件中的代码,它可以工作。我正在尝试做的是当the_permalink() 返回null 时,它会将其更改为http://eternityofgamers.com/forums。因为目前,论坛是我网站上唯一无法使用的页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多