superme 2008-10-2 18:21
WordPress SimpleTags的修改建议
<img src="http://www.williamlong.info/logo/wordpress.gif" alt="WordPress" class="thumb" /><p> WordPress在2.3版本以前出过不少Tags插件,自从WordPress 2.3支持Tags后,这些第三方插件大多转换为管理和维护系统自带Tags的功能,其中比较出名的是SimpleTags插件,这个插件有中文语言包,使用起来比较方便。</p><p> 不过我在使用过程中,发现SimpleTags最新版本1.2.4的“批量编辑标签”有部分缺陷,我这里给出了两个缺陷的修改方法:</p><p> <strong>1、 搜索功能(Search terms)存在问题</strong>:SimpleTags使用了全文的搜索,只要文章内容包含关键字就匹配,这会造成大量错误匹配,我将其修改为只匹配文章的标题。</p><p> 修改:simple-tags\inc\simple-tags.admin.php文件,找到1466行,将原来的</p><p> $search_sql = "AND ( (post_title LIKE '%{$search}%') OR (post_content LIKE '%{$search}%') )";</p><p> 修改为:</p><p> $search_sql = "AND ( (post_title LIKE '%{$search}%') OR (post_title LIKE '%{$search}%') )";</p><p> <strong>2、无标签搜索(untagged only)存在问题</strong>:当文章数量非常大的时候,这个功能会出现错误,不返回正常的内容,我将原先代码中的SQL语句进行了修改,大大提高了搜索效率和速度。</p><p> 修改:simple-tags\inc\simple-tags.admin.php文件,找到1475行,将原来的</p><p>$p_id_used = $wpdb->get_col("<br />SELECT DISTINCT term_relationships.object_id<br />FROM {$wpdb->term_taxonomy} term_taxonomy, {$wpdb->term_relationships} term_relationships, {$wpdb->posts} posts<br />WHERE term_taxonomy.taxonomy = 'post_tag'<br />AND term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id<br />AND term_relationships.object_id = posts.ID<br />AND posts.post_type = '{$type}'");</p><p>$filter_sql = 'AND ID NOT IN ("'.implode( '", "', $p_id_used ).'")';</p><p> 修改为:</p><p>$p_id_used = "SELECT DISTINCT term_relationships.object_id<br />FROM {$wpdb->term_taxonomy} term_taxonomy, {$wpdb->term_relationships} term_relationships, {$wpdb->posts} posts<br />WHERE term_taxonomy.taxonomy = 'post_tag'<br />AND term_taxonomy.term_taxonomy_id = term_relationships.term_taxonomy_id<br />AND term_relationships.object_id = posts.ID<br />AND posts.post_type = '{$type}'";</p><p>$filter_sql = 'AND ID NOT IN ('.$p_id_used.')';</p><p> 经过这两处修改,SimpleTags的批量修改日志Tag的功能中就比较好用了。</p>