分享

WordPress SimpleTags的修改建议

 兰竹a 2015-08-31

 WordPress在2.3版本以前出过不少Tags插件,自从WordPress 2.3支持Tags后,这些第三方插件大多转换为管理和维护系统自带Tags的功能,其中比较出名的是SimpleTags插件,这个插件有中文语言包,使用起来比较方便。

  不过我在使用过程中,发现SimpleTags最新版本1.2.4的“批量编辑标签”有部分缺陷,我这里给出了两个缺陷的修改方法:

  1、 搜索功能(Search terms)存在问题:SimpleTags使用了全文的搜索,只要文章内容包含关键字就匹配,这会造成大量错误匹配,我将其修改为只匹配文章的标题。

  修改:simple-tags\inc\simple-tags.admin.php文件,找到1466行,将原来的

  $search_sql = "AND ( (post_title LIKE '%{$search}%') OR (post_content LIKE '%{$search}%') )";

  修改为:

  $search_sql = "AND ( (post_title LIKE '%{$search}%') OR (post_title LIKE '%{$search}%') )";

  2、无标签搜索(untagged only)存在问题:当文章数量非常大的时候,这个功能会出现错误,不返回正常的内容,我将原先代码中的SQL语句进行了修改,大大提高了搜索效率和速度。

  修改:simple-tags\inc\simple-tags.admin.php文件,找到1475行,将原来的

$p_id_used = $wpdb->get_col("
SELECT DISTINCT term_relationships.object_id
FROM {$wpdb->term_taxonomy} term_taxonomy, {$wpdb->term_relationships} term_relationships, {$wpdb->posts} posts
WHERE term_taxonomy.taxonomy = 'post_tag'
AND term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id
AND term_relationships.object_id  = posts.ID
AND posts.post_type = '{$type}'");

$filter_sql = 'AND ID NOT IN ("'.implode( '", "', $p_id_used ).'")';

  修改为:

$p_id_used = "SELECT DISTINCT term_relationships.object_id
FROM {$wpdb->term_taxonomy} term_taxonomy, {$wpdb->term_relationships} term_relationships, {$wpdb->posts} posts
WHERE term_taxonomy.taxonomy = 'post_tag'
AND term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id
AND term_relationships.object_id  = posts.ID
AND posts.post_type = '{$type}'";

$filter_sql = 'AND ID NOT IN ('.$p_id_used.')';

  经过这两处修改,SimpleTags的批量修改日志Tag的功能中就比较好用了。

wordpress simple tags标签自动链接无效的解决

随着wordpress自带了tag功能后,伴随了俺很久的Ultimate Tag Warrior 3也完成了他的历史使命,光荣退休了。
虽然有了这个功能,但是功能比较弱,后来发现了simple tags这个插件,功能强大的忒多了。批量管理、修改啥的都有了。今天说的是其中一个在日志内容中自动加入标签链接的功能,即:我这里已经有了一个“WordPress”标签,并且日志含有短语“WordPress”,该功能将把“WordPress”短语替换成“WordPress”的标签页链接(http://www./tag/wordpress/)。
这个功能我后台打开后,发现不能用。因为有原来前面修改Blog Mechanics Keyword Link的经验,所以就顺藤摸瓜,找到了
simple-tags/2.5/simple-tags.client.php文件,在大约第265行。将

$match = "/\b" . preg_quote($term_name, "/") . "\b/".$case;

换成

$match = "/" . preg_quote($term_name, "/") . "/".$case;

问题解决。原因一样。老外作的东西,没考虑中文,他们的word之间会有空格我们没有,所以,把\b去掉,即可。
但是会出现吧关键字“word”,遇到wordpress中的前4个字母也替换掉的情况。
莫非要区分中英文对待?那么就要用2个正则,而且可能中英文混合。那就麻烦大了。
先用着再说吧。:D

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多