0

ユーザーの場所を取得して、その場所に応じて変化するURLを指すリンクを表示したいと思います。HREFの最後にユーザーの都市名を配置したいだけです。

私のワードプレスサイトの静的ページでこの作業が必要です。私はExec-phpというプラグインを使用しており、ページでPHPを実行できます。

ショートコード「[mmjs-city]」を使用してユーザーの都市を提供するプラグインがあります。

さまざまなパスで機能させるようにしましたが、リンクが機能することはありません。

ここで、そのショートコードを値に割り当ててみました。

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

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

最初の2行を追加して、ショートコードが機能しているかどうか、および値$cityに正しく割り当てられているかどうかを確認しました。その部分は機能します。次に、リンクを作成し、その最後に値$cityを置きます。しかし、私を連れて行く代わりにそれを試すとき:

/?s = new + york

それは私を連れて行きます:

/?s=%3Cscript%20language=%22javascript%22%3Edocument.write(geoip_city());%3C / script%3E

どうしたらいいのかわからない。それを機能させる方法についての情報を本当にありがたいです。それは私のサイトにとって本当に重要な機能です。さらに詳しい情報を求めるか、何かをidkしてください。

また、これは私がそのコードをテストした場所です:

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

ありがとう

4

4 に答える 4

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>、表示されているURLの原因になります。

あなたはお互いにJavascriptとPHPを使用しています。都市とのリンクを作成する場合は、リンクを作成(または変更)してください。javascript:リンクを見つけて(IDを指定するか、DOMで検索して)、hrefを割り当てるか、javascriptを使用してリンク自体を印刷します。 (Aの代わりに):

<script language="javascript">
document.write('<a href="?s=' + geoip_city() + '">Search for your city</a>');
</script>
于 2010-12-25T22:35:40.813 に答える
1

ページのHTMLコードを確認すると、おそらく次のように表示されます。

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

これは、ブラウザによってJavaScriptコードとして解釈され、都市を正しく表示します。ただし、リンク内の引用符の中にあるため、ブラウザはリンク内でそれを変更しないため、ブラウザは文字列をそのまま印刷または使用します。

つまり、JavaScriptコードはリンクで実行されません。

于 2010-12-25T22:35:28.427 に答える
0

ねえリソ、これはショートコードがWPプラグインによって操作され、JavaScriptとして出力されるためです。したがって、上記の方法でショートコードにアクセスすると、割り当てられる実際の値はこのjavascriptになります。

于 2010-12-25T22:36:20.690 に答える
0

あなたの問題は、場所がPHPからのものではないということです。ショートコードはすべて、場所を取得して出力するjavascriptに入れられます。

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

あなたができることは、IPアドレスに基づいて場所を見つける他の方法を使用することです。このようなもの:http://ipinfodb.com/ip_location_api.php

または、プラグインが提供する関数を使用するjavascriptを記述しgeoip_city()、変更が必要なURLのリンクを変更することもできます。変更する必要のある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/

于 2010-12-25T22:41:06.580 に答える