wordpress显示评论者来自哪个城市

实现的原理是利用新浪和淘宝的IP查询接口,返回IP所属城市

小修了下代码,去掉了挂载点,直接在显示评论时调用函数

将以下函数放到你的functions.php 中

/**
* 使用api获取城市
* @param string $ip
* @return string|mixed
*/
function wpgo_get_city($ip = null) {
$ip = $ip == null ? wpgo_get_ip() : $ip;
$ipApi = array (
'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=',
'http://ip.taobao.com/service/getIpInfo.php?ip='
);

foreach ( $ipApi as $k=> $api ) {
$res = wp_remote_get ( $api . $ip );
if ( is_object ( $res ) && $k == 0 ) {
continue;
}
if (! empty ( $res ['body'] )) {
$return = json_decode ( $res ['body'], true );
if (! empty ( $return ['city'] )) {
return $return ['city'];
} elseif( $return ['province'] == '香港' || $return ['province'] == '澳门') {
return $return ['province'];
} else {
return $return ['country'];
}
}
}
return false;
}

/**
* 获取当前用户ip
* @return string
*/
function wpgo_get_ip() {
if ( getenv ( "HTTP_CLIENT_IP" ) && strcasecmp ( getenv ( "HTTP_CLIENT_IP" ), "unknown" ) ) {
$ip = getenv ( "HTTP_CLIENT_IP" );
} elseif (getenv ( "HTTP_X_FORWARDED_FOR" ) && strcasecmp ( getenv ( "HTTP_X_FORWARDED_FOR" ), "unknown" )) {
$ip = getenv ( "HTTP_X_FORWARDED_FOR" );
} elseif (getenv ( "REMOTE_ADDR" ) && strcasecmp ( getenv ( "REMOTE_ADDR" ), "unknown" )) {
$ip = getenv ( "REMOTE_ADDR" );
} elseif (isset ( $_SERVER ['REMOTE_ADDR'] ) && $_SERVER ['REMOTE_ADDR'] && strcasecmp ( $_SERVER ['REMOTE_ADDR'], "unknown" )) {
$ip = $_SERVER ['REMOTE_ADDR'];
}
if ($_SERVER ['REMOTE_ADDR'] == '127.0.0.1' && $ip == 'unknown') {
$ip = 'localhost';
}
return $ip;
}

最重要的一段:最后在你的模板输出评论之前,获取城市字段,下面是引用我模板里的代码,你只能参考判断方式,具体怎么修改得根据你的模板来修改

// 如果是管理员回复
if ( $is_admin ) {
$city = '来自管理员的回复';
} else {
// 兼容以前还没有城市字段的评论
$city = get_comment_meta( $comment->comment_ID, 'city_name', true );
if( !$city ) {
$city = wpgo_get_city ( $comment->comment_author_IP );
// 如果api可以正常获取到城市信息,则插入数据库
if ( $city ) {
update_comment_meta( $comment->comment_ID, 'city_name', $city );
} else {
// 如果因为异常获取不到api的信息,返回自定义字符串,留着下次读取评论时再重新获取
$city = '火星';
}
}
$city = "来自{$city}的网友";
}

From Cuelog

手机网站之触屏焦点图插件:owlcarousel

公司建立手机网站,老潘参与了静态页面的切图以及一些简单的特效制作,在制作过程中,遇到了一个问题,手机网站上触摸并且响应式的焦点图,百般google才找到这个完美的东西owlcarousel

demo请移步:http://www.owlgraphic.com/owlcarousel/

引用方法:




$(document).ready(function() {

 $(“#owl-example”).owlCarousel();

});
调用

Via:http://leapsoul.com/mobile-touchscreen-focus-plug-in/

超棒的视觉效果jQuery插件 – FractionSlider

   应领导要求,在给公司做专题的时候,需要给专题加上slider里文字图片等的飞入飞出淡入淡出等效果,google之,发现FractionSlider ,DEMO请移步http://jacksbox.de/stuff/jquery-fractionslider/

   使用非常简单,先引入css和js,如下:



 

 

 
 

   需要使用动画的元素示例如下:

   调用FractionSlider插件

jQuery(window).load(function(){
 $(‘.slider’).fractionSlider();
});

   下载地址:https://github.com/jacksbox/jquery.fractionslider

   Via:http://leapsoul.com/great-parallax-effects-jquery-plugin-fractionslider/

WordPress搜索页面关键词加亮

function search_word_replace($buffer){
    if(is_search()){
        $arr = explode(" ", get_search_query());
        $arr = array_unique($arr);
        foreach($arr as $v)
            if($v)
                $buffer = preg_replace("/(".$v.")/i", "$1", $buffer);
    }
    return $buffer;
}
add_filter("the_title", "search_word_replace", 200);
add_filter("the_excerpt", "search_word_replace", 200);
add_filter("the_content", "search_word_replace", 200);

加载主题文件夹下的functions.php中,嵌套em标签,可以根据需要调整标签样式。Via: http://www.cmhello.com/wordpress-search-keyword-highlight.html

WP Super Cache路径引起的bug

今天换了一个环境,因为缓存插件WP Super Cache的缘故,导致后台不显示。并一段警告闪过:

WP Super Cache is installed but broken. The constant WPCACHEHOME must be set in the file wp-config.php and point at the WP Super Cache plugin directory.

Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php.

等等。。

解决方法:

define(‘WPCACHEHOME’, dirname(__FILE__) . ‘/wp-content/plugins/wp-super-cache/’);

 

Via:http://wordpress.org/support/topic/warning-wp-super-cache-caching-broken-the-script-advanced-cachephp-could-not

用路由做个在线的家庭电源检查

 

应用场景:家里/办公室停电不知停多久,出去活动但有事没处理完,想知道什么时候恢复供电,这个小东西就用得上了

demo: http://www.6zou.net/tools/power.php

基本要求:路由自动拨号、动态域名、支持php的空间

一、开启远程管理

路由一般都带有远程管理功能,配置好端口和允许管理的远程ip

也就是支持php空间的服务器ip

二、开启动态dns

推荐花生壳,路由上线后自动更新路由ip和域名配对

这样php空间就可以获得路由的实时ip了

三、php脚本

 路由实时IP
$port   = ':81';          //路由远程管理端口
$pwd    = 'admin:admin';  //路由管理用户名、密码
$ip     = gethostbyname($domain);
$url    = 'http://'.$pwd.'@'.$ip.$port.'/userRpm/StatusRpm.htm?rnd='.rand(0,1000); //TP-LINK路由状态页
      
$res    = file_get_contents( $url );
//以下内容根据不同路由状态页来提取状态,TP-LINK状态存于javascript数组中
$res    = substr( $res , 0 , strpos($res, '

Via: http://www.6zou.net/works/router-as-power-checker.html

js代码 设为首页 加入收藏

// JavaScript Document
//  加入收藏 加入收藏
      
function AddFavorite(sURL, sTitle)
{
    try
    {
        window.external.addFavorite(sURL, sTitle);
    }
    catch (e)
    {
        try
        {
            window.sidebar.addPanel(sTitle, sURL, "");
        }
        catch (e)
        {
            alert("加入收藏失败,请使用Ctrl+D进行添加");
        }
    }
}
//设为首页 设为首页
function SetHome(obj,vrl){
        try{
                obj.style.behavior='url(#default#homepage)';obj.setHomePage(vrl);
        }
        catch(e){
                if(window.netscape) {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                        }
                        catch (e) {
                                alert("此操作被浏览器拒绝!\n请在浏览器地址栏输入“about:config”并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");
                        }
                        var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
                        prefs.setCharPref('browser.startup.homepage',vrl);
                 }
        }
}
设为首页
     
收藏本站

Via:http://www.cnblogs.com/naniannayue/archive/2011/12/16/2289798.html