<?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>HighEdWebTech &#187; PHP</title>
	<atom:link href="http://highedwebtech.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://highedwebtech.com</link>
	<description>Higher Ed Web Development</description>
	<lastBuildDate>Sat, 12 May 2012 17:53:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Caching Expensive Queries in WordPress</title>
		<link>http://highedwebtech.com/2012/03/26/caching-expensive-queries-in-wordpress/</link>
		<comments>http://highedwebtech.com/2012/03/26/caching-expensive-queries-in-wordpress/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 13:45:46 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[WordPress APC Caching]]></category>
		<category><![CDATA[wordpress caching]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=2055</guid>
		<description><![CDATA[You can make WordPress faster by using PHP and APC to do caching to make your pages load faster for your site visitors. ]]></description>
			<content:encoded><![CDATA[<p>I love WordPress. One thing to know about it, though, is that it queries MySQL for a lot of data. This is fine for most single sites, but at our institution we&#8217;re running a very large multisite install and every query or call I can reduce means I can generate pages faster. Faster is always better, and even though we&#8217;re doing WordPress caching with the <a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP Super Cache</a> plugin, there&#8217;s always opportunities to improve the speed.</p>
<p>One way is help WordPress (which is built on PHP) and MySQL by caching some expensive queries, that is, queries that return large result sets or you join lots of tables together on certain values. In our case, we&#8217;ve installed <a href="http://php.net/manual/en/book.apc.php">APC</a> on our dedicated server and are trying it out as a user and opcode cache for some WordPress data to help speed things up. Here&#8217;s some ways you can do the same:</p>
<p>On one of our page templates, we query WordPress for a custom post type, in our case a calendar of events. Since some of our sites have many events, this query can take a bit of time to execute. We can help out by storing the result of the MySQL in memory and calling that as needed.  Here&#8217;s some code:</p>
<pre class="brush: php; title: ; notranslate">
$cachequery = &quot;bb_&quot;.$blog-&gt;ID;
$cacheexpire = 1800;

if($mypost = apc_fetch($cachequery)){
 echo &quot;&lt;!-- cached query --&gt;&quot;;
}else{
 $mypost = query_posts($args);
 apc_store($cachequery,$mypost,$cacheexpire);
 echo &quot;&lt;!-- caching this --&gt;&quot;;
}
</pre>
<p>The first we do is declare a variable, <code>$cachequery</code>, which is specificially generated per site, using the blog&#8217;s ID and a prefix depending on what template and query we&#8217;re using. In our case, the bb_ stands for big button, a template that looks like <a href="http://sites.jcu.edu/alumni/">this</a>.</p>
<p>At this point we also define how long we want this data to be cached. In this case, I say 1800 seconds, which is 30 minutes. This could probably be longer, such as 3600 seconds, but I&#8217;m working to find a sweet spot of speed and making sure the user is always seeing good data.</p>
<p><a href="http://media.highedwebtech.com/wp-content/uploads/2012/03/Screen-Shot-2012-03-25-at-6.37.55-PM.png"><img class="alignright size-thumbnail wp-image-2062" title="Screen Shot 2012-03-25 at 6.37.55 PM" src="http://media.highedwebtech.com/wp-content/uploads/2012/03/Screen-Shot-2012-03-25-at-6.37.55-PM-150x150.png" alt="" width="150" height="150" /></a>On line 4, you&#8217;ll see that we need to do is see if APC and PHP are currently storing any data for our variable. If there is good data, it is stored in the <code>$mypost</code> variable, and we echo a response, which is optional.</p>
<p>If PHP doesn&#8217;t a result from APC, the data hasn&#8217;t been cached yet. So we run the query, store it in the <code>$mypost</code> variable, and write the value to the APC store. Also, if the data is older than 1800 seconds, APC will return an invalid response and the query will be run fresh. This happens because we set the expiration time in the <code>apc_store</code> function.</p>
<p>APC has a nice PHP page you can install that will give you a report of how APC is doing and what data is being cached. It makes some nice graphs, but also allows you to explore the user-generated data, such as what we cached above. Let&#8217;s look at one of our stored variables and what APC is actually caching.</p>
<p><a href="http://media.highedwebtech.com/wp-content/uploads/2012/03/Screen-Shot-2012-03-25-at-6.38.40-PM.png"><img class="aligncenter size-full wp-image-2066" title="Screen Shot 2012-03-25 at 6.38.40 PM" src="http://media.highedwebtech.com/wp-content/uploads/2012/03/Screen-Shot-2012-03-25-at-6.38.40-PM.png" alt="" width="600" /></a></p>
<p>If we view the detail for an entry, we can see what&#8217;s being stored, in this case the array that WordPress returns when we use the <code>get_posts</code> or <code>query_posts</code> functions.</p>
<p><a href="http://media.highedwebtech.com/wp-content/uploads/2012/03/Screen-Shot-2012-03-25-at-6.53.48-PM.png"><img class="aligncenter size-medium wp-image-2069" title="Screen Shot 2012-03-25 at 6.53.48 PM" src="http://media.highedwebtech.com/wp-content/uploads/2012/03/Screen-Shot-2012-03-25-at-6.53.48-PM-300x252.png" alt="" width="300" height="252" /></a></p>
<p>I&#8217;ve been keeping an eye on WordPress and the APC status for a few days now, and all seems well. I think this is also something I&#8217;d look into when building a non-WordPress PHP application as well. Faster is always better.</p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2012/03/26/caching-expensive-queries-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress: Giving Editors Access to Gravity Forms</title>
		<link>http://highedwebtech.com/2011/12/16/wordpress-giving-editors-access-to-gravity-forms/</link>
		<comments>http://highedwebtech.com/2011/12/16/wordpress-giving-editors-access-to-gravity-forms/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 22:24:13 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[add_cap]]></category>
		<category><![CDATA[get_role]]></category>
		<category><![CDATA[gravity forms]]></category>
		<category><![CDATA[wordpress forms]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=1907</guid>
		<description><![CDATA[We&#8217;ve been testing Gravity Forms here as part of our WordPress CMS, allowing users easy access to be able to make forms and manage them right inside WordPress. So far, our tests have been positive, and we&#8217;re set to open &#8230; <a href="http://highedwebtech.com/2011/12/16/wordpress-giving-editors-access-to-gravity-forms/">Continued</a>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px;"><a href="https://www.e-junkie.com/ecom/gb.php?cl=54585&#038;c=ib&#038;aff=177044" title="Gravity Forms Contact Form Plugin for WordPress"><img src="http://gravityforms.s3.amazonaws.com/banners/125x125_2.gif" alt="Gravity Forms Plugin for WordPress" width="125" height="125" style="border:none;" /></a></div>
<p>We&#8217;ve been testing <a href="https://www.e-junkie.com/ecom/gb.php?cl=54585&#038;c=ib&#038;aff=177044" target="_blank">Gravity Forms</a> here as part of our WordPress CMS, allowing users easy access to be able to make forms and manage them right inside WordPress. So far, our tests have been positive, and we&#8217;re set to open it up to all our users.</p>
<p>We&#8217;ve run into a challenge though as we get ready to roll this out. When set up and turned on in one of our sites (we run multi-site), only administrative users could access and see Gravity Forms. </p>
<p>We set up our campus users as editors, so they can&#8217;t go and switch themes and install rogue plugins. Even though the plugin was installed, editors couldn&#8217;t see Gravity Forms. They could see all our other functions and custom post types, but not Gravity Forms. </p>
<p>I wrote to their support, who suggested I use yet another plugin. That&#8217;s fine if I was just running one site, but at 140 sites and growing, I can&#8217;t be spending all day in that plugin turning things on and off. I figured there&#8217;d have to be a way to give the editor role access. </p>
<p>Enter some code. It&#8217;s one of the things that I really love about WordPress. With a bit of good code, you can do a lot of different things. </p>
<p>I added the following to my functions.php file, making Gravity Forms see that the user role of editor had the correct privileges and could run it. After some trial and error, I found the following snippet of code worked for an editor:</p>
<pre class="brush: plain; title: ; notranslate">
	function add_grav_forms(){
		$role = get_role('editor');
		$role-&gt;add_cap('gform_full_access');
	}
	add_action('admin_init','add_grav_forms');
</pre>
<p>So far, so good. I can make new forms, see entries and more as an editor, and I think I won&#8217;t have to manage this with a plugin, which is good to avoid that overhead where possible. Here&#8217;s what an editor sees now. The other things (taters, tots, etc) are custom post types we&#8217;ve developed. </p>
<p><a href="http://media.highedwebtech.com/wp-content/uploads/2011/12/Screen-shot-2011-12-16-at-5.13.45-PM.png"><img src="http://media.highedwebtech.com/wp-content/uploads/2011/12/Screen-shot-2011-12-16-at-5.13.45-PM.png" alt="" title="Screen shot 2011-12-16 at 5.13.45 PM" width="162" height="275" class="alignleft size-full wp-image-1910" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2011/12/16/wordpress-giving-editors-access-to-gravity-forms/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I fed WordPress too much and it got a bellyache</title>
		<link>http://highedwebtech.com/2011/11/03/i-fed-wordpress-too-much-and-it-got-a-bellyache/</link>
		<comments>http://highedwebtech.com/2011/11/03/i-fed-wordpress-too-much-and-it-got-a-bellyache/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 14:15:18 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=1834</guid>
		<description><![CDATA[I fed WordPress too much and it got a bellyache]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://soundnet.cs.princeton.edu/OMLA/study/AphasiaFox/dict/medicine/abdominal-pain1.jpg" title="Upset tummy" class="alignright" width="104" height="125" style="padding:20px;" />I fed WordPress too much and it got a belly ache.</p>
<p>Each year, we do a &#8220;donor honor roll,&#8221; or a listing of all the people who gave money to my University in the past year. We&#8217;ve transitioned it from a print publication, sometimes inserted as part of our alumni magazine, to a stand-alone web-based site.</p>
<p>Basically, it&#8217;s a ton of text broken into pages based on giving levels. Some of the pages are rather short &#8211; like those that gave over $50,000. The longest list, unsurprisingly, was our list of people who gave under $1,000. It was near 30,000 words long &#8211; which is a LOT of text in one WordPress page.</p>
<p>As a donor to this University (and in the under $1k group), I was able to find myself using WordPress&#8217;s built-in search tool. When I went to the full list page, it was blank. Well, our header, sidebars and footer was there, but the actual page content, the stuff being pulled by the <code>the_content()</code> tag, was missing.</p>
<p>It was in the database, but WordPress wasn&#8217;t actually displaying it on the page. At all. </p>
<p>After some poking, I discovered that it was too much data for PHP to do any functions/plugin actions on it before it was displayed. I didn&#8217;t really want to break it into multiple pages, so I Googled around and found other people having similar problems with very long pages and posts.</p>
<p>The solution: change some PHP settings to up certain buffer sizes. The lines I used were this:</p>
<pre class="brush: php; title: ; notranslate">
/** Trick for long posts */
ini_set('pcre.recursion_limit',20000000);
ini_set('pcre.backtrack_limit',10000000);
</pre>
<p>Those two lines, placed in either your php.ini file or your wp-config.php file, give PHP a bit more space and power to process large amounts of text and make sure there&#8217;s enough room to do all the processing on a post that WordPress has to do. </p>
<p>We host our sites on a dedicated machine, so I&#8217;m not sure what, if any, effect this will have on WordPress sites hosted on a shared server. Otherwise, I&#8217;d recommend breaking them into multiple pages or posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2011/11/03/i-fed-wordpress-too-much-and-it-got-a-bellyache/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tracking Specific Actions in WordPress &amp; Google Analytics</title>
		<link>http://highedwebtech.com/2011/09/21/tracking-specific-actions-in-wordpress-google-analytics/</link>
		<comments>http://highedwebtech.com/2011/09/21/tracking-specific-actions-in-wordpress-google-analytics/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 14:14:56 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Analytics]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[event tracking wordpress]]></category>
		<category><![CDATA[event tracking wp]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[google analytics event tracking]]></category>
		<category><![CDATA[google analytics events tracking]]></category>
		<category><![CDATA[wordpress google analytics]]></category>
		<category><![CDATA[wp ga event tracking]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=1770</guid>
		<description><![CDATA[As part of our rollout of WordPress as our CMS, we&#8217;ve given our users several custom post types, allowing them to create and manage assets such as rotating display banners and graphical link buttons. We want to be able to &#8230; <a href="http://highedwebtech.com/2011/09/21/tracking-specific-actions-in-wordpress-google-analytics/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p>As part of our rollout of WordPress as our CMS, we&#8217;ve given our users several custom post types, allowing them to create and manage assets such as rotating display banners and graphical link buttons. We want to be able to easily track actions on these banners and buttons, and want to be able to see that information easily in Google Analytics.</p>
<p>One of the new features in the newer versions of Google Analytics (GA) is the ability to track <a href="http://code.google.com/apis/analytics/docs/tracking/eventTrackerGuide.html">event actions</a> on a link. This can be not only clicks, in our case, on a button, link or graphic, but you can setup javascript triggers when a user starts, stops or pauses a video, for example.</p>
<p>Setting this up is pretty straightforward. First, you&#8217;ll need to add a quick snippet to your GA embed code, if you aren&#8217;t already. It&#8217;s the <code>trackPageview</code> function. You&#8217;ll add it under the line in your GA code where you&#8217;re account code is. For example:</p>
<pre class="brush: jscript; highlight: [4]; title: ; wrap-lines: false; notranslate">&lt;script type=&quot;text/javascript&quot;&gt;

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

&lt;/script&gt;</pre>
<p>That will allow you to start tracking events on your pages. To add the event tracking action to a specific element on your page, you add a line of code that looks like this to your <code>a</code> tags. </p>
<pre class="brush: jscript; title: ; notranslate">onClick=&quot;_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);&quot;</pre>
<p>There are three fields there to pay attention to. The first is the category field. In the above example, it&#8217;s <code>Videos</code>. You can have multiple categories on a certain page. On our WordPress sites, we&#8217;re specifically tracking banners and small image buttons, often on the same page. </p>
<p>The second field is the action variable &#8211; which in the example above is <code>Play</code>.  For our WordPress pages, we use the term <code>Click</code>. Through javascript and PHP variables, you can make your actions very specific, such as:</p>
<pre class="brush: jscript; title: ; notranslate">
_gaq.push(['_trackEvent', 'Videos', 'Play - Mac Chrome');
_gaq.push(['_trackEvent', 'Videos', 'Play - Windows Chrome');
</pre>
<p>And finally, the label. Above, it's <code>Baby's First Birthday</code>. For our uses, we tailor this to the specific banner or button getting clicked. After a few days, we realized it would also be good to know what site the visitor was on. As with the other fields, this should be tailored to the specific content being clicked on. In the video example, you'd have something like this for different videos being played:</p>
<pre class="brush: jscript; title: ; notranslate">
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Huckleberry Finn']);
</pre>
<p>To our user, our links look like this:</p>
<pre class="brush: xml; auto-links: true; html-script: false; light: false; pad-line-numbers: false; smart-tabs: true; tab-size: 4; title: ; toolbar: false; notranslate">
&lt;a href=&quot;http://sites.jcu.edu/newsroom/?p=1697&quot; onClick=&quot;_gaq.push(['_trackEvent', 'Taters', 'Click', 'Princeton Review Best in the Midwest (Site: JCU Newsroom ID: 1694)']);&quot;&gt;
&lt;img src=&quot;http://webmedia.jcu.edu/newsroom/files/2011/08/princeton_review-700x230.jpg&quot; alt=&quot;Princeton Review Best in the Midwest&quot; /&gt;
&lt;/a&gt;
</pre>
<p>In our WordPress templates, it looks like this:</p>
<pre class="brush: php; auto-links: true; html-script: false; light: false; pad-line-numbers: false; smart-tabs: true; tab-size: 4; title: ; toolbar: false; notranslate">
&lt;a href=&quot;&lt;?php echo $url; ?&gt;&quot; onClick=&quot;_gaq.push(['_trackEvent', 'Taters', 'Click', '&lt;?php echo get_the_title($ID).&quot; (Site: &quot;.get_bloginfo('name').&quot; ID: &quot;.$id.&quot;)&quot;; ?&gt;']);&quot;&gt;
&lt;img src=&quot;&lt;?php echo $img[0]; ?&gt;&quot; alt=&quot;&lt;?php echo get_the_title($ID); ?&gt;&quot; /&gt;
&lt;/a&gt;
</pre>
<p>We are tracking the individual banner that was clicked on, as well as the site the banner appears on. We add an additional field for our own, the actual ID of the banner asset. We do that just in case we need to find one quickly, or two banners get named the same thing. It&#8217;s happened. </p>
<p>That gives us a very nice report in GA that looks like this:</p>
<p><a href="http://media.highedwebtech.com/wp-content/uploads/2011/09/Screen-shot-2011-09-06-at-12.03.54-PM.png"><img src="http://media.highedwebtech.com/wp-content/uploads/2011/09/Screen-shot-2011-09-06-at-12.03.54-PM.png" alt="" title="Screen shot 2011-09-06 at 12.03.54 PM" width="580" class="aligncenter size-full wp-image-1811" /></a></p>
<p>We can very easily filter by a specific site to see what buttons and graphics are getting clicked on. You could also add this to any static link as well, but I&#8217;m specifically interested on what specific calls to action are getting noticed by our users. </p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2011/09/21/tracking-specific-actions-in-wordpress-google-analytics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Improving the WordPress Editor Experience for Users</title>
		<link>http://highedwebtech.com/2011/08/12/improving-the-wordpress-editor-experience-for-users/</link>
		<comments>http://highedwebtech.com/2011/08/12/improving-the-wordpress-editor-experience-for-users/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 16:26:22 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[add_editor_style();]]></category>
		<category><![CDATA[editor-style.css]]></category>
		<category><![CDATA[Visual Editor CSS]]></category>
		<category><![CDATA[WordPress Editor CSS]]></category>
		<category><![CDATA[WordPress Visual Editor]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=1741</guid>
		<description><![CDATA[Here's how to style your WordPress visual editor.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re well over 100 sites into our WordPress Content Management rollout here at <a href="http://www.jcu.edu">John Carroll University</a>, and it&#8217;s been going swimmingly.</p>
<p>One of the reasons we selected WordPress was its Word-like interface for working with copy. For our users who had been using Dreamweaver for years, they&#8217;ve found it to be an easy transition.</p>
<p>The feedback we were getting is that what they were typing in the visual editor in WordPress wasn&#8217;t what they were seeing once when they previewed or saved their pages. They wanted to see actual line spacing, bulleted lists, blockquotes and more look more like what they&#8217;ll be like once they are published.</p>
<p>For our users, we want them to not see this:</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" src="http://highedwebtech.com/wp-content/uploads/2011/08/Screen-shot-2011-08-12-at-12.19.39-PM.png" alt="Screen shot 2011 08 12 at 12 19 39 PM" width="575" height="308" border="0" /></p>
<p>But see this:</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" src="http://webmedia.jcu.edu.s3.amazonaws.com/webupdates/files/2011/06/Screen%2Bshot%2B2011-05-31%2Bat%2B3.37.27%2BPM.png" alt="WP Editor Fancy" width="575" /></p>
<p>Luckily for us, it&#8217;s pretty easy to do this in WordPress. Here&#8217;s how:</p>
<p>Create a file in your theme&#8217;s main directory called <code>editor-style.css</code>. This is where you will style the HTML elements such as p, a, ul and so on for viewing in the editor. We made sure it matched up with our site&#8217;s CSS. Here are a few lines from it:</p>
<pre class="brush: plain; title: ; notranslate">
body, input, textarea, p{
  font-size: 14px;
  line-height: 24px;
 font-family: Helvetica, Arial, sans-serif;
  }

a{
	color: #003969;
  font-weight: bold;
  text-decoration: none;
}

blockquote{
	border: 4px solid #ebefef;
  border-width: 4px 0;
  margin: 0 0 32px -20px;
  font-family: 'MuseoSlab500', Georgia, &quot;Times New Roman&quot;, Times, serif;
  padding: 8px 20px 0 40px;
}

blockquote p{
	margin-bottom: 8px;
	font-family: 'MuseoSlab500', Georgia, &quot;Times New Roman&quot;, Times, serif;
}
</pre>
<p>Once that&#8217;s saved in your theme&#8217;s directory, open your <code>functions.php</code> file. You&#8217;ll need to insert this line somewhere in there:</p>
<pre class="brush: plain; title: ; notranslate">add_editor_style();</pre>
<p>Reload your editor and text put in the editor or using TinyMCE&#8217;s buttons should be styled correctly. Depending on your site&#8217;s CSS, you can add additional tags if you are styling them a certain way, such as hr or img.</p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2011/08/12/improving-the-wordpress-editor-experience-for-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Never Store Your Passwords in Clear Text</title>
		<link>http://highedwebtech.com/2009/11/27/never-store-your-passwords-in-clear-text/</link>
		<comments>http://highedwebtech.com/2009/11/27/never-store-your-passwords-in-clear-text/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 16:10:24 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=943</guid>
		<description><![CDATA[In 2008, I blogged about how to work with passwords with any web app you may build. It&#8217;s been one of the more popular posts on this site, and the lessons learned in that have never been more relevant during &#8230; <a href="http://highedwebtech.com/2009/11/27/never-store-your-passwords-in-clear-text/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.highedwebtech.com/wp-content/uploads/2009/11/Thick-Type-Brass-Padlock-150x150.jpg" alt="Thick-Type-Brass-Padlock" title="Thick-Type-Brass-Padlock" width="150" height="150" class="alignright size-thumbnail wp-image-945" />In 2008, I blogged about <a href="http://highedwebtech.com/2008/04/25/season-your-passwords-with-some-salt/">how to work with passwords</a> with any web app you may build. It&#8217;s been one of the more popular posts on this site, and the lessons learned in that have never been more relevant during the course of the last few days.</p>
<p>Let&#8217;s flash back and get a bit of a primer on passwords and password storage:</p>
<blockquote><p>&#8220;&#8230;when storing passwords for your app, you have a many options. You could skip all security and store your users’ passwords in plain text in MySQL. Bad idea.&#8221;</p></blockquote>
<p>This site is hosted at MediaTemple, and for the last few months since I migrated from Dreamhost to MT, I&#8217;ve had no problems or issues. Then, last Wednesday night they sent me an email saying I should change my account manager password as my account had seen some strange activity. Never an email you want to get. It said:</p>
<blockquote><p>Dear Valued Customer,</p>
<p>    This is an automated notice informing you that our system has reset your Server Administrator FTP/SSH password due to suspicious activity observed on your (gs) Grid-Service. Our systems have taken measures to protect your service from any possible future exploits.</p></blockquote>
<p> Even though I was on my way to bed at the time, I logged back on and set off to figure it out.</p>
<p>My fist step was to FTP into my machine and check all the WordPress blogs I run from my (gs) service. It looked ok, and I eventually did find an injection in a static site (not WordPress.) Kind of odd, but not out of the ordinary.</p>
<p>Here&#8217;s where things get interesting.</p>
<p>I checked Twitter&#8217;s search and I quickly found I wasn&#8217;t the only one getting security notices from MediaTemple. Many people were and were understandably upset.</p>
<p>As the day wore on yesterday, news came out that MediaTemple was storing user passwords in <strong>plain, clear text</strong> in their databases. Seriously. Their database was compromised, which in turn compromised many, many customer accounts, including mine. MediaTemple had this to say:</p>
<blockquote><p>“Clear Text” is a method of storing passwords in a database so that they are human readable. This preference was made to provide customers a convenient way of managing access to their services, e.g. connecting a PHP app to MySQL. The “clear text” method can be less-secure than methods involving “encryption”, where passwords are not human-readable. This is less convenient for customers, but adds a layer of security. Properly secured databases can store passwords using either method, with the information kept private. However, if a database gets compromised, the encryption method is the only way to keep the information secure. (mt) Media Temple has now changed to the encryption method for customers, which now breaks some AccountCenter functionality; however, it is more secure and ultimately what our customers now want.</p></blockquote>
<p>The interesting phrase there is &#8220;what our customers now want.&#8221; Of course they want this after they&#8217;ve all been hacked. Securely storing passwords should have been happening from day number one. Always. No exceptions.</p>
<p>So, MT is doing <a href="http://weblog.mediatemple.net/weblog/2009/11/26/1026-gs-security-advisory/">damage control</a> and to their credit have been on Twitter since this all started, but the damage is done and the customer relationships have been strained.</p>
<p>There are lessons here to be learned, not just by web developers but by anyone that uses a website that stores a username and password, which is pretty much all of them.</p>
<p>1. Don&#8217;t store passwords in clear text. Ever. There are a myriad of ways to encrypt and store passwords. Go and read this <a href="http://highedwebtech.com/2008/04/25/season-your-passwords-with-some-salt/">blog post</a> for specific methods.</p>
<p>2. When a password needs reset, use email and a unique token to reset the password. Email the user and make them click on a link to verify its them.</p>
<p>3. If you are a user, and you are using a site that will show you your password in a &#8220;my account&#8221; area or in their administrative control panel means they are not storing your password securely. If you have credit card information stored there, good luck.</p>
<p>4. Use strong passwords. <code>password</code> is not a strong password. This is a strong password:</p>
<p><code>B;8(,4$n#</code></p>
<p>That was generated by this online <a href="http://strongpasswordgenerator.com/">strong password generator</a>. I use it when creating any type of accounts, especially for my campus users. This could be antyhing ranging from MySQL to WordPress user accounts.</p>
<p>Want to get even crazier? Use an ultra secure password. Check out this one I randomly generated:</p>
<p><code>|[<;0Rw|t>Ir[Qh|?E|M]K#JPjz?`wIY_H1K=?fs}Cb@(5$PeP4h"F)%4P9I?3i</code></p>
<p>Passwords like that I prefer for servers and other very sensitive information. Want to generate one like that? Use this <a href="https://www.grc.com/passwords.htm">site</a>.  I now have a 63 character login for my MediaTemple account, just to be safe.</p>
<p>5. If you are a MediaTemple (gs) customer, and you haven&#8217;t yet checked out your sites, I&#8217;d highly recommend you do so now.</p>
<p>Additional Reading about the MediaTemple events:</p>
<ul>
<li><a href="http://michaeltorbert.com/blog/media-temple-hacked/">Michael Torbert</a></li>
<li><a href="http://digwp.com/2009/11/media-temple-wordpress-mass-hacking/">DigWP</a></li>
<li><a href="http://jeffreybarke.net/2009/11/media-templewordpress-hacked/">Jeffrey Barke</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2009/11/27/never-store-your-passwords-in-clear-text/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Will Google Rank Your Site Higher if its Faster?</title>
		<link>http://highedwebtech.com/2009/11/23/will-google-rank-your-site-higher-if-its-faster/</link>
		<comments>http://highedwebtech.com/2009/11/23/will-google-rank-your-site-higher-if-its-faster/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 14:08:33 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Amazon CloudFront]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Mod_Gzip]]></category>
		<category><![CDATA[WP Super Cache]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=931</guid>
		<description><![CDATA[GigaOm reported this weekend that Google potentially may look as how fast your site loads and integrate that into its PageRank system. Matt Cutts, a software engineer and an eloquent corporate spokesman for Google, spoke at PubCon earlier this month &#8230; <a href="http://highedwebtech.com/2009/11/23/will-google-rank-your-site-higher-if-its-faster/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://t0.gstatic.com/images?q=tbn:735sH_RrC2x9ZM:http://www.pjcj.net/yapc/yapc-eu-2006-enigmatic_perl/slides/images/stopwatch.jpg" style="float:right;padding:7px;" />GigaOm <a href="http://gigaom.com/2009/11/22/should-web-page-speed-influence-google-pagerank/?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+OmMalik+%28GigaOM%29">reported</a> this weekend that Google potentially may look as how fast your site loads and integrate that into its PageRank system.</p>
<blockquote><p>Matt Cutts, a software engineer and an eloquent corporate spokesman for Google, spoke at PubCon earlier this month and later gave a video interview to Web Pro News, in which he said that the speed at which web pages are available might become a factor in SEO moving into 2010. </p></blockquote>
<p>While Google hasn&#8217;t officially said this is going to happen, having as fast a website as possible is a very good thing, for your users and for you.</p>
<p>So, let&#8217;s look at a few ways you can improve the speed of your site.</p>
<p><strong>1. Compression</strong></p>
<p>Most, if not all, of the major web servers available today offer some sort of compression. What that means is they serve out the content to your browser in a certain way, much like a ZIP file, that your browser can read and deflate very quickly. Smaller files sent = faster site.</p>
<p>Now, how you set up compression differs by what web server you are using and what platform your server is.</p>
<p>In PHP, it can be as easy as adding one line of code to your site. Like this:</p>
<p><code><br />
&lt;?php<br />
    ob_start("ob_gzhandler");<br />
?><br />
</code></p>
<p>If you&#8217;re using Apache and only serving out HTML, you should look into the <a href="http://www.linux.ie/articles/tutorials/mod_gzip.php">mod_gzip</a> apache plugin. It compresses text files on the fly. Here are some <a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d52ff289-94d3-4085-bc4e-24eb4f312e0e.mspx?mfr=true">instructions</a> for IIS, though there are also commercial plug-ins you can buy to achieve the same result.</p>
<p>Sometimes you may not have access to the actual server or root access to install some of these services. No worries &#8211; some CMS and blogging systems offer plug-ins to achieve some of these things.</p>
<p><img src="http://highedwebtech.com/wp-content/uploads/2009/11/Screen-shot-2009-11-23-at-9.02.26-AM.png" alt="Screen shot 2009-11-23 at 9.02.26 AM.png" border="0" width="147" height="112" style="float:right;padding:5px;" />I&#8217;m a WordPress nut, so on all of the installs I run, one of the first things I always install is <a href="http://ocaoimh.ie/wp-super-cache/">WP Super Cache</a>, created by <a href="http://ocaoimh.ie/">Donncha O Caoimh</a>. This plugin will cache pages of your site for super fast loading, it will compress HTML, if enabled. This plugin also works in MU, and I&#8217;ll blogging that later.</p>
<p>Not sure its worth it? Check for yourself. There are many sites on the web that test your site and see if you are compressing data. <a href="http://www.whatsmyip.org/http_compression/">Here&#8217;s one</a> that quick and easy to use. For this site, by using compression I&#8217;m saving almost 75% in terms of the amount of data sent. Faster sends = faster site loads for users.</p>
<div style="text-align:center;"><img src="http://highedwebtech.com/wp-content/uploads/2009/11/Screen-shot-2009-11-23-at-8.30.37-AM1.png" alt="Screen shot 2009-11-23 at 8.30.37 AM.png" border="0" width="332" height="134" /></div>
<p><strong>2. Cut Down On Stuff</strong></p>
<p>Compression is great, but if you site is pulling in a million assets, widgets from third-party sites, and three or four Javascript libraries, it won&#8217;t make any difference. If you can, cut down on the number of calls, <a href="http://www.minifyjs.com/">minify</a> your javascript libraries and determine something like that Facebook fan box is absolutely critical to a page.</p>
<p>I think we&#8217;re all a bit guilty in the broadband era of not worrying about how much our page weights are. It&#8217;s worth looking at, especially as more and more web surfing is done on mobile devices.</p>
<p>Want to see how much stuff your code is calling for? Check out <a href="http://getfirebug.com/">Firebug</a> for Firefox or use Safari&#8217;s built-in Web Inspector. You may be surprised what you see.</p>
<div style="text-align:center;"><img src="http://highedwebtech.com/wp-content/uploads/2009/11/Screen-shot-2009-11-23-at-8.57.54-AM.png" alt="Screen shot 2009-11-23 at 8.57.54 AM.png" border="0" width="479" height="77" /></div>
<p><strong>3. CDN</strong></p>
<p>Serving some of your static content (images, CSS, js) from a content delivery network will increase the speed of your site. These assets don&#8217;t change very often, so why not let a very fast network serve them out.</p>
<p>There are a ton of options out there, from very expensive to not so expensive, but the two I&#8217;d recommend are <a href="http://aws.amazon.com/cloudfront/">Amazon S3/Cloudfront</a> and Rackspace&#8217;s <a href="http://www.rackspacecloud.com/cloud_hosting_products/files">Cloud Files</a>.</p>
<p>Those two are inexpensive, easy to use and very fast. The few bucks a month you&#8217;ll pay are well worth it.</p>
<p><strong>4. Semantically Strong Code</strong></p>
<p>Last but not least, if you write clean, good code, your site will load very faster.</p>
<p>If your code is a mess, or god forbid, you&#8217;re still using a layout method like tables, your site is going to take longer to come down the pipe and also render out for the user.</p>
<p>Are there easy things I&#8217;m missing? Leave a comment and let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2009/11/23/will-google-rank-your-site-higher-if-its-faster/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Saving Big in Web Development</title>
		<link>http://highedwebtech.com/2009/01/16/saving-big-in-web-development/</link>
		<comments>http://highedwebtech.com/2009/01/16/saving-big-in-web-development/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 15:38:24 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web App]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[3-D]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe Systems Inc]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cash]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Inc.]]></category>
		<category><![CDATA[image processing]]></category>
		<category><![CDATA[Karine Joly]]></category>
		<category><![CDATA[online calendar]]></category>
		<category><![CDATA[open source products]]></category>
		<category><![CDATA[open-source image processing tool]]></category>
		<category><![CDATA[open-source solutions]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[web apps]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[YouTube]]></category>
		<category><![CDATA[YouTube Inc]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=409</guid>
		<description><![CDATA[Karine Joly has a blog post this week asking for suggestions on how colleges and universities can save big in this time of slashed budgets, challenging enrollment and decreasing endowments. My ideas about this are two-fold. One, look for open-source &#8230; <a href="http://highedwebtech.com/2009/01/16/saving-big-in-web-development/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/21313845@N04/2402698820" title="Dollars !"><img src="http://farm4.static.flickr.com/3219/2402698820_6606b5ca8a_m.jpg" style="float:right;padding:5px;" /></a>Karine Joly has a <a href="http://collegewebeditor.com/blog/index.php/archives/2009/01/12/what-strategies-have-you-implemented-to-save-big-or-small-at-your-institution/">blog post</a> this week asking for suggestions on how colleges and universities can save big in this time of slashed budgets, challenging enrollment and decreasing endowments.</p>
<p>My ideas about this are two-fold. One, look for open-source solutions. Second, look for web services that can fit a need. They are often very low-cost, or better yet, free.</p>
<p><strong>Open Source</strong></p>
<p>There are many open source products that we web developers can use to solve problems and get things done. You may already be using many of these technologies already.</p>
<p>Your web site is probably served by Apache. Maybe you code web apps in PHP, and use MySQL for databases. Maybe you code in Ruby on Rails. All these are open source products with great communities of developers.</p>
<p>Looking for a blogging platform? <a href="http://wordpress.org/">WordPress</a> is a great, free platform you can build all sorts of sites on top of.</p>
<p>Need a CMS? Plenty of options there, including the aforementioned <a href="http://wordpress.org/">WordPress</a>, <a href="http://www.joomla.org/">Joomla</a>, <a href="http://drupal.org/">Drupal</a>, <a href="http://typo3.com/">Typo</a> and many, many more.</p>
<p>Can&#8217;t get budget monies for that Adobe CS4 upgrade? Check out the <a href="http://www.gimp.org/">Gimp</a>, an open-source image processing tool. Want to do 3-D modeling? Check out <a href="http://www.blender.org/">Blender</a>.</p>
<p><strong>Web Services</strong></p>
<p>Don&#8217;t forget there are many great web services you can use that will help  you save time and money.</p>
<p>Our career services team wanted a custom calendar for all their recruiting events. We didn&#8217;t have the time to build or customize a calendar application, so we looked to Google&#8217;s Calendar product. Now, career services staff and students enter events into an online calendar and we take that and <a href="http://www.allegheny.edu/accel/career/calendar.php">embed it one of their web pages</a>. Google Calendar also allows users to subscribe to the calendar by RSS, Google Cal or iCal. It&#8217;s a great solution that was very quick for us to set up and we don&#8217;t have to spend a lot of time maintaining it.</p>
<p>Want to build a quick form? Try <a href="http://wufoo.com">Wufoo&#8217;s</a> free plan.</p>
<p>Use Flickr&#8217;s free account to post photos. Put videos for free on YouTube. Want to get suggestions and recommendations from your visitors? Try <a href="http://uservoice.com/?referer_type=poweredby">UserVoice&#8217;s</a> free plan. Get free stats from Google Analytics.</p>
<p>As you can see, there are a ton of options and hopefully the lack of budget monies won&#8217;t keep  you from creating great sites and web apps.</p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2009/01/16/saving-big-in-web-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RideBoard &#8211; making the world a little greener</title>
		<link>http://highedwebtech.com/2008/11/17/rideboard-making-the-world-a-little-greener/</link>
		<comments>http://highedwebtech.com/2008/11/17/rideboard-making-the-world-a-little-greener/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 21:30:26 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web App]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[online rideboard]]></category>
		<category><![CDATA[ride share]]></category>
		<category><![CDATA[rideboard]]></category>
		<category><![CDATA[ridesharing]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=297</guid>
		<description><![CDATA[A few years back, my team was approached by a group from our student government who had a problem. Before a renovation in our campus center, there was one of the classic staples of colleges back in the day &#8211; &#8230; <a href="http://highedwebtech.com/2008/11/17/rideboard-making-the-world-a-little-greener/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p>A few years back, my team was approached by a group from our student government who had a problem. Before a renovation in our campus center, there was one of the classic staples of colleges back in the day &#8211; the ride board.</p>
<p>If you had an extra seat or needed a ride somewhere, you could post a note and hopefully meet up and share the expenses and pass the time.</p>
<p>Post renovation, the rideboard was gone, and they missed it. So, we came up with the idea to do an online version. Using PHP, the Google Maps API and a bit of RSS, I think we came up with a pretty good solution. The bulk of the coding on this was done by students working for me at the time.</p>
<div style="text-align:center;"><a href="http://highedwebtech.com.s67666.gridserver.com/wp-content/uploads/2008/11/rideboard.png"><img src="http://highedwebtech.com/wp-content/uploads/2008/11/rideboard-300x221.png" alt="" title="rideboard" width="300" height="221" class="aligncenter size-medium wp-image-298" /></a></div>
<p>If you click on that image, you&#8217;ll get a larger version where you can see the detail a little better. Since the site is limited to on-campus IP addresses, you can&#8217;t see the real thing.</p>
<p>Once you click on a pushpin, you&#8217;re taken to a detail page of that city, and the rides needed and being offered to that place. Signing up is simple &#8211; just a few fields of information are asked, since we know only students of our college will be using this page. The student gets an email right away with a link and code to approve their listing, and once they do it&#8217;s live. The code also works if they need to amend their listing, such as the number of seats available. Honestly, I haven&#8217;t had to touch this app in a long time since it&#8217;s coded to take care of itself.</p>
<p>Is anyone interested in the code for use on their campuses? I think we could open source it if a few people are interested. It would be our little attempt to be a bit greener. Let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2008/11/17/rideboard-making-the-world-a-little-greener/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress 2.6.2 and Automatic Updating</title>
		<link>http://highedwebtech.com/2008/09/09/wordpress-262-and-automatic-updating/</link>
		<comments>http://highedwebtech.com/2008/09/09/wordpress-262-and-automatic-updating/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 13:23:32 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[automatic upgrade]]></category>

		<guid isPermaLink="false">http://highedwebtech.com/?p=185</guid>
		<description><![CDATA[WordPress version 2.6.2 is out, fixing a few security holes. If you haven&#8217;t already, you should upgrade your installation as soon as possible. I think I&#8217;ve mentioned it here before, but if you&#8217;re not running the Automatic Upgrade plugin, stop &#8230; <a href="http://highedwebtech.com/2008/09/09/wordpress-262-and-automatic-updating/">Continued</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/51035624977@N01/148031358" title="Shuttle Login Mockup"><img src="http://farm1.static.flickr.com/52/148031358_b4df83002e_s.jpg" style="float:right;padding:5px;" /></a>WordPress version 2.6.2 is out, fixing a few security holes. If you haven&#8217;t already, you should upgrade your installation as soon as possible.</p>
<p>I think I&#8217;ve mentioned it here before, but if you&#8217;re not running the <a href="http://wordpress.org/extend/plugins/wordpress-automatic-upgrade/">Automatic Upgrade</a> plugin, stop and add it to the top of your to-do list. True to it&#8217;s name, the plugin does all the work of updating your WordPress install with just a series of clicks. This is especially useful for users who may be afraid of uploading a bunch of files or perhaps don&#8217;t have FTP access to their blog.</p>
<p>From a technical perspective, the plugin does a lot of nice things on the system side. First, it gives you zip files containing your content and database backups. It&#8217;s more a just-in-case thing, but nice to have. Then, it puts your blog into a maintenance mode. That way, people aren&#8217;t leaving comments or trying to log in during the upgrade. It will also de-activate your plugins, again, to reduce the possible errors that may pop up. The plugin then gets new files from WordPress directly, updates your install, turns everything back on and asks you to clean up the cruft leftover.</p>
<p>Upgrading today took 3 minutes, which is a small price to pay to make sure your install is safe and secure.</p>
]]></content:encoded>
			<wfw:commentRss>http://highedwebtech.com/2008/09/09/wordpress-262-and-automatic-updating/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

