In a WordPress multisite installation, users were customizing their meta box configuration in the Screen Options tab (including boxes for various plugins) and having the settings disappear[^1][^2] between sites because WPMS has per user–not per user, per site–options for customizing the Dashboard and Screen Options.
I ended up writing the following plugin to create a series of shadow screen options for each user. This is reasonable on multisite installs with a finite number of users and blogs. If you are not concerned with the number of rows added per user, per blog, then this will allow your users to set Screen Options on a per blog basis. This is especially relevant on multisite installs where blogs have different uses and the active plugin set differs between blogs. Screen Options for plugin-generated meta boxes will be saved on a per site basis for each user, allowing them to retain their Add New/Edit Post appearance on each separate blog.
[Shadow Screen Options](http://wordpress.org/extend/plugins/shadow-screen-options/)
[^1]: [Per user screen options overwrite per site custom meta boxes](http://wordpress.org/support/topic/per-user-screen-options-overwrite-per-site-custom-meta-boxes)
[^2]: [Screen options and meta box settings can lose per-blog meta box positions](http://core.trac.wordpress.org/ticket/17370)
The serving of static image files by `ms-files.php` can be problematic with some server setups, especially those that are using nginx to serve static files. I wrote the following to deal with uploaded files in situations where I don’t care about masking the actual location of the images.
Continue reading Unmask file locations in a WordPress multisite installation
I love [Ozh’ Tweet Archiver](http://planetozh.com/blog/my-projects/ozh-tweet-archiver-backup-twitter-with-wordpress/)–it just works, which is an awesome feature. However, a few months ago I noticed that my tweets were being scheduled instead of posted. This problem has nagged at me for awhile, and I figured it was an issue with my server (me on the East Coast, my server on the West Coast, and GMT/UTC somewhere else), until I read [this comment on the Tweet Archiver page](http://planetozh.com/blog/?page_id=1528&cp=2#comment-126102) describing exactly the behavior I was experiencing.
Continue reading Filter tweet timestamp in Ozh’ Tweet Archiver to match blog’s specified GMT offset
Given an array of post data to insert or update, it is easy to add a Post Format to the taxonomy array (similar to the `category` or `post_tag` data). The following assignments can be using in a conditional statement to automatically attach a Post Format to a saving post.
Continue reading Add post formats to the $post array
I’m currently using Theme Hybrid as a parent theme and have been exploring the internals with an eye to using WordPress 3.1’s new Post Formats for a lot of my content. I import my tweets from [Twitter](http://twitter.com/) via [Ozh’ Tweet Archiver](http://wordpress.org/extend/plugins/ozh-tweet-archiver/); I import my bookmarks from [Delicious](http://www.delicious.com/) via [FeedWordPress](http://wordpress.org/extend/plugins/feedwordpress/). These imported posts were previously stored in Custom Post Types, but Post Formats seem like a better fit, especially with the [hoops I jumped through](http://bajada.net/2010/10/12/custom-post-types-in-the-loop-using-pre_get_posts-refined) to get them to appear in The Loop.
The following explores options in Theme Hybrid for using a child theme to create custom Post Formats.
Continue reading Add post format support to Theme Hybrid via child theme
Third verse, almost the same as the first.
Using `request` data means that requests that end up with a 404 or are a search produce weird results with navigation menus, among other oddities. So I’m back to using `pre_get_posts` to include custom post types, with a few refinements.
Continue reading Custom Post Types In The Loop: Using `pre_get_posts`, Refined
I’m a sucker for custom post types, and also for archiving my tweets. [Ozh’ Tweet Archiver](http://planetozh.com/blog/my-projects/ozh-tweet-archiver-backup-twitter-with-wordpress/) hits the sweet spot between form and function; I added this filter to my `functions.php` so that I could keep tweets separate from posts without having to build a new blog.
Continue reading Set custom post type and taxonomy terms with Ozh’ Tweet Archiver
I’m currently testing out a new version of my code to include custom post types in The Loop. So far, I haven’t found any functional differences. I’d like to do some things with post type archives and a possible `is_type()` function that would make my life easier when working with theme development, hence the change. I’m also trying out `any` instead of an array of post types.
Continue reading Custom Post Types In The Loop: Using `request` Instead Of `pre_get_posts`
I’m currently using custom post types and taxonomies extensively on this site, so it is very important to me to be able to see how I have catalogued a post, as well as being able to single out specific post types with a given taxonomy term while editing. The ideal place for this to happen is in the Admin Edit page.
The following set of functions grabs a list of available taxonomies for a given `post_type` and automatically adds columns to the Edit pages. This updated version does not have column information that disappears after using the Quick Edit AJAX on the Edit page. In addition, I’ve updated the taxonomy term links to actually work as filters on taxonomy and term.
Continue reading Add taxonomy columns to admin Edit pages
The native WordPress functions [`wp_get_object_taxonomies`](http://codex.wordpress.org/Function_Reference/get_object_taxonomies), [`wp_get_object_terms`](http://codex.wordpress.org/Function_Reference/wp_get_object_terms), and [`get_the_term_list`](http://codex.wordpress.org/Function_Reference/get_the_term_list) can be used to create a generic function to list of all taxonomies and terms of any custom post type.
Continue reading List a post type object’s terms and taxonomies