WP-Download_Monitor – 如何新窗口打开下载链接

打开 hostname/wp-content/plugins/download-monitor/shortcodes.php 文件,找到

78
79
80
81
			if (empty($format) || $format=='0') {
				$format = '<a class="downloadlink" href="{url}" title="{version,"'.__("Version","wp-download_monitor").'", ""} '.__("downloaded","wp-download_monitor").' {hits} '.__("times","wp-download_monitor").'" >{title} ({hits})</a>';	
 
			}

将其修改成:

78
79
80
81
			if (empty($format) || $format=='0') {
				$format = '<a class="downloadlink" href="{url}" target="_blank" title="{version,"'.__("Version","wp-download_monitor").'", ""} '.__("downloaded","wp-download_monitor").' {hits} '.__("times","wp-download_monitor").'" >{title} ({hits})</a>';	
 
			}

同理,找到:

207
208
209
210
		if (empty($format) || $format=='0') {
			$format = '<a class="downloadlink" href="{url}" title="{version,"'.__("Version","wp-download_monitor").'", ""} '.__("downloaded","wp-download_monitor").' {hits} '.__("times","wp-download_monitor").'" >{title} ({hits})</a>';		
 
		}

改成:

207
208
209
210
		if (empty($format) || $format=='0') {
			$format = '<a class="downloadlink" href="{url}" target="_blank" title="{version,"'.__("Version","wp-download_monitor").'", ""} '.__("downloaded","wp-download_monitor").' {hits} '.__("times","wp-download_monitor").'" >{title} ({hits})</a>';		
 
		}

如何把FaceBook和Twitter显示给中国大陆用户

本文以WordPress环境为例
首先,请参照全部中国大陆IP段获取中国大陆IP信息
然后,安装好Exec-PHP插件
查看你的FaceBook代码,以我的为例:

1
<!-- Facebook Badge START --><a href="http://zh-tw.facebook.com/ksj32750" target="_TOP" style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; font-variant: normal; font-style: normal; font-weight: normal; color: #3B5998; text-decoration: none;" title="Peter Chang">Peter Chang</a><br/><a href="http://zh-tw.facebook.com/ksj32750" target="_TOP" title="Peter Chang"><img src="http://badge.facebook.com/badge/100001562501152.221.1559676673.png" width="120" height="252" style="border: 0px;" /></a><br/><a href="http://zh-tw.facebook.com/badges/" target="_TOP" style="font-family: &quot;lucida grande&quot;,tahoma,verdana,arial,sans-serif; font-size: 11px; font-variant: normal; font-style: normal; font-weight: normal; color: #3B5998; text-decoration: none;" title="建立你的名片貼!">建立你的名片貼</a><!-- Facebook Badge END -->

我把它砍得只剩下:

1
<a href="http://zh-tw.facebook.com/ksj32750" target="_TOP" title="Peter Chang"><img src="http://badge.facebook.com/badge/100001562501152.221.1559676673.png" width="120" height="252" style="border: 0px;" /></a>

也就是去掉了上面的名字和下面的无用链接。

然后在img标签的src后面添加php代码,结果如下:

1
2
3
4
5
6
7
8
9
10
11
<!-- Facebook Badge START --><a href="http://zh-cn.facebook.com/ksj32750" target="_TOP" title="Peter Chang"><img src=<?php
    if ($cn)
    {
        clearstatcache();
        if (!file_exists("$RootDir/wp-includes/images/cache/facebook.1559676673.png") || time() - filemtime("$RootDir/wp-includes/images/cache/facebook.1559676673.png") > 86400)
            copy("http://badge.facebook.com/badge/100001562501152.221.1559676673.png", "$RootDir/wp-includes/images/cache/facebook.1559676673.png");
        echo "http://zi-jin.com/wp-includes/images/cache/facebook.1559676673.png";
    }
    else
        echo "http://badge.facebook.com/badge/100001562501152.221.1559676673.png";
?> width="120" height="252" style="border: 0px;" /></a><!-- Facebook Badge END -->

直接复制是无用的,那会显示我的出来…… [#38]
请参照以上稍作修改即可。
如果不会判断用户的ip段,请参考PHP判断IP段-以大陆ip段为例

PHP判断IP段-以大陆ip段为例

大陆IP段全部中国大陆IP段

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
    $RootDir = $_SERVER['DOCUMENT_ROOT'];
    $ip = $_SERVER["REMOTE_ADDR"];
    sscanf($ip, "%d.%d.%d", $ip1, $ip2, $ip3);
    $ipv4arr = file("$RootDir/zi-jin.com/china-ipv4.txt");
    $cn = false;
    foreach ($ipv4arr as $ipv4)
    {
        sscanf($ipv4, "%d.%d.%d - %d.%d.%d", $lip1, $lip2, $lip3, $rip1, $rip2, $rip3);
        if ($ip1 < $lip1 || $ip1 > $rip1)
            continue;
        if ($lip1 == $rip1)
        {
            if ($ip2 < $lip2 || $ip2 > $rip2)
                continue;
            if ($lip2 == $rip2)
            {
                if ($ip3 >= $lip3 && $ip3 <= $rip3)
                {
                    $cn = true;
                    break;
                }
            }
            else if ($ip2 == $lip2)
            {
                if ($ip3 >= $lip3)
                {
                    $cn = true;
                    break;
                }
            }
            else if ($ip2 == $rip2)
            {
                if ($ip3 <= $rip3)
                {
                    $cn = true;
                    break;
                }
            }
            else
            {
                $cn = true;
                break;
            }
        }
    }

然后就可以根据

1
2
3
4
    if ($cn)
        //do sth for Chinese;
    else
        // do sth for not Chinese;

全部中国大陆IP段

因为为了让大陆访问者看到本博的facebook和twitter
所以先得区分大陆访问者和非大陆访问者
首先要有所有中国大陆IP地址的数据
附上APNIC网站IP段数据下载地址

http://ftp.apnic.net/apnic/dbase/data/country-ipv4.lst

写个小程序把中国大陆的ip段全部抽取出来:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
 
int main()
{
    freopen("country-ipv4.lst", "r", stdin);
    freopen("china-ipv4.txt", "w", stdout);
    char buf[1024], *pch, outch[64];
    while (gets(buf))
    {
        if (buf[0] == '#')
            continue;
        pch = strstr(buf, "cn");
        if (NULL == pch)
            continue;
        pch = strstr(buf, " :");
        strncpy(outch, buf, pch - buf);
        outch[pch - buf] = '\0';
        puts(outch);
    }
}

大家可以直接下载已经抽取出来的china-ipv4.txt (192)

【WordPress】WP-CodeBox-水平滚动条导致高度问题

CodeBox当代码过长时底部会出现一个水平滚动条,可这样导致高度计算错误,垂直方向也出现了一个滚动条,这本也不是什么大不了的事。
关键就在于如果只有一行代码,那这行代码就看不到了(不信你可以试试,长度只要超过页面宽度就行)

同样,设计网页时也可能会出现这种情况(IE内核)

解决方法:
1.进入后台,编辑插件,(Plugins – Editor)
(也可以用ftp软件编辑、下载下来编辑好再上传、通过WebShell编辑等)
2.打开codebox.css文件
3.找到

1
2
3
4
/* codebox */
.wp_codebox  {
……
}

4.将

1
overflow: auto;

修改成:

1
2
3
overflow-x: auto;
overflow-y: hidden;
padding-bottom: expression(this.scrollWidth > this.offsetWidth ? 15 : 0);

5.保存修改

搞定,刷新页面可看到变化。
注意:笔者写这篇文章时,WP-CodeBox最新版本为1.4.3

【WordPress】WP表情插件-Custom Smilies自动填充自动输入表情代码符号”What to type”

Custom Smilies在你添加新表情后,必须手动为每一个表情键入一个独特的表情代码,如果表情比较多,这也是相当浪费时间的,而且一般我们的表情代码都有一定规律,比如我的[#01][#02][#03]……

操作:
1.进入后台,编辑插件,(Plugins – Editor)
(也可以用ftp软件编辑、下载下来编辑好再上传、通过WebShell编辑等)
2.打开common.inc.php文件
3.查找这一行代码:

1
<td><input type="text" name="<?php echo $smilie_name ?>" value="<?php echo $old_smilies[$smilie] ?>" style="text-align:center" /></td>

4.将其修改为:

1
2
3
4
5
6
7
8
                    <td><input type="text" name="<?php echo $smilie_name ?>" value="<?
                        if ($old_smilies[$smilie]) {
                            echo $old_smilies[$smilie];
                        }
                        else {
                            ?>[#<?=$count+1?>]<?
                        }
                    ?>" style="text-align:center" /></td>

5.别忘了最后一步,一定要更新你的表情才有效:进入博客后台Smilies设置页面,点击Update

以后只要你进入Smilies的管理页面,都会将所有表情自动编号,你点击Update即可

注意:笔者写这篇文章时,Custom Smilies最新版本为2.9.1

【WordPress】WP表情插件-Custom Smilies图片变成叉叉烧包无法显示地址中空格被下划线取代问题

今天装了Custom Smilies (By Crazy Loong) 插件,可是却发现表情图片都变成了叉烧包,右键点属性,发现图片地址中本来是空格的莫名其妙变成了下划线:’_’

打开插件文件,找到cs_save_smilies函数,再往上找,是cs_save_smilies($_POST);看来可能并不是这个插件的bug,那我们就在cs_save_smilies函数这里动点手脚吧

1.进入后台,编辑插件,(Plugins – Editor)
(也可以用ftp软件编辑、下载下来编辑好再上传、通过WebShell编辑等)
2.打开common.inc.php文件
3.找到cs_save_smilies函数的定义(找到下面这段代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// save smilies to file
function cs_save_smilies($array) {
    if (!is_array($array)) {
        return;
    }
 
    foreach ($array as $k => $v) {
        // sanitize smilies: remove \ ' " and trim whitespaces
        $array[$k] = trim(str_replace(array('\'','\\', '"'), '', $v));
    }
 
    $array = array_flip($array);
    $array4db = array();
 
    foreach ($array as $k => $v) {
        // sanitize smilies file name
        $array[$k] = $v = str_replace('|', '.', $v);
        if (!in_array($v, array('update-smilies', 'page')) && !in_array($k, array('', 'QAD'))) {
            $array4db[$k] = $v;
        }
    }
 
	update_option('clcs_smilies', $array4db);
 
    return $array;
}

4.在

1
$array[$k] = $v = str_replace('|', '.', $v);

后面添加:

1
$array[$k] = $v = str_replace('_', ' ', $v);

5.别忘了最后一步,一定要更新你的表情才有效:进入博客后台Smilies设置页面,点击Update

注意:笔者写这篇文章时,Custom Smilies最新版本为2.9.1