wordpress 分类相关问题

December 25th, 2011 by admin No comments »

1,主页只显示主分类。
Use depth =1 so show only the parents.
<?php wp_list_categories('depth=1'); ?>

2,获取当前分类id

在循环中使用
$current_category = single_cat_title("", false);

3,在循环外 在post页面获取分类

<?php
global $post;
$categories = get_the_category($post->ID);
var_dump($categories);
?>

PHP 写入Mysql数据库,标记语言出现特殊符号!

December 23rd, 2011 by admin No comments »

数据存入数据库时,会自动对<,单引号等特殊符号转码,读取时再还原,主要是为了安全考虑,譬如&会变成& 等等。

解决方法:
可以尝试使用函数
html_entity_decode($str)
将内容还原为HTML,这样就可以了。
详情参考:

http://www.w3school.com.cn/php/func_string_html_entity_decode.asp

当我们需要根据html数据去查询数据库的时候,就需要反过来,因为在数据库中&‘<等符号都是编码过的,就需要用到下面的自定义函数,将html存在的特殊符号编码以便和数据库一致。

附函数html_entity_encode($str)

function html_entity_encode($str) {
preg_match_all("/[\x{4e00}-\x{9fa5}]|./iu",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(ord($v[0]) < 128) {
$ar[$k] = htmlentities($v);
} else {
$v = iconv(“UTF-8″,”UCS-2″,$v);
$ar[$k] = “&#”.((ord($v[0]) << 8) + ord($v[1])).’;';
}
}
return join(“”,$ar);
}

Invalid argument supplied for foreach() in 问题的解决方法

December 23rd, 2011 by admin No comments »

很简单。。
foreach() 循环只针对数组,出现问题的原因是foreach里面的那个被each的参数不是数组。
foreach 里面的参数如果不是数组或是空值,不会进入内部循环更不会报错,不要误导!所以最好在用foreach的时候在前面加一个is_array判断。

zerg你猥琐,爷Toss比你更猥琐

October 23rd, 2011 by admin 1 comment »

现在在vs平台上的zerg深受韩国联赛的影响,只要爷用protoss,对方必定选择zerg,今天大爷三矿在手久攻不下;反被zerg偷袭断断续续端掉老家,愤愤不平。你zerg就是摆好猥琐大阵等爷去冲你么???非得这样吗?火大,于是乎乘zerg不备,四人图上抢住一个大矿点位,摆下猥琐大阵,路口堵死,后排地堡+闪电+金甲+zealot肉盾,空中海盗+航母,一直维持高人口,死守就是不出,zerg爆出大量小狗+大牛,狂冲不止,徒留尸体满地,血流成河,如此十余次,zerg郁闷不已,狂喷鲜血,愤而拔猫。无他,只是为了让zerg体念一下猥琐大阵而已。

!!

October 20th, 2011 by admin No comments »

……………..

Kloxo/Lxadmin控制面板添加无限个域名申请办法

July 3rd, 2011 by admin No comments »

Kloxo/Lxadmin控制面板默认是只能添加40个域名的,对于大部分小站长来说40个域名已经够用了,可是有的朋友尤其是做站群的站长肯定是不够的,下面vpsma说下让你的Kloxo/Lxadmin控制面板添加无限域名,以前这个功能是要收费的,现在官方已经免费可以申请了,确实是一件好事。不多说了,简单的说下申请无限个域名个数的办法:

1.打开页面:http://lxlabs.com/register/ 很多地区打不开,挂美国vpn就能打开了。

输入用户名和你的接收信箱。

Kloxo/Lxadmin控制面板添加无限个域名申请办法

2.进入你的信箱找到系统发给你的密码。

3.打开 https://srvb.lxcenter.org:5557/ 用刚才你申请的用户名和系统发给你的密码登陆。

4.登陆后点击:Kloxo Licenses

Kloxo/Lxadmin控制面板添加无限个域名申请办法

5.点Add kloxo License ,然后添加你的kloxo控制面板所在的vps的主ip,点add添加。

Kloxo/Lxadmin控制面板添加无限个域名申请办法

6.登陆你的kloxo控制面板,点Advanced—-license Update

Kloxo/Lxadmin控制面板添加无限个域名申请办法

7.进入之后点Update License From Lxlabs

Kloxo/Lxadmin控制面板添加无限个域名申请办法

8.ok,更新成功了,你的kloxo可以添加无限个域名,再也没有域名个数限制了!

Kloxo/Lxadmin控制面板添加无限个域名申请办法

贼郁闷

June 30th, 2011 by admin No comments »

时间其实很容易就没了,对比对比价格,看看口碑,就不知不自觉的没了。然后最后还没买成,或者一味追求便宜,性价比,结果更悲剧。只是看不透那么一点点的价格,看不透。。想想一个月其实也没多少米,带来的却是性能的提升,站点的稳定,省心省事,何乐不为呢?可惜不是人人能看透的,纠结于价格,纠结于性价比。

突然想到其实生活中也是如此。太多的看不透。

一旦有流量不可随意修改

June 27th, 2011 by admin No comments »

否则后果很严重,直接降权掉流量。

如果你的站点一直收录很好,却没流量,那就痛快的一次改好吧。。

vps 小内存 开启FastCGI模式需谨慎

June 25th, 2011 by admin No comments »

很长一段时间以来,我注意到工作在FastCGI模式下的PHP会占用越来越多的内存,而且似乎从不释放。起初我以为这是内存泄漏的问题,但是各个PHP社区的人好像并没有把这个当作问题。我搜索了一下,发现还有不少人面临同样的问题。来自PHP官方的一个比较正式的解释是:php-cgi进程并没有内存泄漏,php-cgi会在每个请求结束的时候回收脚本使用的全部内存,但是并不会释放给操作系统,而是继续持有以应对下一次PHP请求。这样做大概是为了减少内存碎片化或者解决从系统申请内存之后又释放回操作系统所需要的时间不可控问题。可是如果偶然一次PHP请求使用了诸如ftp或者zlib这样的大内存操作,那么将导致一大块系统内存被php-cgi持续占有,不能被利用。

解决这个问题的办法是在web服务器配置中降低PHP_FCGI_MAX_REQUESTS的值。这个参数决定了一个php-cgi进程被创建出来之后,最多接受的PHP请求数,在lighttpd中默认配置是10000。也就是说这个php-cgi进程每接受10000次PHP请求后会终止,释放所有内存,并重新被管理进程启动。如果把它降低,比如改成100,那么php-cgi重启的周期会大大缩短,偶然的高内存操作造成的问题影响时间也会缩短。

另一个办法则是写一个crontab脚本,定时发现高内存占用的php-cgi进程并向它传送kill指令。

对于虚拟主机也存在这样的问题。。

此外:FastCGI开启之后,每个进程额外需要消耗15m。测试的的得来的结果。

避免重复内容的发布

June 24th, 2011 by admin No comments »

Maybe if you use something like a wpdb query including the wp_posts and wp_postmeta searching this meta before inserting the post…

$string = 'the_url.html';
$output = $wpdb->get_var($wpdb->prepare("SELECT count(id)
            FROM $wpdb->posts wpo, $wpdb->postmeta wpm
            WHERE wpo.ID = wpm.post_id
            AND wpm.meta_key = 'name_of_ur_meta'
            AND wpm.meta_value = '$string'"));      

if(empty($output)) {
    /* Insert your post */
    } else {
            /* Update the post or do other thing */
    };

证明上面这段是可用的!
via:http://wordpress.stackexchange.com/questions/19732/prevent-duplicate-posts-in-wp-insert-post-using-custom-fields

$args = array(“meta_key” => “source_link”, “meta_value” =>$url);
$posts = get_posts($args);
if (count($posts) < 0){
//add new post
}

大概需要修改下

To save the link in the post meta you can use update_post_meta

like this for example:

$url = "http://sample.com/entertainment/default.aspx?tabid=2305&conid=102950"
$my_post = array(
'post_title' => "$title",
'post_content' => "$content",
'post_status' => 'draft',
'post_author' => 1,
'post_category' => array(1),
);
$post_id =  wp_insert_post( $my_post );
update_post_meta($post_id,'source_link',$url);

and to prevent the insertion add a simple conditional check:

$args = array("meta_key" => "source_link", "meta_value" =>$url);
$posts = get_posts($args);
if (count($posts) < 0){
//add new post
}