<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Allen Day's Blog &#187; WordPress</title>
	<atom:link href="http://www.spicylogic.com/allenday/blog/category/computing/software/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spicylogic.com/allenday/blog</link>
	<description>♥data♥</description>
	<lastBuildDate>Mon, 21 Jun 2010 23:28:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WordPress &#8211; collapse redundant tags</title>
		<link>http://www.spicylogic.com/allenday/blog/2008/10/19/wordpress-collapse-redundant-tags/</link>
		<comments>http://www.spicylogic.com/allenday/blog/2008/10/19/wordpress-collapse-redundant-tags/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 08:27:10 +0000</pubDate>
		<dc:creator>allenday</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.spicylogic.com/allenday/blog/?p=75</guid>
		<description><![CDATA[I&#8217;ve been experimenting with automation of WordPress posts.  Probably I&#8217;m doing something wrong with the way I make the XML RPC calls, but I find that I end up with redundant tags in my database.  For instance, if I tagged two separate, RPC-posted posts with &#8220;orange&#8221;, I get two different tags both called [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been experimenting with automation of WordPress posts.  Probably I&#8217;m doing something wrong with the way I make the XML RPC calls, but I find that I end up with redundant tags in my database.  For instance, if I tagged two separate, RPC-posted posts with &#8220;orange&#8221;, I get two different tags both called &#8220;orange&#8221;.  Until I figure out how to fix this properly, here&#8217;s a little script that will clean up the database by consolidating all redundantly named tags to one tag.  You might want to back up your database before using this&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="perl"><span style="color: #808080; font-style: italic;">#!/usr/bin/perl</span>
<span style="color: #000000; font-weight: bold;">use</span> strict;
<span style="color: #000000; font-weight: bold;">use</span> DBI;
&nbsp;
<span style="color: #808080; font-style: italic;">######configuration</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$PREFIX</span> = <span style="color: #ff0000;">'wp_h5otpn_'</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$DB</span> = <span style="color: #ff0000;">''</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$HOST</span> = <span style="color: #ff0000;">''</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$USER</span> = <span style="color: #ff0000;">''</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$PASS</span> = <span style="color: #ff0000;">''</span>;
<span style="color: #808080; font-style: italic;">######</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dbh</span> = DBI-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">connect</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">qq</span><span style="color: #66cc66;">&#40;</span>dbi:mysql:database=<span style="color: #0000ff;">$DB</span>;host=<span style="color: #0000ff;">$HOST</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #0000ff;">$USER</span>, <span style="color: #0000ff;">$PASS</span><span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> $<span style="color: #66cc66;">!</span>;
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$term_sth</span>   = <span style="color: #0000ff;">$dbh</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">qq</span><span style="color: #66cc66;">&#40;</span>SELECT <span style="color: #66cc66;">*</span> FROM <span style="color: #66cc66;">&#40;</span>SELECT name, count<span style="color: #66cc66;">&#40;</span>name<span style="color: #66cc66;">&#41;</span> AS c FROM $<span style="color: #66cc66;">&#123;</span>PREFIX<span style="color: #66cc66;">&#125;</span>terms GROUP BY name<span style="color: #66cc66;">&#41;</span> AS d WHERE d.c <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$name_sth</span>   = <span style="color: #0000ff;">$dbh</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">qq</span><span style="color: #66cc66;">&#40;</span>SELECT term_id FROM $<span style="color: #66cc66;">&#123;</span>PREFIX<span style="color: #66cc66;">&#125;</span>terms WHERE name = ?<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$update_sth</span> = <span style="color: #0000ff;">$dbh</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">qq</span><span style="color: #66cc66;">&#40;</span>UPDATE $<span style="color: #66cc66;">&#123;</span>PREFIX<span style="color: #66cc66;">&#125;</span>term_relationships SET term_taxonomy_id = <span style="color: #66cc66;">&#40;</span>SELECT term_taxonomy_id FROM $<span style="color: #66cc66;">&#123;</span>PREFIX<span style="color: #66cc66;">&#125;</span>term_taxonomy WHERE term_id = ?<span style="color: #66cc66;">&#41;</span> WHERE term_taxonomy_id = <span style="color: #66cc66;">&#40;</span>SELECT term_taxonomy_id FROM $<span style="color: #66cc66;">&#123;</span>PREFIX<span style="color: #66cc66;">&#125;</span>term_taxonomy WHERE term_id = ?<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$delete1_sth</span> = <span style="color: #0000ff;">$dbh</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">qq</span><span style="color: #66cc66;">&#40;</span>DELETE FROM $<span style="color: #66cc66;">&#123;</span>PREFIX<span style="color: #66cc66;">&#125;</span>term_taxonomy WHERE term_id = ?<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$delete2_sth</span> = <span style="color: #0000ff;">$dbh</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">prepare</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066;">qq</span><span style="color: #66cc66;">&#40;</span>DELETE FROM $<span style="color: #66cc66;">&#123;</span>PREFIX<span style="color: #66cc66;">&#125;</span>terms WHERE term_id = ?<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #0000ff;">$term_sth</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #b1b100;">my</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$name</span>, <span style="color: #0000ff;">$count</span> <span style="color: #66cc66;">&#41;</span> = <span style="color: #0000ff;">$term_sth</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">fetchrow_array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #0000ff;">$name_sth</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$name</span> <span style="color: #66cc66;">&#41;</span>;
  <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$new</span> = <span style="color: #000066;">undef</span>;
  <span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #b1b100;">my</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$term_id</span> <span style="color: #66cc66;">&#41;</span> = <span style="color: #0000ff;">$name_sth</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">fetchrow_array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">!</span> <span style="color: #0000ff;">$new</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
      <span style="color: #0000ff;">$new</span> = <span style="color: #0000ff;">$term_id</span>;
      <span style="color: #b1b100;">next</span>;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #000066;">warn</span> <span style="color: #ff0000;">&quot;$name<span style="color: #000099; font-weight: bold;">\t</span>$term_id<span style="color: #000099; font-weight: bold;">\t</span>-&gt;<span style="color: #000099; font-weight: bold;">\t</span>$new&quot;</span>;
    <span style="color: #0000ff;">$update_sth</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$new</span>, <span style="color: #0000ff;">$term_id</span> <span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$delete1_sth</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$term_id</span> <span style="color: #66cc66;">&#41;</span>;
    <span style="color: #0000ff;">$delete2_sth</span>-<span style="color: #66cc66;">&gt;</span><span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0000ff;">$term_id</span> <span style="color: #66cc66;">&#41;</span>;
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">__DATA__</span>
SELECT t.term_id, t.name, r.<span style="color: #66cc66;">*</span>, <span style="color: #000066;">s</span>.<span style="color: #66cc66;">*</span> FROM wp_h5otpn_terms AS t, wp_h5otpn_term_taxonomy AS r, wp_h5otpn_term_relationships AS <span style="color: #000066;">s</span> WHERE <span style="color: #000066;">s</span>.term_taxonomy_id = r.term_taxonomy_id AND r.term_id = t.term_id AND r.taxonomy = <span style="color: #ff0000;">'post_tag'</span> AND t.name = <span style="color: #ff0000;">'whatever'</span>;</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.spicylogic.com/allenday/blog/2008/10/19/wordpress-collapse-redundant-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
