PHP链接未出现

3

我正在尝试将“Facebook”文本变成可点击的链接,但出现了一些问题,它在前端界面上不会显示。

代码片段:

function friend_contact() {

$healthcard = get_field('healthcard');
$facebook = get_field('facebook');
$phone = get_field('phone');
$fax   = get_field('fax');
$email = get_field('email');

$post_info = '';

if (isset($healthcard['url'])) {
    $img = get_stylesheet_directory_uri() . "/images/mail-icon.png";
    $post_info .= '<a class="healthcard" href="'.$healthcard['url'].'"><img src="'.$img.'" /> Download Contact</a>';
}

if (isset($facebook['url']) && isset($healthcard['url']) {
    $post_info .= ' | ';
}   

if (isset($facebook['url'])) {
$post_info .= '<a href="'.$facebook['url'].'"><i class="fa fa-facebook" style="color:blue"></i> Facebook</a>';
}


$post_info .= '<ul class="friend-contact">';
$post_info .= "<li>$email</li>";
$post_info .= "<li>p: $phone</li>";
$post_info .= "<li>f: $fax</li>";
$post_info .= "</ul>";

var_dump($facebook);    
var_dump(get_field('facebook'));

genesis_markup( array(
    'html5' => sprintf( '<div class="entry-meta">%s</div>', $post_info ),
    'xhtml' => sprintf( '<div class="post-info">%s</div>', $post_info ),
) );
}

Dump的结果:

string(21) "https://www.yahoo.com" string(21) "https://www.yahoo.com"


图片描述

使用['url']的替代代码:

if (isset($facebook) && isset($healthcard['url']) {
    $post_info .= ' | ';
}

if (isset($facebook)) {
    $post_info .= '<a class="facebook" a href="$facebook"><i class="fa fa-facebook"></i> Facebook</a>';
    }

我认为问题的根源在于代码中的这一部分,['url']

提前感谢您。

3
get_field 返回什么? - Rowland Shaw
2
你正在输出 $post_info 对吗? - chris85
如果没有循环,就删除点号/连接符。$post_info = '<a...echo $post_info .= '<a href="'.$facebook['url'].'">... - Funk Forty Niner
1
你们自己聊吧,我要去买杯卡布奇诺了,再见。 - Funk Forty Niner
1
get_field() 这个函数还没有在代码中出现。我不知道它是否是任何 CMS 的核心功能,所以我必须放弃这个问题。我得走了,祝你好运。干杯! - Funk Forty Niner
显示剩余13条评论
2个回答

3
您需要用单引号回显字符串,这样它就不会处理变量。看起来好像是在双引号之间,但那是您的字符串的一部分。因此,要么将其放在双引号之外,要么使用转义字符。
$post_info .= '<a class="facebook" href="'.$facebook.'"><i class="fa fa-facebook"></i> Facebook</a>';

或者反转引号。
$post_info .= "<a class='facebook' href='$facebook'><i class='fa fa-facebook'></i> Facebook</a>";

编辑:哪种方法更好,是另一种讨论。只要您保持一致即可。

最后一个问题,我该如何显示URL,以便用户可以复制完整的URL或单击链接? - Bob King
1
他们现在可以点击链接了吗?或者你确切是什么意思?如果你想展示链接,那么在</i>和</a>之间再加一个'.$facebook.',但我不确定那是否是你的意思。:)我没有看到,但<a...>中多了一个额外的“a”,你可以将其移除。 - Francesco de Guytenaere

1

看起来你在以下这行代码中漏掉了一个闭合括号:

if (isset($facebook['url']) && isset($healthcard['url'])) {

你的代码应该像这样:

if ( isset($facebook['url']) && isset($healthcard['url']) ) {

此外,$facebook 变量是一个字符串,所以 $facebook['url'] 不是有效的,并且 isset($facebook['url']) 总是返回false。因此,请将所有带括号的部分替换为不带括号的 $facebook。
如果 $healthcard 也是一个字符串而不是数组,则还应将 $healthcard['url'] 替换为 $healthcard

我希望那是解决方案,但遗憾的是它并不影响最终结果。对于链接停留在变量名$facebook而不是其值www.yahoo.com - Bob King
所以只需这样 if ( isset($facebook) && isset($healthcard['url']) ) { - Bob King
如果是的话,我之前已经尝试过了,结果一样。点击链接会带我到 site.url + /$facebook。另外,healthcard 是一个数组,所以对于该字段来说,['url'] 是正确的。 - Bob King

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接