0

我猜有一个简单的解决方案,但是在搜索它时我似乎无法正确表达我的措辞,所以我将其发布在这里。

我在 Wordpress 中有一些看起来像这样的链接:

<a target="_blank" href="<?php echo get_post_meta($post->ID, $prefix.'hjemmeside', true); ?>"><?php echo get_post_meta($post->ID, $prefix.'hjemmeside', true); ?></a>

只是我在单个模板中回显的常规链接以创建用户主页/facebook 等。问题是当您单击它时,该链接只会将自身添加到 URL 的末尾:

例子:

wordpress.com/single

点击链接时:

wordpress.com/single/www.homepagelink.com

谢谢你的帮助 :)

4

1 回答 1

1

我的猜测是 wordpress 没有添加任何东西。如果您在自定义字段中没有前面的 URL http://,浏览器会以这种方式显示。如果您使用浏览器检查生成的源代码,您会发现如下代码:

<a target="_blank" href="www.homepagelink.com">www.homepagelink.com</a>

如果没有http://或其他有效的 URL 模式,浏览器会将其解释为相对链接并按此方式处理。

您可以http://在字段中添加值,也可以在主题中放置一个包装器函数,functions.php以确保无论字段中放入什么,它始终被解释为 URL。

function my_field_link($id, $field) {
  $value = get_post_meta($id, $field, true);
  if (substr($value, 0, 7) == "http://") return $value;
  return "http://" . $value;
}

然后你可以像这样调用这个函数:

<a target="_blank" href="<?php echo my_field_link($post->ID, prefix.'hjemmeside'); ?>"><?php echo my_field_link($post->ID, prefix.'hjemmeside'); ?></a>

现在链接将始终以http://.

注意:如果您希望使用其他 URL 模式(https、ftp、scp 等),您应该相应地调整函数。

于 2013-04-02T11:42:41.420 回答