A-A+

IP 到国别 WordPress插件

2008年12月19日 WordPress 暂无评论 阅读 1 次

这是作者非常早期完成一个Wordpress 插件。该插件根据来访者的地址反查出国别省市点击 examples 查看例子。是基于ip2nation 提供的免费数据简单编程打包形成的插件.

建立MySQL表格

首先到 ip2nation 并下载 .sql文件 (本人未做数据镜像是因为数据更新比较频繁,这样的镜像做起来太累,还是自己下载的好,因为是压缩文件仅数百K) 这个 .sql 首先创建两个表, ip2nation 和 ip2nationCountries ,还包括一些敏感地址:)

新手指南 : 首先, 建议安装 PHPMyAdmin . 他非常友好的的帮助你操作MySQL数据库 。利用下载的sql文件就可以快速生成两个本插件需要的表.

下载插件

地址:ozhs-ip-to-nation.zip
解压到插件目录

使用插件

本插件建立了两个标签"template tags"供在页面上使用 :

  • wp_ozh_getCountryName() : 显示国别名(France, Belgium, Vanuatu, 等等).
  • wp_ozh_getCountryCode() : 显示国别名 "代码" : 2 字母, 和两位顶级域名类似 (fr, be, it,cn等等)

这两个函数的可选参数为 :

  • $display : 缺省为 0 (zero), 显示出结果(见下面的例子)
  • $ip : 缺省为 $_SERVER['REMOTE_ADDR'], 访问者的 IP地址.

(注意 : 每个标签需要1 SQL查询.)

(注意 2 :命名插件和函数名称前缀为 "wp_ozh_" 防止与其他函数或插件文件名重复, 防止类似插件同名出现错误或混乱)

使用举例

举例如下,插件使用参考如下代码 :

PHP:
  1. <?php
  2. echo "You are probably from " . wp_ozh_getCountryName( ) ."<br />" ;
  3. echo "If so, your country flag is <img alt=" your flag"
  4. src=" /images/flags/flag_"
  5. . wp_ozh_getCountryCode( ) . ".gif" ><br />" ;
  6. ?>

The template wp_ozh_getCountryCode() goes well with this awesome tiny flags pack you've seen everywhere on the web (which were originally created by a guy I know, Zarkof, for this site , and are free to use, which is a nice gift considering the amount of pixel skills and time he must have put in these 175 flags 🙂

Passing the parameter "0" (zero) to a function could be useful for example to test a language redirection without printing anything. The following example determines wether the user is supposedly speaking French or not :

PHP:

  1. <?php
  2. $country = wp_ozh_getCountryName( 0 ) ;
  3. switch ( $country ) {
  4. case "France" :
  5. case "Guadeloupe" :
  6. case "Luxembourg" :
  7. case "Monaco" :
  8. case "Martinique" :
  9. case "New Caledonia" :
  10. case "French Polynesia" :
  11. case "St. Pierre and Miquelon" :
  12. case "Reunion" :
  13. case "French Southern Territories" :
  14. case "Wallis and Futuna Islands" :
  15. echo "you speak French" ;
  16. break ;
  17. default :
  18. echo "you may not speak French" ;
  19. }
  20. ?>

你也可以把一个IP地址传给函数,调用函数显示国别, 可用于显示评论者的国别 : blogroot/wp-comments.php (WP 1.2) 或者 blogroot/wp-content/themes/yourtheme/comments.php (WP 1.5+), 在看到 <?php comment_author_link() ?> ,添加如下代码 :

PHP:
  1. <?php comment_author_link( ) ?> from
  2. <?php wp_ozh_getCountryName( 1 ,$comment ->;comment_author_IP) ?>

运行时会显示诸如 : JohnDoe from India

显示小国旗 (like in comments here), 添加如下代码 :

PHP:
  1. <?php
  2. echo '<img alt="your flag" src="/images/flags/flag_'
  3. . wp_ozh_getCountryCode( 0 ,$comment ->comment_author_IP )
  4. . '.gif">' ;
  5. ?>

免责声明Disclaimer

我不能保证ip2nation数据产生100%正确的结果。您可能会发现发生不正确结果,如“欧洲”或“美国Educationnal ” ,而不是一个具体国家。建议你吧发现的问题告诉 ip2nation

»


wrote, on 15/Dec/08 at 9:48 pm #
:

  1. Just a quick note on how I added support for this awesome plug into WordPress 2.7.
    In the wp-includes folder there's a file called "comments-template.php". Open it and look for the following piece of code (it's on line 1226):

    PHP:
    1. printf ( __( '<cite>%s</cite> says:' ) , get_comment_author_link( ) )

    Replace it with the following lines (all between php tags of course)

    PHP:
    1. /* ----- ADDED: OZH'S IP2NATION PLUGIN ----- */
    2. if ( function_exists ( 'wp_ozh_getCountryCode' ) ) {
    3. $countrycode = wp_ozh_getCountryCode( 0 ,$comment -&gt;comment_author_IP) ;
    4. $countryflag = 'comment_author_IP) . ' .png"&gt;';
    5. }
    6. if (function_exists('wp_ozh_getCountryName')) {
    7. $countryname = wp_ozh_getCountryName(0,$comment-&gt;comment_author_IP);
    8. }
    9. printf(__('<cite>%s</cite> (from ' . $countryflag . ' ' . $countryname . ') says:'), get_comment_author_link())




给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录