我认为问题不在于自定义元字段的工作方式(查看XY problem). 问题在于使用相对URL,无论您是否意识到这是您正在做的事情。
留空,<a href="" target="_blank">
默认情况下是您所在的页面。同样地echo \'<a href="\'.get_post_meta($post->ID,"nada",TRUE).\'" target="_blank">Hi</a>\';
如果没有“nada”元键,则默认为您所在的页面。如果有一个键,则链接最终显示如下:
<a href="yourkeyvalue" target="_blank">
这是一个相对URL,将由浏览器转换为“您所在的页面”加上“yourkeyvalue”。在这里,您可以看到事物“添加”在一起。
我不能百分之百确定你想要完成什么,但我认为是这样的:
$url = get_post_meta($post->ID,"source",TRUE);
if (empty($url)) {
$url = get_permalink();
} else {
// make an absolute URL
$url = site_url($url);
} ?>
<a href="<?php echo $url; ?>" target="_blank">
<?php the_post_thumbnail(); ?>
</a><?php
唯一需要注意的是下面这条线
// make an absolute URL
. 我不知道你到底在插入什么样的信息,或者你需要什么样的清理/验证/操作。
如果您只想在有源值的情况下打印链接,请使用以下选项:
$url = get_post_meta($post->ID,"source",TRUE);
if (!empty($url)) { ?>
<a href="<?php echo $url; ?>" target="_blank">
<?php the_post_thumbnail(); ?>
</a><?php
}
您的
source
元值
has to be 绝对URL--
http://example.com/whatever
. (
You can probably get away with a protocol relative URL.)