无法根据PHP值进行HREF更改

时间:2010-12-25 22:24:37

标签: php html wordpress shortcode

我想检索用户的位置,然后显示指向根据该位置更改的网址的链接。我只想将用户的城市名称放在HREF的末尾。

我需要在我的wordpress网站上,在静态页面上进行这项工作。我使用一个名为Exec-php的插件,让我在页面中运行PHP。

我有一个插件,通过短代码“[mmjs-city]”为我提供用户的城市。

我试图让它通过不同的路径工作,但我从来没有得到链接工作。

在这里,我尝试将该短代码分配给一个值,

<?php 
$city= "[mmjs-city]";
echo $city;

echo "<a href='?s=" . $city ."'>Search for your city</a>";
?>

我添加了前两行以检查短代码是否正常工作,以及它是否正确地为$ city值。那部分有效。然后它创建链接并在其末尾放置值$ city。但在尝试而不是带我去:

/?S =新+纽约

我需要:

/ S =%3Cscript%20language =%22javascript%22%3Edocument.write(geoip_city());?%3C /脚本%3E

我不知道该怎么做。我会非常感谢有关如何使其工作的任何信息,这对我的网站来说真的是一个重要的功能。请询问任何进一步的信息或idk任何东西。

这也是我测试该代码的地方:

http://chusmix.com/?page_id=1129

由于

4 个答案:

答案 0 :(得分:3)

问题是$ city实际上输出了一段javascript。然后浏览器执行该功能,并将用户的城市写入屏幕。

<script language="javascript">document.write(geoip_city());</script><br/><br/><a href='?s='>Search for your city</a>

如果您在href中使用此功能,则会直接链接到<script language="javascript">document.write(geoip_city());</script>,这会导致您显示的网址。

您正在通过彼此使用Javascript和PHP。如果你想创建一个与城市的链接,创建链接(或修改)javascript:找到链接(给它一个ID或在DOM中找到它)并分配href,或使用javascript打印链接本身(而不是A):

<script language="javascript">
document.write('<a href="?s=' + geoip_city() + '">Search for your city</a>');
</script>

答案 1 :(得分:1)

如果您检查页面的HTML代码,您可能会看到

<script language="javascript">document.write(geoip_city());</script>

由浏览器解释为JavaScript代码,以正确显示您的城市。但是,浏览器不会在链接中更改它,因为它在引号内引起浏览器打印或按原样使用字符串。

换句话说,JavaScript代码不会在链接中执行。

答案 2 :(得分:0)

嘿Liso, 这是因为短代码被WP插件操纵并作为javascript输出。因此,当您通过上述方法访问短代码时,分配的实际值是此javascript。

答案 3 :(得分:0)

您的问题是该位置不是来自PHP。所有的短代码都放在一些javascript中去获取位置然后打印出来。

<script language="javascript">document.write(geoip_city());</script>

您可以使用其他一些基于IP地址查找位置的方法。这样的事情:http://ipinfodb.com/ip_location_api.php

或者您可以编写一些使用插件提供的geoip_city()函数的javascript,并更改需要更改的网址的链接。如果需要更改的URL位于类location_link的链接中(并且您使用的是jQuery),则可以执行以下操作:

$('.location_link').each(function(i,v) {
    $(v).attr('href', $(v).attr('href') + geoip_city());
});

此链接最初必须只有?s=才能生效。在加载所有页面元素之后,需要完成此代码 - 您可以使用jQuery的ready函数:http://api.jquery.com/ready/