存档

文章标签 ‘wordpress’

WordPress 单引号问题

2009年5月13日 没有评论

  在wordpress下发表的文章中如果有引号将被替换成全角引号,使得发表的文章变得不美观。特别是代码,在发表后代码中的引号全变成全角给代码的复制测试带来很大的不便。

通过搜索发现在阅读文章时会用到wp-includes/formatting.php的wptexturize()函数对文章中的引号格式化。
wptexturize()函数的注释如下:

/**
 * Replaces common plain text characters into formatted entities
 *
 * As an example,
 * 
 * 'cause today's effort makes it worth tomorrow's "holiday"...
 * 
 * Becomes:
 * 
 * ’cause today’s effort makes it worth tomorrow’s “holiday”… 
 * Code within certain html blocks are skipped.
 *
 * @since 0.71
 * @uses $wp_cockneyreplace Array of formatted entities for certain common phrases
 *
 * @param string $text The text to be formatted
 * @return string The string replaced with html entities
 */

这个函数会把单引号(‘),双引号(“),三个点(…)都转换成全角的‘,“,”,…。
解决办法:屏蔽掉该函数就行了。
一个简单的解决办法,屏蔽或删除掉wptexturize()函数中的所有内容,并添加一句return $text;
如果不想修改代码可以使用quotmarks-replacer插件.
这个插件也是通过屏蔽wptexturize()函数解决的。

分类: BLOG建设 标签:

支持IIS的cos-html-cache

2009年5月8日 6 条评论

  本篇文章将解决cos-html-cache在IIS下不能使用的问题,也是昨天发的文章的回答。
  通过分析cos-html-cache的代码后,发现主要问题是在IIS6.0下$_SERVER['REQUEST_URI']获取的URI是覆写前的,所以导致cos-html-cache在IIS6.0下不能使用。具体的分析可以看我昨天写的文章“cos-html-cache在IIS下不能使用的原因”。
  最初尝试从ISAPI Rewrite入手,但对这玩意儿不懂,没法只有从cos-html-cache的代码上想办法了。
  第一个思路是把获取的URI通过正则还原成覆写后的,再交给cos-html-cache插件的CreateHtmlFile处理,这样做实现上没问题,但太麻烦,判断是东西比较多。改动幅度可能也比较大。
  第二个思路,无意中发现的:),使用wordpress自带的get_permalink();函数(该函数位于wp-includes/link-template.php文件中),可以获得页面的URL地址。只要能在cos-html-cache中调用到这个函数就可以间接的获取到URI。好在wordpress在设计上的支持,可以在插件中调用wordpress自带函数。下面是获取理想中的URI的代码:

$url=get_permalink();//获取当前页面的地址
$url=preg_replace("'http:\/\/[^/]+([^# ]*)'",'$1',$url); //get /xx/xx/xx.xx

修改中还包括几个判断,具体的修改可以查看源文件(在文章末尾有下载地址);

另外在写ISAPI Rewrite规则时应该在转发规则前加上:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

上面的意思是判断请求的文件和目录是否存在,如果不存在那么将应用后面的规则。
一个简单的rewrite配置方案:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /html/(\d+)\.html /index.php?p=$1

修改后的插件下载地址:Download
目前在wordpress 2.7.1下测试通过(注:首页的生成上有一点问题,需要根据个人需要修改代码)。如果遇到问题请给我留言。

分类: BLOG建设 标签: , ,

cos-html-cache在IIS下不能使用的原因

2009年5月7日 2 条评论

  本站所在的服务器目前是WIN2003+IIS6.0,一直想做页面的静态化,尝试了wp-super-cache和cos-html-cache等静态化插件都不行。他们的说明文档中似乎都没有提到在IIS下的使用,通过搜索发现这些插件多是针对APACHE设计的。
  通过分析cos-html-cache的代码发现一个导致IIS下无法使用的重要原因:
在Version: 2.7.3中的第102行

if( substr_count($_SERVER['REQUEST_URI'], '.htm') || ( SCRIPT_URI == CosSiteHome) )

这里判断URL是否符合要求。问题就出在这里,在IIS下使用URLRewrite后$_SERVER['REQUEST_URI']获得的将是页面的动态地址。
如:
当URLRewrite配置成
RewriteRule /html/(.+)\.html /index.php?p=$1
那么在访问/html/123.html时实际上是访问的/index.php?p=123.
而在IIS下$_SERVER['REQUEST_URI']获得的URI是/index.php?p=123,显然不符合要求,后面的创建静态页面的代码也就不会执行了。
问题找到了,如果能想办法获得复写后的URL,那么就可以正常使用cos-html-cache插件实现静态化。如何获得呢??

分类: BLOG建设 标签: ,

wordpress动态sidebar的小问题

2009年5月3日 3 条评论

     今天和一网友交换友情链接,在后台添加链接后居然不显示。好在网友的提醒,原来需要开启一个小工具才行。在”外观->小工具->链接”添加就可以在sidebar中显示链接了。本站是用的inove主题,当启用小工具后原本默认的sidebar就被覆盖掉了。尝试在后台添加相应的小工具,但效果总是没有默认的好。

    翻看inove的源文件,在sidebar.php中找到了默认的信息如:

<!-- sidebar north START -->
<div id="northsidebar" class="sidebar">
 <!-- some code -->
< ?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('north_sidebar') ) : ?>
 <!-- some code -->
< ?php endif; ?>
<!-- sidebar north END -->
</div>

看代码可以知道当相应区域中没有动态sidebar时将采用主题自带的sidebar。顺手把判断去掉,刷新页面。满以为问题会解决。但在后台设置的sidebar却不显示了。
阅读全文…

分类: BLOG建设 标签:

关于wordpress文章修订记录

2009年5月2日 没有评论

  Wordpress 2.6 开始引入了文章修订历史功能,当你对文章进行编辑时会保存一些修改记录。对于个人BLOG而言大多数时候这些记录是无用的,当你有100篇文章,很可能你的修改记录会超过1000条。这些记录反而让数据库变得臃肿。

解决方案:
在wordpress根目录下的wp-config.php中添加一行define(‘WP_POST_REVISIONS’, false);取消文章修订历史功能。
使用下面的SQL语句删除已有的历史记录:

DELETE FROM wp_posts WHERE post_type=’revision’;

如果你想使用文章修订历史功能,但又不希望有过多的文章修改记录可以尝试使用delete-revision插件。该插件可以方便的删除修订记录!

分类: BLOG建设 标签: