<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Teleogistic</title>
	
	<link>http://teleogistic.net</link>
	<description />
	<lastBuildDate>Thu, 26 Aug 2010 13:00:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Teleogistic" /><feedburner:info uri="teleogistic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>New WordPress plugin: Simple Import Users</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/nIFkzfUqzNY/</link>
		<comments>http://teleogistic.net/2010/08/new-wordpress-plugin-simple-import-users/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 13:00:03 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[edtech]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[buddypress]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=936</guid>
		<description><![CDATA[My palz Mikhail and Luke over at Blogs@Baruch needed an easier way to add users to sites in the WordPress network. They&#8217;d been using DDImportUsers, which worked, but was finicky: DDIU required you to specify too much information, its formatting was tough for instructors to understand, and, most importantly, it didn&#8217;t deal well with existing [...]]]></description>
			<content:encoded><![CDATA[<p>My palz Mikhail and <a href="http://lukewaltzer.com/">Luke</a> over at <a href="http://blsciblogs.baruch.cuny.edu">Blogs@Baruch</a> needed an easier way to add users to sites in the WordPress network. They&#8217;d been using <a href="http://www.dagondesign.com/articles/import-users-plugin-for-wordpress/">DDImportUsers</a>, which worked, but was finicky: DDIU required you to specify too much information, its formatting was tough for instructors to understand, and, most importantly, it didn&#8217;t deal well with existing accounts, which it simply ignored instead of adding as new users to the site in question. So they asked me to modify the plugin for their purposes.</p>
<p>The result is a near-complete rewrite, released today under the name <a href="http://teleogistic.net/code/wordpress/simple-import-users/">Simple Import Users</a>. Instead of entering all sorts of information about username, password, display names, etc, Simple Import Users accepts only a single argument: email address. That makes it simple enough for anyone to use. Insert a list of email addresses into Simple Import Users, and it checks each email address in the following way:</p>
<ul>
<li>If a WP user is *not* found with the email address in question, SIU creates a new user with that address. The username is automatically generated from the part of the email address before the @-sign, which means that this plugin will probably work best for those setups where you can guarantee unique email prefixes (like schools). Passwords are randomly generated.</li>
<li>Then the new user (or the existing user, if one was found) is added to the blog.</li>
<li>The user is then sent a customized welcome email. All users get a message saying that they&#8217;ve been added to the blog, with information on how to access the dashboard.  In the case of new users, it contains their login info as well.</li>
<li>If you&#8217;re running BuddyPress, the email to new users also contains a message encouraging users to fill out their BP profiles, with a link to the Edit Profile page.</li>
</ul>
<p>The plugin has no settings, and is intended for this very specific purpose. But if you&#8217;ve got a setup like Blogs@Baruch, it could save you a lot of time and effort.</p>
<p>Get the <a href="http://teleogistic.net/code/wordpress/simple-import-users/">Simple Import Users</a> here.</p>


<p>Related posts:<ol><li><a href='http://teleogistic.net/2010/04/more-import-to-ning-goodness/' rel='bookmark' title='Permanent Link: More Import from Ning goodness &#8211; ( Ning to BuddyPress / WordPress )'>More Import from Ning goodness &#8211; ( Ning to BuddyPress / WordPress )</a></li>
<li><a href='http://teleogistic.net/2010/01/blog-specific-email-plugin-for-wpmu-users/' rel='bookmark' title='Permanent Link: Blog-specific email plugin for WPMU users'>Blog-specific email plugin for WPMU users</a></li>
<li><a href='http://teleogistic.net/2010/04/importing-ning-users-into-wp/' rel='bookmark' title='Permanent Link: Importing Ning users into WP'>Importing Ning users into WP</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/08/new-wordpress-plugin-simple-import-users/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/08/new-wordpress-plugin-simple-import-users/</feedburner:origLink></item>
		<item>
		<title>Enabling Popularity Contest for WordPress networkwide use</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/Z98JcM2KgNo/</link>
		<comments>http://teleogistic.net/2010/08/enabling-popularity-contest-for-wordpress-networkwide-use/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 21:27:27 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[popularity]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=923</guid>
		<description><![CDATA[Alex King&#8217;s Popularity Contest is a pretty cool way to collect data about which posts on a WordPress site the most popular. The data collected is more sophisticated and customizable than simple analytics, because it distinguishes between page views and things like trackbacks, comments, and other kinds of hits. The plugin supports WordPress Multisite in [...]]]></description>
			<content:encoded><![CDATA[<p>Alex King&#8217;s <a href="http://crowdfavorite.com/wordpress/plugins/popularity-contest/">Popularity Contest</a> is a pretty cool way to collect data about which posts on a WordPress site the most popular. The data collected is more sophisticated and customizable than simple analytics, because it distinguishes between page views and things like trackbacks, comments, and other kinds of hits. The plugin supports WordPress Multisite in the sense that it&#8217;s possible to activate network-wide; when you do so, the plugin keeps site-specific popularity stats. But what if you want popularity rankings across your entire network?</p>
<p>I recently modified Popularity Contest to do just that. The idea is simple: in order to keep network-wide stats, we need a network-wide table (instead of the default site-specific tables). How do you keep information about all networkwide posts on a single blog? I used Donncha O Caoimh&#8217;s <a href="http://ocaoimh.ie/wordpress-mu-sitewide-tags/">Sitewide Tags</a> as a bridge. All posts across the network are copied to the tags blog, and popularity data is indexed on the tags blog.</p>
<p>To make this work, several things are needed. I can&#8217;t just give you the files because I&#8217;ve altered them in other, irrelevant ways, but I will walk you through the process of setting it up. Also, keep in mind that we&#8217;ll be modifying the plugin code for both Popularity Contest and Sitewide Tags, modifications you&#8217;ll have to make each time you upgrade the plugins. Make sure you back up your work.</p>
<ol>
<li><strong>Install Sitewide Tags</strong> which can be downloaded <a href="http://ocaoimh.ie/wordpress-mu-sitewide-tags/">from its website</a>. You have to activate a few things in order to turn it on &#8211; read the readme carefully. Be sure to take note of the tags blog id number, as we&#8217;ll need that in a later step.</li>
<li>In <code>sitewide-tags.php</code>, look for the function <code>sitewide_tags_post()</code>. Near the end of the function is a line that says <code>restore_current_blog();</code>. Immediately after that line, enter the following code:
<pre class="brush: php">update_post_meta( $post-&gt;ID, &#039;tags_post_id&#039;, $p );</pre>
<p>That line makes sure that every time a post is aggregated on the tags blog, the original post gets a piece of metadata noting the post id of the corresponding tags blog post. We&#8217;ll use that information in a later step.</li>
<li><strong>Download Popularity Contest</strong> from <a href="http://crowdfavorite.com/wordpress/plugins/popularity-contest/">its website</a>. I don&#8217;t recommend that you activate it yet, especially not networkwide, because it will create a lot of tables that you don&#8217;t really need.</li>
<li>The next few steps will require mading some modifications in the main Popularity Contest plugin file, <code>popularity-contest.php</code>. The first modification is to change all references to $wpdb-&gt;posts (which, when activated networkwide, will refer to the posts table for the individual blogs) and change them to point to the tags blog post table. A search and replace that replaces <code>$wpdb-&gt;posts</code> with <code>wp_posts</code> (or <code>wp_x_posts</code>, if your tags blog is not site number 1 but is instead site x.</li>
<li>The next modification involves the function <code>akpc_init()</code>, near the end of the plugin file. That&#8217;s where the table names for the Popularity Contest custom tables are found. We need to make sure that they point to the tags blog. Replace the existing function with this:
<pre class="brush: php">
function akpc_init() {
global $wpdb, $akpc;

$wpdb-&gt;ak_popularity = &#039;wp_ak_popularity&#039;;
$wpdb-&gt;ak_popularity_options = &#039;wp_ak_popularity_options&#039;;

$akpc = new ak_popularity_contest;
$akpc-&gt;get_settings();
}
</pre>
<p>If your tags blog is something other than blog 1, you could change these table names to match (e.g. wp_15_ak_popularity) but it isn&#8217;t really necessary.</li>
<li>Now we have to make Popularity Contest aware of the identity relationships between the tags posts and the original posts. Two snippets of code should do it in most places. First, find the function <code>record_feedback</code>, which starts around line 700. Right before the <code>switch($type)</code> line, insert the following:
<pre class="brush: php">
if ( $tags_post_id = get_post_meta( $comment_post_ID, &#039;tags_post_id&#039;, true ) )
$comment_post_ID = $tags_post_id;
</pre>
<p>Next, find the function <code>akpc_api_record_view()</code>, which starts around 2550. Right after <code>array_unique($ids);</code> (around line 2555), insert the following:</p>
<pre class="brush: php">
$tags_ids = array();
foreach ( $ids as $id ) {
$tags_ids[] = get_post_meta( $id, &#039;tags_post_id&#039;, true );
}
$ids = $tags_ids;
</pre>
<p>These two modifications make sure that Popularity Contest knows which post on the tags blog corresponds to the post being visited/commented on on the child blogs.</li>
<li>At this point, you can activate the popularity plugin networkwide. Here&#8217;s what happens, very roughly:
<ul>
<li>The plugin creates the necessarily popularity tables &#8211; just one set for the whole installation.</li>
<li>When you publish a new post on any site, it gets copied to the tags blog. Our modification from step 2 makes sure that the copied post ID (let&#8217;s say 36) is saved to the original post.</li>
<li>When someone visits the original blog post, Popularity Contest fires (because it&#8217;s been activated network wide). Our modifications in steps 4 and 5 make sure that the plugin knows to record the activity to the tags blog index, and step 6 make sure that the plugin know which post the activity belongs to.</li>
</ul>
</li>
<li>You&#8217;ll need another modification to get the data out, since you&#8217;ll want to display it on your site somewhere. The default function for this is called <code>show_top_ranked()</code>. We need to modify so that it gets the requested data from the right place. Replace the stock function with this one:
<pre class="brush: php">
function show_top_ranked($limit, $before, $after) {
switch_to_blog( 1 );
if ($posts=$this-&gt;get_top_ranked_posts($limit)) {
foreach ($posts as $post) {
$ud = get_userdata( $post-&gt;post_author );
print(
$before. get_thumbnail( $post-&gt;post_author, 36 ) .&#039;&lt;a href=&quot;&#039;.get_permalink($post-&gt;ID).&#039;&quot;&gt;&#039;
.$post-&gt;post_title.&#039;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&#039;. $ud-&gt;display_name . &#039;&lt;/strong&gt;&#039; . $after
);
}
}
else {
print($before.&#039;(none)&#039;.$after);
}
restore_current_blog();
}
</pre>
<p>Make sure you change the number in the <code>switch_to_blog()</code> call to the id of your tags blog.</li>
</ol>
<p>I think I&#8217;ve remembered everything. Good luck!</p>
<h3>Bonus!</h3>
<p>For my project, I was moving from a single WordPress site to a multisite situation. The popularity plugin had been running on both setups for a while, so the data was totally messed up and needed to be combined (which meant finding the corresponding post data and adding it together &#8211; yeesh!). Here&#8217;s the script I used &#8211; be careful with it, and keep in mind that it was designed for a *very* specific use. Do not use this code if you don&#8217;t understand exactly what every line does!</p>
<pre class="brush: php">
global $wpdb;

$query = &quot;SELECT * FROM {$wpdb-&gt;blogs} WHERE site_id = &#039;{$wpdb-&gt;siteid}&#039; &quot;;
$blog_list = $wpdb-&gt;get_results( $query, ARRAY_A );

foreach( $blog_list as $blog ) {
//print_r($blog); continue;
if ( $blog[&#039;blog_id&#039;] == 1 ) continue;
//if ( $blog[&#039;blog_id&#039;] != 83 ) continue;

$tn = &#039;wp_&#039; . $blog[&#039;blog_id&#039;] . &#039;_posts&#039;;
$tnmeta = &#039;wp_&#039; . $blog[&#039;blog_id&#039;] . &#039;_postmeta&#039;;

$query = &quot;SELECT ID FROM {$tn} WHERE post_type = &#039;post&#039; AND post_status = &#039;publish&#039; &quot;;
$posts = $wpdb-&gt;get_results( $query, ARRAY_A );

foreach( $posts as $post ) {
$id = $post[&#039;ID&#039;];

$query = &quot;SELECT meta_value FROM {$tnmeta} WHERE post_id = &#039;{$id}&#039; AND meta_key = &#039;tags_post_id&#039; &quot;;
$tags_post_id = $wpdb-&gt;get_results( $query, ARRAY_A );
$tpid = $tags_post_id[0][&#039;meta_value&#039;];

$query = &quot;SELECT * FROM wp_ak_popularity WHERE post_id = &#039;{$id}&#039;&quot;;
$old_data = $wpdb-&gt;get_results( $query, ARRAY_A );
$old_data = $old_data[0];

$query = &quot;SELECT * FROM wp_ak_popularity WHERE post_id = &#039;{$tpid}&#039;&quot;;
$new_data = $wpdb-&gt;get_results( $query, ARRAY_A );
$new_data = $new_data[0];

if ( $old_data &amp;amp;&amp;amp; $new_data ) {
$combined_data = array();

$combined_data[&#039;post_id&#039;] = $new_data[&#039;post_id&#039;];
$combined_data[&#039;last_modified&#039;] = $new_data[&#039;last_modified&#039;];

foreach( $old_data as $key =&gt; $d ) {
if ( $key == &#039;post_id&#039; || $key == &#039;last_modified&#039; )
continue;

$combined_data[$key] = (int)$d + (int)$new_data[$key];
}
}

$query = &#039;UPDATE wp_ak_popularity SET &#039;;
foreach( $combined_data as $key =&gt; $cd ) {
if ( $key == &#039;post_id&#039; )
continue;
$query .= &quot;{$key} = &#039;{$cd}&#039;, &quot;;
}

$query = substr_replace( $query, &#039;&#039;, -2 );
$query .= &#039; &#039;;

$query .= &quot;WHERE post_id = &#039;{$combined_data[&#039;post_id&#039;]}&#039;&quot;;
$wpdb-&gt;query( $query );
print_r( $old_data ); echo &quot;&lt;br &gt;&quot;; print_r($new_data); echo &quot;&lt;br&gt;&quot;; print_r($combined_data); echo &quot;&lt;br&gt;&quot;; echo $query; echo &quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&quot;;

}

echo &quot;&lt;pre&gt;&quot;;
//		print_r($posts);
echo &quot;&lt;/pre&gt;&quot;;
}
</pre>


<p>Related posts:<ol><li><a href='http://teleogistic.net/2009/07/making-sitewide-tags-work/' rel='bookmark' title='Permanent Link: Making Sitewide Tags work'>Making Sitewide Tags work</a></li>
<li><a href='http://teleogistic.net/2009/08/sitewide-tag-suggestion-in-wordpress-mu-2-8/' rel='bookmark' title='Permanent Link: Sitewide Tag Suggestion in WordPress MU 2.8+'>Sitewide Tag Suggestion in WordPress MU 2.8+</a></li>
<li><a href='http://teleogistic.net/2010/01/blog-specific-email-plugin-for-wpmu-users/' rel='bookmark' title='Permanent Link: Blog-specific email plugin for WPMU users'>Blog-specific email plugin for WPMU users</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/08/enabling-popularity-contest-for-wordpress-networkwide-use/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/08/enabling-popularity-contest-for-wordpress-networkwide-use/</feedburner:origLink></item>
		<item>
		<title>Anthologize 0.4-alpha is released</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/ty16fu4hyQE/</link>
		<comments>http://teleogistic.net/2010/08/anthologize-0-4-alpha-is-released/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 16:56:48 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[anthologize]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=914</guid>
		<description><![CDATA[The Anthologize team has been hard at work over the last week, fixing bugs behind some of the most commonly reported problems, and adding features to make Anthologizing easier and more fun. We&#8217;ve just tagged version 0.4-alpha in the WordPress repository. Visit your WordPress Dashboard&#8217;s Plugins page to upgrade. Read more about the changes in [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://anthologize.org">Anthologize</a> team has been hard at work over the last week, fixing bugs behind some of the most commonly reported problems, and adding features to make Anthologizing easier and more fun. We&#8217;ve just tagged version 0.4-alpha in <a href="http://wordpress.org/extend/plugins/anthologize/">the WordPress repository</a>. Visit your WordPress Dashboard&#8217;s Plugins page to upgrade.</p>
<p><a href="http://teleogistic.net/code/wordpresswordpress-mu/anthologize/">Read more about the changes in 0.4-alpha.</a></p>
<p>Questions or thoughts about Anthologize? Visit the <a href="http://anthologize.org">Anthologize home page</a> or the <a href="http://groups.google.com/group/anthologize-users">Anthologize users group</a>.</p>


<p>Related posts:<ol><li><a href='http://teleogistic.net/2010/08/introducing-anthologize-a-new-wordpress-plugin/' rel='bookmark' title='Permanent Link: Introducing Anthologize, a new WordPress plugin'>Introducing Anthologize, a new WordPress plugin</a></li>
<li><a href='http://teleogistic.net/2009/10/help-me-alpha-test-buddypress-forum-attachments/' rel='bookmark' title='Permanent Link: Help me alpha test BuddyPress Forum Attachments'>Help me alpha test BuddyPress Forum Attachments</a></li>
<li><a href='http://teleogistic.net/2010/08/hiding-wordpress-custom-post-type-menu-items-without-disabling-edit-access/' rel='bookmark' title='Permanent Link: Hiding WordPress custom post type menu items without disabling edit access'>Hiding WordPress custom post type menu items without disabling edit access</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/08/anthologize-0-4-alpha-is-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/08/anthologize-0-4-alpha-is-released/</feedburner:origLink></item>
		<item>
		<title>Hiding WordPress custom post type menu items without disabling edit access</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/3uAjR4lO5hA/</link>
		<comments>http://teleogistic.net/2010/08/hiding-wordpress-custom-post-type-menu-items-without-disabling-edit-access/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 15:31:51 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[anthologize]]></category>
		<category><![CDATA[custom post type]]></category>
		<category><![CDATA[show_ui]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=908</guid>
		<description><![CDATA[WordPress 3.0&#8242;s custom post types are really cool, opening up a whole new world of use cases for WordPress. We used custom post types extensively when developing Anthologize. But there are still some rough spots. For instance, the &#8216;show_ui&#8217; parameter of register_post_type() is a little bit too coarse-grained for our purposes. For Anthologize, we wanted [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress 3.0&#8242;s custom post types are really cool, opening up a whole new world of use cases for WordPress. We used custom post types extensively when developing <a href="http://anthologize.org">Anthologize</a>. But there are still some rough spots.</p>
<p>For instance, the &#8216;show_ui&#8217; parameter of <a href="http://codex.wordpress.org/Function_Reference/register_post_type">register_post_type()</a> is a little bit too coarse-grained for our purposes. For Anthologize, we wanted to allow the user to edit custom post types with the standard Edit page, but we <em>didn&#8217;t</em> want users to be able to access most of these post types through the menu items automatically created by register_post_types (all links to the edit pages would appear on our custom Dashboard panel, in order to reduce redundancy and confusion). With &#8216;show_ui&#8217; set to <strong>true</strong>, users could access the edit screens, but they could also access the unwanted menu items; with &#8216;show_ui&#8217; set to <strong>false</strong>, the menu items were hidden, but navigating to the Edit pages (directly, via URL) threw a &#8220;You don&#8217;t have permission to access this page&#8221; error.</p>
<p>Here&#8217;s how we resolved the dilemma. Note that it&#8217;s a bit hackish at the moment. In the future, I hope the WordPress team will split &#8216;show_ui&#8217; gets into multiple, separate arguments.</p>
<ol>
<li>In your register_post_type() call, set &#8216;show_ui&#8217; to <strong>true</strong>. Here&#8217;s an example from Anthologize:
<pre class="brush: php">
	register_post_type( &#039;library_items&#039;, array(
		&#039;label&#039; =&gt; __(&#039;Library Items&#039;, &#039;anthologize&#039; ),
		&#039;public&#039; =&gt; true,
		&#039;_builtin&#039; =&gt; false,
		&#039;show_ui&#039; =&gt; true,
		&#039;capability_type&#039; =&gt; &#039;page&#039;,
		&#039;hierarchical&#039; =&gt; true,
		&#039;supports&#039; =&gt; array(&#039;title&#039;, &#039;editor&#039;, &#039;revisions&#039;),
		&#039;rewrite&#039; =&gt; array(&quot;slug&quot; =&gt; &quot;library_item&quot;)
	));
	</pre>
</li>
<li>To remove the unwanted menu items, we&#8217;ll take advantage of the fact that WordPress has built-in support for custom menu order. First, we have to tell WordPress to expect a custom menu order. (The following two functions are modified from Anthologize, where they&#8217;re methods on a loader class.)
<pre class="brush: php">
	function toggle_custom_menu_order(){
		return true;
	}
	add_filter( &#039;custom_menu_order&#039;, &#039;toggle_custom_menu_order&#039; );
	</pre>
</li>
<li>Once custom_menu_order has been set to true (step 2), WordPress makes a new filter hook available, menu_order. As the name says, it&#8217;s really meant to reorder menu items, but we&#8217;ll use it to erase menu items altogether.
<pre class="brush: php">
	function remove_those_menu_items( $menu_order ){
		global $menu;

		foreach ( $menu as $mkey =&gt; $m ) {
			$key = array_search( &#039;edit.php?post_type=library_items&#039;, $m );

			if ( $key )
				unset( $menu[$mkey] );
		}

		return $menu_order;
	}
	add_filter( &#039;menu_order&#039;, &#039;remove_those_menu_items&#039; ) );
	</pre>
<p>	Here&#8217;s what&#8217;s happening. The filter hook is meant to modify $menu_order. That&#8217;s why remove_those_menu_item() takes $menu_order as an argument, and returns it back to WordPress untouched on the last line of the function. On the first line of the function, we&#8217;re taking advantage of the fact that the $menu variable &#8211; where menu items are stored for construction into markup later on &#8211; is in the global scope. Once we&#8217;ve declared that we&#8217;ll be using $menu on the first line, we loop through each of the menu items, and when we find one that matches our custom post type (ie, when we find one that contains the string &#8216;edit.php?post_type=library_items&#8217; &#8211; you&#8217;ll have to replace the post_type with your own, obviously), it gets removed from the $menu global.
	</li>
</ol>
<p>You can iterate this for as many different custom post types as you&#8217;d like &#8211; just add more potential keys to the foreach loop in remove_those_menu_items(), eg</p>
<pre class="brush: php">
	$key = array_search( &#039;edit.php?post_type=library_items&#039;, $m );
	$keyb = array_search( &#039;edit.php?post_type=some_other_post_type&#039;, $m );

	if ( $key || $keyb )
		unset( $menu[$mkey] );
	</pre></p>


<p>Related posts:<ol><li><a href='http://teleogistic.net/2010/08/introducing-anthologize-a-new-wordpress-plugin/' rel='bookmark' title='Permanent Link: Introducing Anthologize, a new WordPress plugin'>Introducing Anthologize, a new WordPress plugin</a></li>
<li><a href='http://teleogistic.net/2010/08/anthologize-0-4-alpha-is-released/' rel='bookmark' title='Permanent Link: Anthologize 0.4-alpha is released'>Anthologize 0.4-alpha is released</a></li>
<li><a href='http://teleogistic.net/2010/08/enabling-popularity-contest-for-wordpress-networkwide-use/' rel='bookmark' title='Permanent Link: Enabling Popularity Contest for WordPress networkwide use'>Enabling Popularity Contest for WordPress networkwide use</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/08/hiding-wordpress-custom-post-type-menu-items-without-disabling-edit-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/08/hiding-wordpress-custom-post-type-menu-items-without-disabling-edit-access/</feedburner:origLink></item>
		<item>
		<title>Introducing Anthologize, a new WordPress plugin</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/nFcVUVZGv50/</link>
		<comments>http://teleogistic.net/2010/08/introducing-anthologize-a-new-wordpress-plugin/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 18:37:00 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[#oneweek]]></category>
		<category><![CDATA[anthologize]]></category>
		<category><![CDATA[One Week | One Tool]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=898</guid>
		<description><![CDATA[The moment has arrived! The product of One Week &#124; One Tool, a one week digital humanities tool barn raising hosted by CHNM and sponsored by the NEH Office of Digital Humanities, is Anthologize. Anthologize is a WordPress plugin that lets you collect and curate content, organize and edit it into a form that works [...]]]></description>
			<content:encoded><![CDATA[<p>The moment has arrived!</p>
<div id="attachment_892" class="wp-caption alignright" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/08/anth1.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/08/anth1-300x189.jpg" alt="Anthologize" title="Anthologize" width="300" height="189" class="size-medium wp-image-892" style="border: 1px solid #666" /></a><p class="wp-caption-text">Anthologize</p></div>
<p>The product of <a href="http://oneweekonetool.org">One Week | One Tool</a>, a one week digital humanities tool barn raising hosted by <a href="http://chnm.gmu.edu">CHNM</a> and sponsored by the <a href="http://www.neh.gov/odh/">NEH Office of Digital Humanities</a>, is <strong><a href="http://anthologize.org">Anthologize</a></strong>. Anthologize is a WordPress plugin that lets you collect and curate content, organize and edit it into a form that works for you, and publish it in one of a number of ebook formats.</p>
<p>As I said in <a href="http://teleogistic.net/2010/07/unexpected-leadership-preliminary-thoughts-on-one-week-one-tool/">my last post</a>, I was the lead developer for Anthologize. This stemmed from the fact that, for reasons of market penetration and ease of use, we&#8217;d chosen WordPress as a platform, and I was &#8220;the WordPress guy&#8221;. As such, I was the natural person to oversee the various parts of the development process, and to make sure that they fit together in a neat WordPress plugin package. It was an incredible and humbling experience to work with a group of developers who were, to a person, more talented and experienced than I am.</p>
<div id="attachment_901" class="wp-caption alignleft" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/08/2.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/08/2-300x199.jpg" alt="Anthologize PDF output" title="Anthologize PDF output" width="300" height="199" class="size-medium wp-image-901" style="border: 1px solid #666" /></a><p class="wp-caption-text">Anthologize PDF output</p></div>
<p>Today, the plugin is shipping with four different formats for exporting: PDF, ePub, RTF, and a modified version of TEI that leaves most content in HTML form. None of these export processes are perfect. Some require that certain libraries be installed on your server; some do not offer the kind of layout flexibility that we like; some are not great at text encoding; etc. This release is truly an alpha, a proof-of-concept. The goal is to show not only what a group of devoted individuals can conceive and develop in six short days, but also to provide the framework for further development in the world of independent authorship, publishing, and distribution.</p>
<p>As such, the plugin is designed, and will continue to be developed, with an eye toward maximum flexibility and modularity. Content can be created in WordPress or pulled in by RSS feeds, providing for greater choice of authoring platform. Export formats are generated by translators that work not with native WordPress data, but with an intermediary layer structured with TEI metadata markup. That means that you don&#8217;t have to know anything about WordPress to build a new export translator for yourself &#8211; you only have to know some PHP and XSLT. And we&#8217;re working on expanding Anthologize&#8217;s action and filter hooks to allow for true pluggability in the manner of WordPress itself.</p>
<p>I&#8217;m hoping that Anthologize will be a useful tool that draws development interest from folks who might not otherwise be interested in WordPress or web development, especially those who are working in the academic, cultural heritage, and digital humanities worlds. Get involved by checking out our Github repository at <a href="http://github.com/chnm/anthologize">http://github.com/chnm/anthologize</a>, our development list at <a href="http://groups.google.com/group/anthologize-dev">http://groups.google.com/group/anthologize-dev</a>, or stop in and chat with the dev team at #oneweek or #anthologize-dev on freenode.</p>


<p>Related posts:<ol><li><a href='http://teleogistic.net/2010/08/anthologize-0-4-alpha-is-released/' rel='bookmark' title='Permanent Link: Anthologize 0.4-alpha is released'>Anthologize 0.4-alpha is released</a></li>
<li><a href='http://teleogistic.net/2010/05/new-buddypress-plugin-buddypress-group-email-subscription/' rel='bookmark' title='Permanent Link: New BuddyPress plugin: BuddyPress Group Email Subscription'>New BuddyPress plugin: BuddyPress Group Email Subscription</a></li>
<li><a href='http://teleogistic.net/2010/08/new-wordpress-plugin-simple-import-users/' rel='bookmark' title='Permanent Link: New WordPress plugin: Simple Import Users'>New WordPress plugin: Simple Import Users</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/08/introducing-anthologize-a-new-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/08/introducing-anthologize-a-new-wordpress-plugin/</feedburner:origLink></item>
		<item>
		<title>Unexpected leadership: preliminary thoughts on One Week | One Tool</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/6mgMBpOQNEY/</link>
		<comments>http://teleogistic.net/2010/07/unexpected-leadership-preliminary-thoughts-on-one-week-one-tool/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 22:46:48 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[One Week | One Tool]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=877</guid>
		<description><![CDATA[One Week &#124; One Tool just finished, and it proved to be among the most challenging and most rewarding weeks of my professional life. I have a feeling that I&#8217;ll need a few go-rounds to really decompress &#8211; if for no other reason than that the tool we produced isn&#8217;t being announced until Tuesday, so [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oneweekonetool.org">One Week | One Tool</a> just finished, and it proved to be among the most challenging and most rewarding weeks of my professional life. I have a feeling that I&#8217;ll need a few go-rounds to really decompress &#8211; if for no other reason than that the tool we produced isn&#8217;t being announced until Tuesday, so I can&#8217;t talk details &#8211; but I thought it&#8217;d be worthwhile to jot down some thoughts while they&#8217;re still fresh.</p>
<p>There&#8217;s much to blog about regarding my experience at One Week, much of which I&#8217;ll be able to divulge more fully after the veil of secrecy has been officially lifted. (Yikes! So secretive.) One of the things I <em>can</em> talk about now is the workflow of the team over the course of the week, something <a href="http://makinghistorypodcast.com/">Jana</a> has already discussed nicely in her blog.</p>
<div style="float: left">
<div id="attachment_878" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/07/IMG_0373.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/07/IMG_0373-300x225.jpg" alt="Whiteboard spoilers!" title="Whiteboard spoilers!" width="300" height="225" class="size-medium wp-image-878" /></a><p class="wp-caption-text">Whiteboard spoilers!</p></div>
</div>
<p>We arrived at <a href="http://chnm.gmu.edu">CHNM</a> with no idea what we were going to build over the course of the week. Monday was spent getting to know each other, hearing from the CHNMers about they develop and sustain open source software, and brainstorming ideas for our own project. By the end of the day Tuesday, the project had been decided and teams had been divided up. I didn&#8217;t sleep very well that night, both from excitement and from nerves: the tool we&#8217;d decided to build would rely on a set of technologies that would make me the de facto lead programmer.</p>
<p>And therein lies the first remarkable thing about the event. By many objective accounts &#8211; breadth and depth of knowledge and experience &#8211; I was, at best, the fifth or sixth most talented developer in the group. (Not trying to be overly humble here: one look at <a href="http://oneweekonetool.org/people">the One Week &#8220;People&#8221; page</a> and you can see that the deck was stacked with incredible talent, folks with whom I&#8217;m happy to be in even the same ballpark.) Differently-focused projects require different kinds of talent, and it so happened that this very focused project required just the sort of skills that I possess. So the first lesson I take away from One Week is that leadership doesn&#8217;t necessarily follow, or require, the greatest technical skill or experience. It might be that the notion of &#8220;best leader&#8221; reduces to &#8220;best leader right now&#8221;, which is to say that &#8220;best&#8221; is highly relative to particular needs and circumstances. It&#8217;s a realization that highlights how leadership roles are not (or maybe <em>should</em> not) be merit badges gifted to those who have &#8220;earned&#8221; them, but instead are necessary aspects of a structure &#8211; like the One Week crew &#8211; aiming to acheive an independent goal.</p>
<p>My second One Week lesson is closely related to the first: leadership doesn&#8217;t work without humility and trust. The way we built our tool was like digging the Chunnel: developers at home with one part of the tool&#8217;s functionality (like the British on British soil!) tunnelled toward developers who were digging from the other direction. I was in charge of making sure that the several tunnels met in the middle to make for a navigable whole. But, as you&#8217;d expect, there&#8217;s no way that one person (even one as dashing and wonderful as I am) could really <em>know</em> what was happening in all parts of the project at the same time. There were simply too many technical details to keep track of. Making sure that the tunnel got built, and our code got merged, meant putting a good deal of trust in the diggers, and accepting &#8211; even embracing &#8211; those moments when their work was beyond my ability to understand technically.</p>
<p>All this is to say nothing of the equally crucial folks who were not writing code, but we doing what we called &#8220;user experience&#8221; and &#8220;outreach&#8221;. In those cases even more trust was required: the dev team trusts the outreach team not to write checks that the code can&#8217;t cash; the UX team trusts the dev team to remain true to the needs of the end user; and so forth. Here too, in a less technical but no less accurate way, we were digging a tunnel from opposite directions. The outreach and UX teams were developing an increasingly detailed vision of what the tool needed to do, and the dev team was cranking out code that would fulfill that vision. There was a magical moment when, on Thursday afternoon, Jason and Scott from the UX team &#8211; coders by trade who had found themselves in a non-coding position in our particular development project &#8211; merged in a totally organic way with the dev team to flesh out some of the UX that they&#8217;d been conceptualizing for the previous two days. That too demonstrated a kind of trust between One Weekers, where team boundaries were mutable when circumstances required it, and no one blinked an eye when two more people started committing code to the repo.</p>
<p>Much more to come, I&#8217;m sure.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/07/unexpected-leadership-preliminary-thoughts-on-one-week-one-tool/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/07/unexpected-leadership-preliminary-thoughts-on-one-week-one-tool/</feedburner:origLink></item>
		<item>
		<title>Import From Ning now imports Ning content into BuddyPress</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/cItPBoV9B5Y/</link>
		<comments>http://teleogistic.net/2010/07/import-from-ning-now-imports-ning-content-into-buddypress/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 10:37:20 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[edtech]]></category>
		<category><![CDATA[buddypress]]></category>
		<category><![CDATA[ning]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=859</guid>
		<description><![CDATA[Back when Ning announced that it&#8217;d be cutting off previously free accounts, I took a weekend and developed Import From Ning, a plugin that helped users pull their Ning user and profile data into a WordPress or BuddyPress installation. It was my own little BuddyPress-fanboyish way of helping all those Ningsters. Several weeks ago, Ning [...]]]></description>
			<content:encoded><![CDATA[<p>Back when Ning announced that it&#8217;d be <a href="http://mashable.com/2010/04/18/ning-alternatives/">cutting off previously free accounts</a>, I took a weekend and developed <a href="http://teleogistic.net/code/wordpresswordpress-mu/import-from-ning/">Import From Ning</a>, a plugin that helped users pull their Ning user and profile data into a WordPress or BuddyPress installation. It was my own little BuddyPress-fanboyish way of helping all those Ningsters.</p>
<p>Several weeks ago, Ning released its <a href="http://help.ning.com/cgi-bin/ning.cfg/php/enduser/std_adp.php?p_faqid=3796">Ning Network Archiver</a>, which (finally) allowed network admins an easy way to take their content with them. On the heels of this release by Ning, today I am releasing version 2.0 of Import From Ning, which <strong>imports the content from a Ning Network Archive</strong>.</p>
<p><a href="http://teleogistic.net/code/wordpresswordpress-mu/import-from-ning/">Read more about the updated plugin here</a>. And to those Ningsters who are coming over to WordPress and BuddyPress: good on ya!</p>


<p>Related posts:<ol><li><a href='http://teleogistic.net/2010/04/more-import-to-ning-goodness/' rel='bookmark' title='Permanent Link: More Import from Ning goodness &#8211; ( Ning to BuddyPress / WordPress )'>More Import from Ning goodness &#8211; ( Ning to BuddyPress / WordPress )</a></li>
<li><a href='http://teleogistic.net/2010/04/importing-ning-users-into-wp/' rel='bookmark' title='Permanent Link: Importing Ning users into WP'>Importing Ning users into WP</a></li>
<li><a href='http://teleogistic.net/2010/03/new-buddypress-plugin-bp-import-blog-activity/' rel='bookmark' title='Permanent Link: New BuddyPress plugin: BP Import Blog Activity'>New BuddyPress plugin: BP Import Blog Activity</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/07/import-from-ning-now-imports-ning-content-into-buddypress/feed/</wfw:commentRss>
		<slash:comments>66</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/07/import-from-ning-now-imports-ning-content-into-buddypress/</feedburner:origLink></item>
		<item>
		<title>Honeymoon barbecue, part 2: the East</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/VlBdE0JCGhA/</link>
		<comments>http://teleogistic.net/2010/06/honeymoon-barbecue-part-2-the-east/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 11:47:06 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[etc]]></category>
		<category><![CDATA[barbecue]]></category>
		<category><![CDATA[Bessinger's]]></category>
		<category><![CDATA[Bum's]]></category>
		<category><![CDATA[honeymoon]]></category>
		<category><![CDATA[Hudson's]]></category>
		<category><![CDATA[North Carolina]]></category>
		<category><![CDATA[pork]]></category>
		<category><![CDATA[Skylight Inn]]></category>
		<category><![CDATA[smoke]]></category>
		<category><![CDATA[wedding]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=837</guid>
		<description><![CDATA[This post is the second of a two-part series about the barbecue my new wife and I ate on our honeymoon. For more explanation and more porky pix, see part 1: &#8220;The West&#8221;. JUNE 14: Hudson&#8217;s Smokehouse, Columbia, SC We&#8217;d just finished a stint in Eastern Tennessee, where we&#8217;d enjoyed some bodacious relaxation but no [...]]]></description>
			<content:encoded><![CDATA[<p><em>This post is the second of a two-part series about the barbecue my new wife and I ate on our honeymoon. For more explanation and more porky pix, <a href="http://teleogistic.net/2010/06/honeymoon-barbecue-part-1-the-west/">see part 1: &#8220;The West&#8221;</a>.</em></p>
<h2>JUNE 14: Hudson&#8217;s Smokehouse, Columbia, SC</h2>
<p>We&#8217;d just finished a stint in Eastern Tennessee, where we&#8217;d enjoyed some bodacious relaxation but no phenomenal barbecue. We knew we&#8217;d have to make up for it on this comparatively short stay in the Carolinas. Our first stop en route to Charleston was chosen largely for convenience&#8217;s sake: it was not too far off our course, and we&#8217;d be passing by around lunchtime (unlike some of the more well known SC barbecue joints), and they&#8217;d be open on a Monday afternoon (again, unlike some of the more traditional joints, which are often open Thurs-Sat only).</p>
<p>With these conditions in mind, a bit of internetting led us to <a href="http://www.hudsonssmokehouse.com/">Hudson&#8217;s Smokehouse</a>, which had gotten favorable reviews on the sites I&#8217;d checked. They had a lunch buffet that looked pretty good, but the idea all-you-can-eat fullness in the 100-degree heat followed by a few hours in the car didn&#8217;t strike us as the wisest dining decision. So we ordered off the menu: we each got the pork platter, and I got green beans and baked beans while Rebecca got sweet potato fries and collards.</p>
<div id="attachment_839" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0784.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0784-300x199.jpg" alt="Hudson&#039;s Smokehouse" title="Hudson&#039;s Smokehouse" width="300" height="199" class="size-medium wp-image-839" /></a><p class="wp-caption-text">Hudson's Smokehouse</p></div>
<p>Here&#8217;s the thing: OMG. One small bite of the pork and I was rushed back to our previous barbecue vacation, when we ate our way across North Carolina, hickory smoke coursing through our veins, on a kind of high that can only be sustained with two or three different barbecue joints every day for a week. It&#8217;s not so much that Hudson&#8217;s was the best pork ever, but it had all the trappings of the great barbecue: the smoky aftertaste, the balance of cider vinegar and Texas Pete&#8217;s, the salty outside brown. It was awesome. And the sides were very, very good as well, though the sweet potato fries didn&#8217;t stand up to the rest. Evidence:</p>
<div id="attachment_840" class="wp-caption alignnone" style="width: 209px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0787.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0787-199x300.jpg" alt="Hudson&#039;s, terminé" title="Hudson&#039;s, terminé" width="199" height="300" class="size-medium wp-image-840" /></a><p class="wp-caption-text">Hudson's, terminé</p></div>
<p>Nom nom nom.</p>
<h2>June 15: Bessinger&#8217;s Barbecue, Charleston, SC</h2>
<p>Charleston was blazing hot. Heat indices into the 110s. This is ideal weather for barbecue. Indeed, any weather is ideal weather for barbecue. We were in South Carolina, and we wanted some of the local stuff.</p>
<p>At Hudson&#8217;s the day before, the barbecue was Lexingtonesque, by which I mean that it was pork shoulder, served with a vinegar sauce that had just a bit of ketchup in it for color and sweetness. That&#8217;s how they do it in the western part of NC, centered around Lexington. When you talk about <em>South</em> Carolina barbecue, though, the mind usually goes to mustard sauce instead of ketchup. Charleston, from what I understand, is known for having a variety of native barbecue styles, but since we were in SC we wanted mustard, and my research told me to get it at <a href="http://bessingersbbq.com">Bessinger&#8217;s.</a></p>
<p>I got the pork plate, with baked beans and cole slaw. Bessinger&#8217;s is notable for throwing in an enormous onion ring with every meal as well. Let me tell you something about that onion ring: It was something else. Enormous and battered beyond recognition, it was hard to tell, even when looking closely, where the batter ended and the onion itself began. You know that problem you sometimes have where the onion and batter don&#8217;t stick to each other, and you end up pulling the whole (scorching hot) onion out on your first bite? At Bessinger&#8217;s, the onion and batter had truly become One. Was it the best onion ring I ever had? No. But I have to give them some real points for technique.</p>
<div id="attachment_841" class="wp-caption alignnone" style="width: 235px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/IMG_0328.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/IMG_0328-225x300.jpg" alt="Bessinger&#039;s" title="Bessinger&#039;s" width="225" height="300" class="size-medium wp-image-841" /></a><p class="wp-caption-text">Bessinger's</p></div>
<p>The barbecue was a bit disappointing. By itself, it had just a trace of smoky flavor, and not much of the salty fatness that would have to be present to make up for the relative lack of smoke. The mustard sauce on the table was too sweet for my liking, with none of the vinegary kick that, frankly, I expect even out of a bottle of Plochman&#8217;s. The cole slaw was a generic, mayonaissey, Midwestern affair. The beans were on the sweet side for my taste, but otherwise pretty well executed. Maybe I was coming off of a high from the day before and expecting too much, but with the exception of that exceptional onion ring, I walked away a bit disappointed.</p>
<p>For reasons related to heat and pork fatigue and the otherwise awesome food in Charleston, this was the last barbecue meal we had in South Carolina.</p>
<h2>June 17: Skylight Inn, Ayden, NC</h2>
<p>Unless you are on the way to the bustling burgs of Hookerton or Vanceboro, Ayden is not on the way to anything. After getting off of I-40 North 45 minutes north of Wilmington, we spent about an hour meandering the highways of the beautiful North Carolina countryside before we started seeing signs for the small town. And when I did see those signs, I felt the kind of excitement that an adult man, having outgrown birthdays and Easter baskets, doesn&#8217;t get to feel very often. For the second time in as many years, I was headed to the Skylight Inn.</p>
<div id="attachment_842" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0048.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0048-300x199.jpg" alt="Skylight Inn, capital of my heart" title="Skylight Inn, capital of my heart" width="300" height="199" class="size-medium wp-image-842" /></a><p class="wp-caption-text">Skylight Inn, capital of my heart</p></div>
<p>My first time at the Skylight was a very special day. We were near the beginning of our barbecue trip, and already I think we were doubting the wisdom of eating So Much Pork. We drove a long way for what we had described as the best barbecue there is, and we were a bit perplexed to find a shack with a faux rotunda and a huge billboard bragging about how Ayden was the barbecue capital of the world. The menu is three lines long: 1) Sandwich. 2) Platter (small, medium, large). 3) By the pound. The platter was a paper tray heaped with chopped pork and a bit of uninspiring slaw, and laid over the top was a slab of what I would describe as corn brick.</p>
<p>But: That pork.</p>
<div id="attachment_843" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/IMG_0354.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/IMG_0354-300x225.jpg" alt="That Pork, 2008" title="That Pork, 2008" width="300" height="225" class="size-medium wp-image-843" /></a><p class="wp-caption-text">That Pork, 2008</p></div>
<p>That first bite might have been the most delicious thing I ever tasted, either before or since. Fatty, smoky, and strewn with crispy little bits of skin &#8211; the cracklins. It was so good, I washed it down with a sandwich.</p>
<p>My return to the Skylight thus had a lot to live up to. And, as such things often turn out, it didn&#8217;t live up. Don&#8217;t get me wrong, the pork was good, but I think that our 3pm arrival meant that we got stuff that&#8217;d been sitting under the heat lamp a bit too long. Also, they&#8217;d gone a bit light on the salt. By the end of my sandwich this time around, I had figured out the amount of vinegar and salt that needed to be added to each bite to make it great. And then: I tasted a piece of the pound I&#8217;d gotten to go, to bring back to my brother in Brooklyn. It was better, like it&#8217;d been picked from a non-dried-out part of the pork pile.</p>
<div id="attachment_844" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0053.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0053-300x199.jpg" alt="Skylight Inn, 2010" title="Skylight Inn, 2010" width="300" height="199" class="size-medium wp-image-844" /></a><p class="wp-caption-text">Skylight Inn, 2010</p></div>
<p>Looking back now, I really want to go back to Skylight. Like, right this instant.</p>
<h2>June 17: Bum&#8217;s Restaurant, Ayden, NC</h2>
<p>Bum&#8217;s, like Skylight Inn, has no website. That&#8217;s the first good sign.</p>
<p>After leaving the Skylight, we headed downtown (about eight blocks) to Bum&#8217;s, a joint we&#8217;d missed on our previous pass through Ayden. It was awesome. Unlike the Skylight, there were multiple steam tables of various down-home sides. We got a couple of barbecue sandwiches, along with some butter beans, collards, and beef stew to share. Everything was excellent. The pork was arguably, on that day, better than Skylight&#8217;s, and was even better when topped with the stagnant-water-colored sauce kept in a repurposed glass ketchup bottle on our table. I remember that the collards in particular were outstanding, with a great balance of vinegar tang, smoked porkiness, and bitter greeniness.</p>
<div id="attachment_845" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0060.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0060-300x199.jpg" alt="Bum&#039;s" title="Bum&#039;s" width="300" height="199" class="size-medium wp-image-845" /></a><p class="wp-caption-text">Bum's</p></div>
<p>Bum&#8217;s was a great way to wrap up the barbecue-fueled portion of our honeymoon adventure. Now I&#8217;m just looking for another excuse to get myself to the Carolinas. Or, at least, to find some decent pork here in NYC.</p>


<p>Related posts:<ol><li><a href='http://teleogistic.net/2010/06/honeymoon-barbecue-part-1-the-west/' rel='bookmark' title='Permanent Link: Honeymoon barbecue, part 1: the West'>Honeymoon barbecue, part 1: the West</a></li>
<li><a href='http://teleogistic.net/2009/03/totonnos-burns-boone-mourns/' rel='bookmark' title='Permanent Link: Totonno&#8217;s burns, Boone mourns'>Totonno&#8217;s burns, Boone mourns</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/06/honeymoon-barbecue-part-2-the-east/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/06/honeymoon-barbecue-part-2-the-east/</feedburner:origLink></item>
		<item>
		<title>Making Userthemes work on WordPress 3.0</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/OANyK6SkhmU/</link>
		<comments>http://teleogistic.net/2010/06/making-userthemes-work-on-wordpress-3-0/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 11:18:26 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[dev.wpmued]]></category>
		<category><![CDATA[edtech]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[userthemes]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=834</guid>
		<description><![CDATA[Some friends of mine (Joe Ugoretz and Jim Groom) were chatting on Twitter yesterday about how Userthemes, the WPMU/MS plugin they rely on to allow user customizations of copied system themes, had broken with WordPress 3.0. I decided to take a look at it. After digging a little, I found the immediate cause, as well [...]]]></description>
			<content:encoded><![CDATA[<p>Some friends of mine (<a href="http://prestidigitation.commons.gc.cuny.edu">Joe Ugoretz</a> and <a href="http://bavatuesdays.com">Jim Groom</a>) were chatting on Twitter yesterday about how Userthemes, the WPMU/MS plugin they rely on to allow user customizations of copied system themes, had broken with WordPress 3.0. I decided to take a look at it. After digging a little, I found the immediate cause, as well as a workaround.</p>
<p>Please note that this workaround is very much <strong>a hack</strong>. It shouldn&#8217;t cause any security issues (see explanation below), but it will break the next time you upgrade WP.</p>
<p>Joe&#8217;s problem was that the plugin was only working for Super Admins. Administrators of single Sites could not copy new Userthemes, and they were redirected to the dreaded wp-admin/?c=1 when they tried to access the Edit Userthemes panel on the Dashboard. I figured it was a problem with permissions, and it was: all of those functions are triggered only for those users with the capability edit_themes, but for some reason only Super Admins, and not Administrators, were showing up as having that ability. (The weird thing &#8211; when I did a var_dump of WP Roles, I saw that Administrator *did* have edit_themes.) Maybe there&#8217;s some setting in WPMS that allows users to edit themes, but I couldn&#8217;t see it.</p>
<p>So the solution is to change the edit_themes check to something else.  switch_themes seemed like an obvious choice to me, since anyone with the ability to switch themes on a given blog would also have had the ability to edit themes on that same blog. So there shouldn&#8217;t be a security problem &#8211; only blog admins should have the ability to make userthemes.</p>
<p>You&#8217;ll need to modify the plugin, as well as a few lines in the WordPress core.</p>
<ol>
<li><strong>Back up.</strong> I&#8217;m not responsible for anything that goes wrong!</li>
<li>Open the userthemes.php file. (I&#8217;d link to it, but I can&#8217;t find it anywhere on the web. When I&#8217;m at a better internet connection, maybe I&#8217;ll upload a version for you to edit. Maybe someone out there has a copy to share.) Search for all instances of &#8216;edit_themes&#8217; and replace with &#8216;switch_themes&#8217;.</li>
<li>From your WP root directory, open wp-admin/theme-editor.php. On line 12, change &#8216;edit_themes&#8217; to &#8216;switch_themes&#8217;.</li>
<li>From your WP root directory, open wp-admin/menu.php. On line 173, change &#8216;edit_themes&#8217; to &#8216;switch_themes&#8217;.</li>
</ol>
<li>This should restore the basic functionality of Userthemes (though Joe says that there&#8217;s still some bugginess &#8211; if you can&#8217;t access the Edit Userthemes from the main Dashboard page, try going to the Userthemes panel first). I must repeat that this is an ugly hack, and I&#8217;m hoping that someone smarter than me will step in and tell me why this is happening in the first place.</li>


<p>Related posts:<ol><li><a href='http://teleogistic.net/2009/07/making-sitewide-tags-work/' rel='bookmark' title='Permanent Link: Making Sitewide Tags work'>Making Sitewide Tags work</a></li>
<li><a href='http://teleogistic.net/2009/08/sitewide-tag-suggestion-in-wordpress-mu-2-8/' rel='bookmark' title='Permanent Link: Sitewide Tag Suggestion in WordPress MU 2.8+'>Sitewide Tag Suggestion in WordPress MU 2.8+</a></li>
<li><a href='http://teleogistic.net/2010/05/setting-up-a-wordpressbuddypress-development-environment-on-os-x/' rel='bookmark' title='Permanent Link: Setting up a WordPress/BuddyPress development environment on OS X'>Setting up a WordPress/BuddyPress development environment on OS X</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/06/making-userthemes-work-on-wordpress-3-0/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/06/making-userthemes-work-on-wordpress-3-0/</feedburner:origLink></item>
		<item>
		<title>Honeymoon barbecue, part 1: the West</title>
		<link>http://feedproxy.google.com/~r/Teleogistic/~3/MUCt3Ka2m_8/</link>
		<comments>http://teleogistic.net/2010/06/honeymoon-barbecue-part-1-the-west/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 04:52:11 +0000</pubDate>
		<dc:creator>Boone Gorges</dc:creator>
				<category><![CDATA[etc]]></category>
		<category><![CDATA[barbecue]]></category>
		<category><![CDATA[Bennett's]]></category>
		<category><![CDATA[Dinosaur]]></category>
		<category><![CDATA[honeymoon]]></category>
		<category><![CDATA[rbg10]]></category>
		<category><![CDATA[Ridgewood]]></category>
		<category><![CDATA[wedding]]></category>

		<guid isPermaLink="false">http://teleogistic.net/?p=811</guid>
		<description><![CDATA[I got married a few weeks ago: Afterwards I went on a honeymoon with my lovely bride through the southeastern US. Unlike a North Carolina vacation we took a few years ago, the focus of this trip was not barbecue. That said, we still had quite a few good barbecue meals. (I mean, it&#8217;d be [...]]]></description>
			<content:encoded><![CDATA[<p>I got married a few weeks ago:</p>
<a href="http://teleogistic.net/wp-content/uploads/2010/06/wedding.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/wedding-225x300.jpg" alt="" title="wedding" width="225" height="300" class="size-medium wp-image-812" /></a>
<p>Afterwards I went on a honeymoon with my lovely bride through the southeastern US. Unlike a North Carolina vacation we took a few years ago, the focus of this trip was not barbecue. That said, we still had quite a few good barbecue meals. (I mean, it&#8217;d be a downright sin to go through North Carolina without stopping at some of the shacks.) Without any further ado, then, here is a retrospective of my wedding and honeymoon through the lens of smoked meats. Part 1, appearing here, deals with what I&#8217;ll call &#8220;the West&#8221; &#8211; or more specifically, barbecue in the style of the west-of-the-Appalachians, which dominated the first part of our trip. Part 2, &#8220;the East&#8221;, will come later in the week.</p>
<h2>June 5, the wedding day: Dinosaur Bar B Que, Syracuse, NY</h2>
<p>When Rebecca and I decided to tie the knot (and to celebrate with a real party instead of eloping), the first thing we decided was that we wanted to have extremely awesome food at the wedding reception. Since the in-laws live near Syracuse, the home of <a href="http://www.dinosaurbarbque.com">Dinosaur Bar B Que</a> &#8211; a joint that we&#8217;ve enjoyed very much both in Syracuse and here in NYC &#8211; it seemed a perfect fit. Dinosaur brought out a smoker rig:</p>
<div id="attachment_818" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC08582.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC08582-300x225.jpg" alt="Smoker" title="Smoker" width="300" height="225" class="size-medium wp-image-818" /></a><p class="wp-caption-text">Smoker</p></div>
<p>The menu was ribs, pulled pork and chicken for the meats. For sides, we had baked beans, cole slaw, and macaroni salad. Unfortunately, I don&#8217;t have a lot of great pictures of the food &#8211; everyone seemed to be too anxious to eat it to be able to take good pictures, and I haven&#8217;t gotten the files from the photographer yet &#8211; but here are a few pictures I could scrounge up. My own take on Dinosaur, and this meal in particular, is that their ribs (the meaty St Louis cut) are really top-notch, the best I&#8217;ve had here in NYS. The sauce is a traditional KC-style tomato sauce. Dinosaur also provided a spicier sauce with a bit of mustardiness that went well with their unsauced pulled pork.</p>
<div id="attachment_820" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC08597.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC08597-300x225.jpg" alt="Dinosaur" title="Dinosaur" width="300" height="225" class="size-medium wp-image-820" /></a><p class="wp-caption-text">Dinosaur</p></div>
<p>I&#8217;ll leave it to some of my gentle readers who were in attendance to give more feedback on the quality of the food. IMO it was pretty effin good for wedding grub.</p>
<h2>June 9: Ridgewood Barbecue, Bluff City, TN</h2>
<p>We spent a few days in Washington, DC near the beginning of the honeymoon, and from there we traveled to eastern Tennessee and the foothills of the Smoky Mountains. Knowing we&#8217;d be traversing the whole diagonal of Virginia, I pinged my SW VA pal <a href="http://twitter.com/clioweb">Jeremy</a> for a recommendation. Before he had the time to respond, my research had led to the same recommendation that <a href="http://twitter.com/clioweb/status/15787909188">he ended up delivering</a>: <a href="http://www.knoxviews.com/node/1256">Ridgewood Barbecue</a>, just inside of Tennessee. We knew we had entered the South when a fellow in the parking lot gave us the unsolicited advice to try the beef, even if we normally preferred pork barbecue.</p>
<div id="attachment_822" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0432.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0432-300x199.jpg" alt="Ridgewood" title="Ridgewood" width="300" height="199" class="size-medium wp-image-822" /></a><p class="wp-caption-text">Ridgewood</p></div>
<p>This is an appropriate place for me to step back and make some commentary on barbecue snobbishness. I grew up in northeastern Wisconsin, an area that might excel in venison summer sausage and fried cheese curds but has little in the way of local barbecue. As a result, I haven&#8217;t been raised with any deep prejudices about the nature of barbecue: that it must be pork, that it must be smoked over hickory, that it must not have tomato in the sauce, what have you. While I can&#8217;t out-and-out claim that I&#8217;m glad I grew up not eating barbecue, I can say that a pleasant side effect of my barbecueless youth is that I&#8217;m willing to take it on its own terms. (As an aside, I think I enjoy a similar position with respect to pizza, though living in Brooklyn for the better part of a decade has probably warped me a bit.) This is in stark contrast to other barbecue fanatics whose rantings I have so often come across on the web, whose hearts and hatches are closed to a large portion of the wonders that the world of smoked meats has to offer. I feel sad for them.</p>
<p>And I feel glad that I was able to take the gentleman&#8217;s advice seriously, and order both beef and pork barbecue sandwiches at the Ridgewood. That&#8217;s because, while the pork (unusual in that it&#8217;s sliced ham, rather than chopped or pulled shoulder) was really delicious, it was a bit overwhelmed by the amount and the character of the sauce on the sandwich. The sauce is a weird mix of a couple of different styles: far more tomatoey body and sweetness than a Carolina sauce, far more vinegary tang than a Western sauce. Really good, but too much for the relatively delicate pork. (Order it on the side, if you can.) The beef, however, was really something to behold. A huge beefiness and a punch of smoke flavor punched through the sauce. It was awesome. And the sides were pretty great too, especially the baked beans: with more onion and peppers than you expect in barbecue beans, these were possibly the best baked beans I ever had. Perfect balance of sweetness and spice. Worth the trip in themselves, really.</p>
<div id="attachment_825" class="wp-caption alignnone" style="width: 310px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0435.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/DSC_0435-300x199.jpg" alt="Ridgewood beef" title="Ridgewood beef" width="300" height="199" class="size-medium wp-image-825" /></a><p class="wp-caption-text">Ridgewood beef</p></div>
<p>The second clue that we were really in the South was when the waitress, without asking, brought enormous styrofoam cups of soda to the table as we were finishing our food &#8211; &#8220;refills to go&#8221;, she said. Wowza.</p>
<h2>June 10: Bennett&#8217;s BBQ, Pigeon Forge, TN</h2>
<p>As I said above, the honeymoon was not intended to focus on barbecue. If it had been, we wouldn&#8217;t have travelled to eastern TN, which is not to the best of my knowledge particularly well known for its barbecue. That said, we did drive past a number of places bragging about their ribs (pandering to northern tourists, maybe?), so we decided to succumb. A bit of research showed that <a href="http://www.bennettsbbq.com/index.shtml">Bennett&#8217;s</a> was perhaps the most reliable in the area.</p>
<p>Rebecca got the baby-back rib meal, and I got a platter with brisket, pulled pork, and ribs. I was not expecting much from the mini-chain and its Applebeeesque decor, but I was pleasantly surprised. The St Louis ribs, which were sauced with a mercifully light hand, had enough meat on them to see (and taste!) the smoke ring. The pulled pork (again, unsauced &#8211; thank you!) was even better: after the initial sweetness of the pork fat, a very nice smokiness took over. And they weren&#8217;t stingy with the burnt ends (or outside brown, or whatever you want to call the brown stuff on the outside of the shoulder). You can see a strip of it in the picture below:</p>
<div id="attachment_827" class="wp-caption alignnone" style="width: 235px"><a href="http://teleogistic.net/wp-content/uploads/2010/06/IMG_0317.jpg"><img src="http://teleogistic.net/wp-content/uploads/2010/06/IMG_0317-225x300.jpg" alt="Bennett&#039;s" title="Bennett&#039;s" width="225" height="300" class="size-medium wp-image-827" /></a><p class="wp-caption-text">Bennett's</p></div>
<p>The brisket was disappointing, especially coming from the incredible beef experience we&#8217;d had the previous day at the Ridgewood. The fat was gristly, the meat was underseasoned, and there wasn&#8217;t much in the way of smoke flavor. As for sides: as at the Ridgewood, the standout was the dish of baked beans. The beans were very straightforward and traditional, but really nicely executed, with a bit of smoke, a bit of sweet, and beans that didn&#8217;t have the texture cooked out of them.</p>
<p>It&#8217;d be a few more days before we traversed the Great Smokies and managed another barbecue meal. But that&#8217;s a subject for another post.<br />


<p>Related posts:<ol><li><a href='http://teleogistic.net/2010/06/honeymoon-barbecue-part-2-the-east/' rel='bookmark' title='Permanent Link: Honeymoon barbecue, part 2: the East'>Honeymoon barbecue, part 2: the East</a></li>
<li><a href='http://teleogistic.net/2009/03/totonnos-burns-boone-mourns/' rel='bookmark' title='Permanent Link: Totonno&#8217;s burns, Boone mourns'>Totonno&#8217;s burns, Boone mourns</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://teleogistic.net/2010/06/honeymoon-barbecue-part-1-the-west/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://teleogistic.net/2010/06/honeymoon-barbecue-part-1-the-west/</feedburner:origLink></item>
	</channel>
</rss>
