Archive for the ‘wordpress’ category

wordpress如果不是安装在根目录,又要打开w3 total cache的htaccess写法

March 12th, 2012

换到godaddy空间,主域名是www.trackself.com,但又不想在根目录有太多文件夹
于是想将所有的wordpress文件放在一个子文件夹里.例如/trackself/
同时需要w3 total cache的rewrite rule也能执行
即我的域名是www.trackself.com,其实际指向是/ ,但源文件即是在”/trackself/”中的
1.在根目录下的.htaccess ,即/.htaccess
# Don't show directory listings for URLs which map to a directory.
Options -Indexes
# Follow symbolic links in this directory.
Options +FollowSymLinks
# Make Drupal handle any 404 errors.
ErrorDocument 404 index.php
# Force simple error message for requests for non-existent favicon.i
# Set the default handler.
DirectoryIndex index.php
# BEGIN W3TC Cache
.......(将w3tc的内容放这里)
# END W3TC Cache
# BEGIN WordPress

(注意了,这里与原wordpress不一样)
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?trackself.com$ [NC]
RewriteRule ^(.*)$ /trackself/$1 [L,QSA]

# END WordPress

2.在/trackself/.htacccess
放与wordpress一模一样的.htaccess即可,即经典wordpress跳转
# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?trackself.com$ [NC]
RewriteRule ^(.*)$ /trackself/$1 [L,QSA]

# END WordPress

总的来说,godaddy 4g空间,速度是bluehost的6倍以上,我很满意,继续godaddy 4g空间测试

Share

wordpress的数据同步导入校内等,wordpress anywhere:wp_query,$wpdb->get_results

August 28th, 2010
最近有个小项目是要将wordpress的数据同步导入到drupal和同步到校内的
虽然用了wordpress很久,但说实话,从来没看过它的代码,以前都是用drupal的
不过所谓一理通百理明,我下面的方法就是用类似drupal anywhere的思维去做的
1.drupal anywhere第一步就是复制index.php,wordpress也一样,不过我们不需要wordpress的theme了
所以就有了define(‘WP_USE_THEMES’, false);
2.找能读取文章的代码,GOOGLE一下关键词“wordpress query page”,马上就出来wp_query这个东西了(性能不知如何,但看样子已经能满足我的项目需求了),用法超简单。
首先是构建query,然后汉
<?php
ini_set(‘max_execution_time’,’300′);
chdir(‘/home2/crawgirl/public_html/trackself’);//修改博客的路径
define(‘WP_USE_THEMES’, false);
require(‘./wp-blog-header.php’);
$query=array(
“category_name”=>”diary”,
“paged”=>2,
“posts_per_page”=>5,
);
$queryObject = new WP_Query($query);
while($queryObject->have_posts()){
print “breaker\n<br/>”;
$queryObject->the_post();
print_r($post);
}
$queryObject=NULL;
?>

上面的参数还可以随便改,还有N多参数我用不着的

值得一提的是,wordpress2.9下,order是无效的

另外,上面的代码毕竟还是不是很自由,要熟悉wordpress的格式,毕竟我对wordpress不是很感冒,不想太深入了。

下面一个问题就是,我怎么只打开单一的一篇文章或者查询数据库呢:

于是根据学drupal的经验,wordpress应该也会有一个查询数据库的函数

关键词:wordpress sql api,结果马上就出来了,跟drupal没太大差别:

代码如下

$result = $wpdb->get_results(“SELECT ID,post_title,post_content FROM

$wpdb->posts ORDER BY ID ASC LIMIT 0 , 2″);

foreach($result as $row){

print_r($row);

}

有了上面的两段代码,wordpress导入导出,压根一点难度都没了

对于wordpress来说,我不想学太多

下面就是想怎么样同步了,即我在wordpress这边一发表,我的校内就能同步更新

这在drupal下的话要hook_node,那wordpress有没有hook的机制了,GOOGLE 一下,drupal下文章叫node但wordpress却叫post,估计是叫hook post wordpress吧,果然一查就出来了:

http://www.smashingmagazine.com/2009/08/18/10-useful-wordpress-hook-hacks/

按这篇文章

只需要在模版的functions.php最后增加:

add_action ( 'publish_post', 'myCustomFunction' );这样就行了

OK,余下的问题就是了解这个publish_post了,我只需要发表一次就行了

最好的办法自然是能增加一个字段标记了,不想用代码实现了,直接用phpmyadmin在post表后增加一叫post_myrenren的字段:

然后就写这个mycustonfunction了

具体的逻辑就是上篇文章中的用CURL同步到wordpress了

搞了三个小时的调试,终于搞定了。

我有个体会,学会drupal后,wordpress真是小菜一碟……不知下次的项目如果跟discuz有关的话,会发生什么事呢,有意思……

Share

最好的wordpress缓存插件:w3 total cache

April 27th, 2010

最近我的bluehost空间经常出现CPU问题,无奈,得考虑用插件了,我这人比较懒,不到必须的时候,我是不会去找解决办法的,但当我认真去找的时候,我必定是想进办法找最好的,特别是性能方面的优化。

1.为什么要找最好的而不找多个结合?WORDPRESS只支持使用单一的CACHE,所以你必须找最好的。

2.先别想插件,你认为最理想的cache应该是什么? 我认为:首先得给匿名用户生成静态页面,然后当此用户发表评论的时候能自动清空该页的静态能重新生成(只是该页),然后其它页面的静态不会影响,仍然是静态的,且静态文件支持gzip或者deflate. 最后就是能给登陆用户做数据库级别的cache . 最后就是不用浪费我时间去修改太多代码就能用.

3.w3 total cache 就是这么好的东西了,装吧,文档详细,功能强大,无敌了.wordpress 遇到性能问题时必装啊

» Read more: 最好的wordpress缓存插件:w3 total cache

Share

.htaccess: performance性能优化,加速网站

April 27th, 2010

最近我的bluehost空间遇到CPU限制了,经常出现throttling,没办法,得做优化提高性能了

记住以上原则:如果不是遇到性能问题,不要浪费时间做优化,一般的优化是有代价的,但使用apache的优化的代价则是非常轻微的,以至于我只发现优点。

在你的站点的.htaccess文件顶增加下面的几行,最好是在最后加吧,不过我实验过,在顶部和底部加没什么区别的。

#下面这一段是告诉浏览器,如果遇到同样的图片或者flash或者html文件,则不要再请求了,取回你本地的缓存吧,别浪费我的服务器资源(so, why not add this line?),事实上如果你可以修改httpd.conf(就是apache的配置文件权)的话,那么直接将这句加在此文件里更好,性能更优(理论上),只是可能相差不大。

<FilesMatch “\.(ico|jpg|jpeg|png|gif|js|css|swf|html|htm|gzip)$”>
ExpiresActive on
ExpiresDefault “access plus 2 hours”
Header set Cache-Control “max-age=1800, public”
FileETag none
</FilesMatch>

#将HTML压缩发送至浏览器(是每次都压缩吗?是的。这样会影响性能吗?会,但速度快了很多。但有一种情况不会,lighthttpd这个服务器的mod_deflate是有cache的,apache没有,很遗憾,如果apache打开了mod_cache的话,那么这个功能就非常好了。但其实增加了速度也是有好处的,速度快了,连接时间就短了,CPU就下降了,所以这个配置不一定适合全部人,要看情况)

#我喜欢我的站一点连接就“闪现”内容的感觉,所以即便浪费些CPU,何况这个浪费简单可以忽略,我喜欢用
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml
AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf
AddOutputFilterByType DEFLATE font/truetype font/opentype
</IfModule>

Share