# Eric Juden > Developer, Husband and Father ## Posts - [Stop the Swamp: Which RV Waste Valve Actually Works? (Valterra vs. Camco)](https://ericjuden.com/2026/06/stop-the-swamp-which-rv-waste-valve-actually-works-valterra-vs-camco/) - [Digital Signage](https://ericjuden.com/2016/07/digital-signage/) - [Gone Fishing](https://ericjuden.com/2016/07/gone-fishing/) - [Syncing Atom Packages and Themes Across Multiple Devices](https://ericjuden.com/2015/08/syncing-atom-packages-and-themes-across-multiple-devices/) - [WordPress Options Class with JSON Support](https://ericjuden.com/2014/02/wordpress-options-class-with-json-support/) - [Add Custom Scripts to Your PowerShell Profile](https://ericjuden.com/2014/01/add-custom-scripts-to-your-powershell-profile/) - [January WordPress St. Louis Developers Meetup](https://ericjuden.com/2014/01/january-wordpress-st-louis-developers-meetup/) - [Moving On](https://ericjuden.com/2013/08/moving-on/) - [March WordPress St. Louis Developers Meetup](https://ericjuden.com/2013/03/march-wordpress-st-louis-developers-meetup/) - [February WordPress St. Louis Developers Meetup Notes](https://ericjuden.com/2013/02/february-wordpress-st-louis-developers-meetup-notes/) - [Adding a Rank Column to an ASP.NET GridView](https://ericjuden.com/2013/01/adding-a-rank-column-to-an-asp-net-gridview/) - [New Plugin: Speak Pirate](https://ericjuden.com/2013/01/new-plugin-speak-pirate/) - [WordPress St. Louis Developers Meetup Notes](https://ericjuden.com/2013/01/wordpress-st-louis-developers-meetup-notes/) - [First Snow of Winter](https://ericjuden.com/2012/12/first-snow-of-winter/) - [Object-Oriented Plugins for WordPress](https://ericjuden.com/2012/12/object-oriented-plugins-for-wordpress/) - [Keyboard Shortcuts on the Mac](https://ericjuden.com/2012/12/keyboard-shortcuts-on-the-mac/) - [Edit Post Author Name in WordPress Feeds](https://ericjuden.com/2012/09/edit-post-author-name-in-wordpress-feeds/) - [Custom Taxonomy Control for the Theme Customizer](https://ericjuden.com/2012/08/custom-taxonomy-control-for-the-theme-customizer/) - [Extending Hide Inactive Sites Plugin](https://ericjuden.com/2012/08/extending-hide-inactive-sites-plugin/) - [Style Stripper Plugin](https://ericjuden.com/2012/06/style-stripper-plugin/) - [Allowing Editors to Clear the Cache using Quick Cache](https://ericjuden.com/2012/05/allowing-editors-to-clear-the-cache-using-quick-cache/) - [WordPress Workflow Plugin in the Works](https://ericjuden.com/2012/04/wordpress-workflow-plugin-in-the-works/) - [WordPress Options Class](https://ericjuden.com/2012/03/wordpress-options-class/) - [New WordPress Plugin: Hide Inactive Sites](https://ericjuden.com/2012/02/new-wordpress-plugin-hide-inactive-sites/) - [New Plugin: Reorder My Sites](https://ericjuden.com/2012/01/new-plugin-reorder-my-sites/) - [WordPress Multisite Suggestions](https://ericjuden.com/2012/01/wordpress-multisite-suggestions/) - [Google Contacts' Birthdays in Google Calendar](https://ericjuden.com/2011/12/google-contacts-birthdays-in-google-calendar/) - [WordPress: Get All Users Having a Specific Role](https://ericjuden.com/2011/12/wordpress-get-all-users-having-a-specific-role/) - [New WordPress Multisite Plugin in the Works](https://ericjuden.com/2011/12/new-wordpress-multisite-plugin-in-the-works/) - [Getting Nostalgic](https://ericjuden.com/2011/12/getting-nostalgic/) - [Google Docs for Android](https://ericjuden.com/2011/09/google-docs-for-android/) - [Beautiful Sky](https://ericjuden.com/2011/06/beautiful-sky/) - [Besties!](https://ericjuden.com/2011/06/besties/) - [Camp at Johnson Shutins](https://ericjuden.com/2011/05/camp-at-johnson-shutins/) - [Soaked Boots](https://ericjuden.com/2011/05/soaked-boots/) - [St. Louis Wordpress Users Group](https://ericjuden.com/2010/06/st-louis-wordpress-users-group/) - [WordPress 3.0 and Menu Dropdown Box](https://ericjuden.com/2010/05/wordpress-3-0-and-menu-dropdown-box/) - [iPhone 3G Dropping Calls](https://ericjuden.com/2009/12/iphone-3g-dropping-calls/) - [Piwik Analytics](https://ericjuden.com/2009/10/piwik-analytics/) - [Wordpress MU List Blogs](https://ericjuden.com/2009/08/wordpress-mu-list-blogs/) - [Newsletter Converter 1.0.6 Released](https://ericjuden.com/2009/08/newsletter-converter-1-0-6-released/) - [jQuery Image Resize](https://ericjuden.com/2009/07/jquery-image-resize/) - [HttpWebRequest and Multiple Files](https://ericjuden.com/2009/06/httpwebrequest-and-multiple-files/) - [Achieving Your Childhood Dreams](https://ericjuden.com/2009/06/achieving-your-childhood-dreams/) - [Core Values](https://ericjuden.com/2009/06/core-values/) - [New Site](https://ericjuden.com/2009/05/new-sit/) - [FLV 404 Error on Windows Server 2003](https://ericjuden.com/2008/09/flv-404-error-on-windows-server-2003/) - [Windows Mobile Event Viewer - First Release](https://ericjuden.com/2008/04/windows-mobile-event-viewer-first-release/) - [Windows Mobile Event Viewer](https://ericjuden.com/2008/02/windows-mobile-event-viewer/) # # Detailed Content ## Posts - Categories: RV Life - Tags: black-tank-valve, gate-valve, product-recommendation, review, rv, sewer After 6 years in the camper life, there’s one topic that always seems to generate mild panic for me: draining your tanks . It's an essential part of the experience, but it can turn into a gross headache if you don't have the right gear. This year, things got real. We snagged ourselves a new 2025 Rogue Armored 4007G2, and on day one, we opened up the waste tank cap—only to be met with... water. (thankfully) I knew immediately I needed a reliable gate valve to keep me from that scenario ever again. My search led me down a rabbit hole of reviews, eventually landing on the Valterra T58 Twist-On Waste Valve. At first glance, it looked solid and promised the job would be done easily. But here’s where the trouble started. I noticed right away that the gate valve moved separately from the main attachment point. I figured, "Eh, whatever, maybe that's a feature. " I was wrong. It made hooking up the sewer hose an awkward struggle, and worse—it eventually proved to be leaking at the very connection point. Watching it fail on my first use taught me one thing: looks don’t always equal reliable. You can see the failure here: https://youtube. com/shorts/MKXA7Zf3Kc4? feature=share Needless to say, the search continued. My search ended once I found the Camco RV Gate Valve. And holy cow; it was exactly what I needed. Camco RV Gate Valve - image from amazon. com listing The Camco not only felt solid and easy... - Categories: In the Trenches - Tags: digital-signs, signage, tv My current employer recently gave me the task of helping to set up a digital sign network across our warehouses. I've had some prior signage experience from Maryville University using FourWinds Interactive. While there, I wanted to check out the Concerto Digital Signage Project and never had the chance. Our setup is much smaller than Maryville, but Concerto seems to work great! FourWinds was all Windows-based, and Concerto is actually a Linux distro built to connect to a web-based sign servers (also Linux-based... Debian, I believe). When you fire up one of the signage computers it boots up a Chromium browser and wants you to point the computer to your digital sign server's URL. After supplying that, it will give you a token to enter on the server and voila! You're new sign is in business. Anyway, it's a pretty neat project and if you need to check one out, I'd recommend trying out Concerto. - Categories: Life on the Homefront - Tags: fishing, kayak, outdoors - Formats: Image Had fun fishing in the lake near my house today. I met up with a couple of neighbors and caught an 8" bass. I know, not much to brag about, but we had fun in the kayaks. This picture was actually in the creek north of the lake. We went up probably a half a mile and made our way back eventually. - Categories: In the Trenches - Tags: atom, git, packages, sync, syncing, text-editor, themes As a web developer, I'm always on the search for better tools. I've been watching Atom (the text editor from GitHub) closely and recently have starting checking it out again. Atom has tons of packages (plugins) and themes available. One of the hard things between home and work is trying to keep those packages synced between my devices. Fortunately, there's an easy way to do so. Setup a Git repository on a public Git hosting site (bitbucket or github). I prefer bitbucket, because you can make free, private repositories. I called my repository atom-user-packages. Go into your user directory on your computer and find the . atom directory. You have to open Atom for this to be generated if this is your first time using Atom. Go into the packages folder and initialize a new Git repository. Follow along with the directions for mapping up your remote repository (on bitbucket or github). Commit your changes and push to the remote repository. Now go to your other devices and delete the packages directory and replace it with your Git repository... also naming the new directory packages. Profit! Cool, What's the Catch? The only downside I've seen with doing this, is I receive an error every time I open a new Atom window. It's complaining about the ". git package" inside of the packages directory. Not a deal breaker for me for the benefit you gain doing this. You can dismiss this message and go on with your lives. Happy Coding! - Categories: In the Trenches - Tags: code, json, options, wordpress, wordpress-code, wordpress-plugins, wordpress-themes A while back I had an article title: WordPress Options Class, which was my way of accessing and storing options in WordPress for some of the plugins that I create. After using WordPress for some time now it's become apparent that storing options in a serialized array in the database is not the best way to do things. I've updated my options class to now save the options going forward as JSON. My hope is that other developers will start to do the same. Why Do It This Way? At my previous job, there were several times I had to go into some other plugin's database tables and update a serialized string because some value on our end changed and there was no way to update it through the UI. Using JSON, makes those sorts of changes much easier. Notes Using this will allow your options to still be stored as a serialized array, but the next time you save them using this class, the serialized array will be changed to JSON. The Code https://gist. github. com/ericjuden/9256827 - Categories: In the Trenches - Tags: code, powershell, windows, windows powershell I've recently started doing some work with Windows PowerShell. One problem I wanted to solve was placing my scripts in source control and having them in a non-standard folder. Below is a bit of code you can put in your Microsoft. PowerShell_profile. ps1 file to look for all . ps1 files in a given directory. Just be sure to change the folder in the code below to your PowerShell code folder and all will be good. https://gist. github. com/ericjuden/8678297 - Categories: In the Trenches - Tags: developers, development, http-api, meetup, web-requests, wordpress, wpstl This month was a brief presentation on using the WordPress HTTP API to make web requests within WordPress. https://docs. google. com/presentation/d/1gMqibvqqvxSK-GVAjynO5U9iLuSuHJdTGO_DhJ4awFU/pub? start=false&loop=false&delayms=3000 - Categories: In the Trenches Well, my time at Maryville University is coming to an end. Friday will be my last day and I'll be starting back with my previous employer EPC, Inc. on Monday! I'll be a Senior Application Developer over there and working again with my twin brother, Alan. It's an exciting and nerve-wracking time! Not so much WordPress work anymore, although, I'm sure I'll still do some on the side. It'll be back to C# for me now! - Categories: In the Trenches - Tags: developers, development, meetup, St. Louis, wordpress, wpstl This month, I presented on the WordPress database and discussed the tables, how to use the wpdb class and how to create your own custom tables. You can view the presentation here: https://docs. google. com/presentation/d/15cHwa2Kt2UMMzYNvg1pdoMAqE60X3kCnroUUU-mLwfc/pub? start=false&loop=false&delayms=3000 Other Things Mentioned I mentioned that everyone interested should try taking the WordPress quiz from Code Poet. People want a re-poll for the best Monday of the month Next month's topic will be Enterprise Deployment and Setup (a round table discussion about our experiences) An interesting idea that I hadn't though of was instead of storing serialized data in the database, store it as JSON instead. I'm going to do some research on this. - Categories: In the Trenches - Tags: developers, development, meetup, St. Louis, wordpress, wpstl The second every St. Louis WordPress developers meetup has come to a conclusion. Here are some notes that I took during the meetup. Security Best Practices Discussion Basics Don't use admin as your default username Change the default table prefix to something unique Consider moving your wp-config. php outside of your website root folder In code, check user permissions before running actions or even displaying the page See current_user_can Sanitize database inputs See $wpdb->prepare Security Plugins to Check Out File Monitor Plus (No longer available) File Monitor (No longer available) Better WP Security WordFence Block Bad Queries Bulletproof Security IPVenger Other Security-related Discussion I can see this turning into a total flame war, but choosing another cms because it isn't used as much for added security. For example, choosing Drupal over WordPress since WordPress is targeted for attacks more because it is more widely used. Again, I'm not trying to start a flame war, just adding this to the list since someone mentioned it. Side note: this is totally how I feel about the Windows vs. Mac debate for security. Windows has more vulnerabilities because there are more people to harm by looking for vulnerabilities on Windows. You can affect a larger percentage of people by going with the big dog. Group Project We talked last month about possibly working on a group project together for the hell of it. Some ideas were thrown out for plugins: Forums Wiki Project management system Picking up an abandoned plugin Writing blog content... - Categories: In the Trenches - Tags: asp.net, c#, code, gridview, rank I recently had the task of working on a leaderboard for a project at work. I used ASP. NET for the project and found I was having problems getting the rank to work correctly when the gridview went to the next page of results. To correct this, I hooked into the GridView. PageIndexChanging event. https://gist. github. com/4655906 - Categories: General Nonsense, In the Trenches - Tags: php, pirates, shortcode, translate, wordpress, wordpress-code, wordpress-plugins Argh mateys! Shiver me timbers! Sometimes it feels good to step out of your normal coding routine and do something a little different. Yesterday, @arod2634 posted this tweet: https://twitter. com/arod2634/status/291929986867277824 One of the APIs listed was a pirate translation api that would take English and turn it into the equivalent as a pirate would say it. What better way to put it to use then make a WordPress plugin out of it: Speak Pirate. This new plugin be hot off yonder press and working hard to convert ye plain text into pirate jargon. Simply use ye new shortcode around ye text you want translated and it shall be done. Text to translate goes here Enjoy, ye land lubbers! Hungry For More Information? Here is the commented code: https://gist. github. com/4655963 - Categories: General Nonsense, In the Trenches - Tags: developers, development, meetup, St. Louis, wordpress Tonight marks the first night of a meetup in St. Louis for WordPress developers! I know, exciting times right? Tonight's meeting was more of a planning meeting for the future of the group. When and where will we meet in the future? It was suggested that we meet at 6:30 instead of 6 pm. We are going to post another poll for the group to figure out the optimal week for the meetup. Apparently the STL Ruby group meets on the 2nd & 4th Monday of the month. And the regular WordPress meetup group meets the 3rd Wednesday of the month. I think the consensus is to stay with Mondays, just figure out the best week for it. The location will stay as Integrity Corporation for the time being. Suggested Topics for Group Discussion/Presentation Theme review Code review Enterprise deployment and setup How to create a plugin from scratch Security best practices Speed optimization for WordPress Discuss your development environment (how do you make your WordPress magic happen) What tools do we use? (IDE and other useful tools) Testing environment (PHPUnit, etc) Actions and filters Rewrite Endpoints Using WordPress as a service (REST, XML-RPC) Advanced Custom Fields Database/table management best practices Exploring the WordPress database (talk about the tables and how they tie together) Other Stuff We also talked about working on plugins/themes together as a group. And we talked about creating an organization on GitHub to host the code. I'm really excited to see what we come up with... - Categories: In the Trenches - Tags: object-oriented, php, wordpress, wordpress-plugins, wordpress-themes Making your WordPress plugins (and themes for that matter) object-oriented definitely has it's benefits; most notably not running into naming conflicts with other functions. You are essentially creating a new workspace for your functions to live and could have the same function name as found in the WordPress core. How to Get Started? https://gist. github. com/4656024 Plugin Declaration The first part of the code is your plugin declaration in the commented out lines. This is required by WordPress! Class Declaration You will have to create a unique class name for your plugin. Once you've figured out what to call it, you'll want to add a __construct function to it. This is typically where I will put all of my actions and filters, along with any special initialization code for my plugin. Actions and Filters This line may look a little different from normal add_action and add_filter calls. For our second parameter, instead of passing a string for our function name, we are passing an array containing our class object, $this, and the corresponding function in our class, admin_init. The function name is arbitrary; it could be erics_super_awesome_admin_function for all WordPress cares. I typically name my function the same thing as the action or filter for clarity on my end. It seems easier to find things that way to me, and I know precisely when it's going to happen. Instance of Class This is a major step. If you forget this, your plugin (or theme) won't work. We have to create... - Categories: In the Trenches - Tags: keyboard, linux, mac, pc, rant, shortcuts A coworker and I recently decided to try switching to the Mac from Windows 7. We have been using Mac hardware and have just used Bootcamp to run Windows 7. I feel I've been adjusting fine so far except for the keyboard shortcuts! As a developer, I spend a lot of time working with text editors/development studios. I'm unsure why Apple feels it has to be different when it comes to keyboard shortcuts. The Command key, I understand, but I'm having the hardest time going from the beginning of a line to the end of the line. On Windows (and Linux) to go to the end of the current line, you simply hit the End key. Pressing the End key on a mac will bring you to the end of the document. Same for the Home key; it brings you to the beginning of the document on Mac, instead of to the beginning of the current line on Windows (and Linux). If something is going to convince me to switch back to my nice, comfy pc, it'll be the keyboard shortcuts! Edit: Oh, lifehacker, you never fail me! Let that be a lessons girls and boys... always google before griping! - Categories: In the Trenches - Tags: author, edit, name, wordpress, wordpress-code Just today someone approached me at work about the author's name displaying in Google search results instead of our company name. You can change what shows for each individual author in the your profile for WordPress, but if you want to keep it all the same regardless of who posted the article (useful for a business), you can use the following code as an example: https://gist. github. com/4656116 What's Going On in this Code? The first thing we are doing is using an action in the feed file to set a global variable that says we are currently in the feed. Note: WordPress offers different types of feeds, so you may want to perform this for each of them. If you look in your wp-includes/ folder, you should see some files that begin with "feeds-". Each of these has their own hook you can use to create the global variable (as done above in the my_rss2_ns function). I've listed the file and the hooks below: File Hook wp-includes/feeds-rdp. php rdf_ns wp-includes/feeds-rss. php rss_ns wp-includes/feeds-rss2. php rss2_ns The last thing we are doing is simply checking if our global variable is true, and if so, updating the author text with something we've specified. - Categories: In the Trenches - Tags: theme-customizer, wordpress, wordpress-code, wordpress-themes Otto had a series of articles highlighting how to use the theme customizer in your WordPress themes instead of creating an options panel. One of his articles covered making your own custom control and it inspired me to make a custom control for showing a certain taxonomy dropdown on the theme customizer. At first, I had just wanted this for the purpose of choosing from a dropdown of categories to use as featured posts in my theme. Then I thought it could really just as well be used for any taxonomy object. Behind the scenes, this control is using the wp_dropdown_categories function, which allows you to build a dropdown of categories (or any other registered taxonomy). The code for the control really wasn't bad. After actually implementing this and trying to use it, I found that my changes were not being saved. There is a data-customize-setting-link attribute that must be appended to your element. Below is the code from my functions. php file and the class being called by functions. php: https://gist. github. com/4656209 - Categories: In the Trenches - Tags: actions, filters, hide-inactive-sites, hooks, wordpress, wordpress-multisite, wordpress-plugins In my Hide Inactive Sites plugin I've added several filters to manipulate the data. You can modify the emails sent to the end users and edit the times available in the plugin settings. I thought it might be helpful to show how to change some of these that may want to do so. Note: please never edit the plugin code directly! You are best off creating your own plugin or putting code in your theme's functions. php file. Let's say that I want to warn my users that their site will be hidden if they haven't updated it in 2 days. Well, by default, the plugin doesn't offer you the option to warn in 2 days. It allows you to warn after 1 day of inactivity. One week is the next closest time to warn a user of inactivity. So, let's add an option for "2 days": function add_inactivity_warning_threshold($inactivity_warning_thresholds){ $inactivity_warning_thresholds = __('2 Days'); return $inactivity_warning_thresholds; } add_filter('hide-inactive-sites-manage-inactivity-warning-thresholds', 'add_inactivity_warning_threshold', 1, 1); Ok, how about another example? Let's edit the text sent in the email when a site is hidden: function edit_hidden_email_message($message, $site_details){ $message = ''; $message . = 'Hey admin, your site is no longer available! You should probably have updated it more often! '; $message . = ''; } add_filter('hide_inactive_sites_edit_site_hidden_message', 'edit_hidden_email_message', 1, 2); Other Filters Available Site Hidden Email Edit list of email recipients: hide_inactive_sites_edit_site_hidden_to_emails Edit email headers: hide_inactive_sites_edit_site_hidden_headers Edit subject line: hide_inactive_sites_edit_site_hidden_subject Edit message (used above): hide_inactive_sites_edit_site_hidden_message Site Warning Email Edit list of email recipients: hide_inactive_sites_edit_site_almost_hidden_to_emails Edit email headers:... - Categories: In the Trenches - Tags: inline styles, styles, wordpress, wordpress-plugins At the request of a few of the St. Louis WordPress meetup users, I created a new plugin to remove inline styles from the content of WordPress posts, pages and custom post types. I just submitted it to the plugin repository, so it should be up in the next couple of days. Edit: Style Stripper has been released. - Categories: In the Trenches - Tags: cache, clear, code, editor, php, publish, quick cache, wordpress, wordpress-code I started using Quick Cache on a site recently and some of the publishers (setup as editors) wanted to be able to clear the cache manually to ensure their posts went live right away. So I wrote a quick script to handle that. I'll probably release a plugin for this eventually, but for now... here's the code: function check_publish{ global $current_user, $post; $capability = 'publish_'; // Check current post type... if we have one available if($post->post_type ! = ''){ // Set the capability we are looking for to publish_s $capability . = $post->post_type . 's'; } else { // Set the default capability to publish_posts $capability . = 'posts'; } // Check if the user has rights to publish a post return current_user_can($capability); } add_filter('ws_plugin__qcache_ms_user_can_see_admin_header_controls', 'check_publish'); This will include the Clear Cache button in the admin section of WordPress. Update: I've released this plugin on wordpress. org. - Categories: In the Trenches - Tags: approval, multisite, wordpress, workflow As part of our migration to WordPress at work we needed some sort of workflow to check the pages before they go live. Sort of a last check to make sure the styling looks good. When I first started this "holy grail" search, I evaluated a few plugins: Edit Flow Post Revision Workflow (Inspiration for my plugin) Edit Flow Edit Flow seemed really robust, but it was meant more for new content. I needed something that would work with editing existing content, like pages. Edit Flow would allow you to change the status, but that would actually remove the page from your site, because it is no longer considered published... not what I wanted to do. Post Revision Workflow Post Revision Workflow seemed closer to what I was looking for. I felt it gave too many options to the end user. I wanted to decide who would receive notification, not let the end user decide. But I liked how it worked on the backend. Basically, after updating a post/page/or other custom post type it creates a revision in the posts table. If you saved it as a draft, this plugin would look at the revisions and re-publish the previous revision (the actual one you wanted to be live and not your draft). My Solution My solution, Approval Workflow, was highly influenced by Curtiss Grymala's Post Revision Worfklow plugin. Approval Workflow allows you to set a group as the approvers. Note: this group must have publish permissions. The approvers get notified... - Categories: In the Trenches - Tags: code, options, wordpress, wordpress-plugins, wordpress-themes I came up with an object-oriented way of working with my plugin's options for my work projects. https://gist. github. com/4739857 Creation So then all I have to do in my class is create an instance of this: $options = new My_Plugin_Options('my_plugin_options_name'); Accessing It will store all of your plugin options in 1 record in the database as an array. You can easily access one of the options by doing this: $this->options->my_first_option Saving After updating all the options, we need to save them at once. $this->options->save; My Setup I've created a folder inside wp-content/plugins for some code that I use on multiple plugins/themes at work. I don't have the plugin declaration at the top of the main file, so it doesn't get recognized as something needing activation. All I do is require the main file in my plugins and themes and that file includes the rest of my classes; the Options class being one of them. I've also created a couple classes for dealing with custom post types and taxonomies. - Categories: In the Trenches - Tags: blogs, inactive, inactivity, multisite, sites, wordpress, wordpress-plugins At work, we setup a blog server back in 2009. One of our goals was to make sure if people weren't keeping their blogs up-to-date their site would be hidden from the listing of blogs. Well, I finally took the time to work out an automated solution. Introducing, Hide Inactive Sites; this baby is a blog server administrator's dream come true! It's setup to be extendable. If you need to edit the query of blogs being returned, fine, change it using a filter. Need more time options or privacy options, done... add your own using hooks. It slices, it dices, and it even hides your old, out-dated blogs. Enjoy! - Categories: In the Trenches - Tags: blogs, multisite, my sites, sites, wordpress, wordpress-plugins I just released a new plugin to the WordPress plugin repository: Reorder My Sites. It reorders the My Sites dropdown in the admin bar alphabetically. Not a huge plugin, but definitely helpful for those of you running WordPress Multisite. Here's the official plugin page on JudenWare. Enjoy! - Categories: In the Trenches - Tags: install-type, menu, menus, multisite, navigation, subsites, suggestions, wordpress At work I'm currently trying to migrate away from our CMS and move us to WordPress Multisite. To me it seems like there are a few different ways to use WordPress Multisite, and I'm starting to think that should be a question when installing it. Some of the uses could be: A network of blogs owned by different users A large CMS with each separate site in the network being used to separate user permissions for editing (how I'm setting up our work install) CMS setup with each separate site as a different language (en. mysite. com, fr. mysite. com) Based on the option you choose, it would be nice to customize WordPress for your needs. For example, say you select option 2 for your site (as I have for work). The entire site's pages are spread out across multiple sites in the network. This is a pain in the neck when it comes to managing a custom menu using WordPress's built-in menu system. I can only see the pages for the current site I'm on, not all the pages in the entire network. Also, in WordPress Multisite, there is no idea of subsites; they are all at the top level in the navigation. For my site, I'd like to "nest" some sites underneath others. Currently there was no way to do this, so I created a plugin called Site Structure to manage the hierarchy of sites (this is only for WordPress Multisite) across the network. You click and drag... - Categories: In the Trenches - Tags: birthday, calendar, contacts, google, subscribe Google offers a calendar you can subscribe to that pulls all of your Google Contacts' birthdays and other important events (anniversaries). To add it, click the dropdown button to the right of Other Calendars and choose Browse Interesting Calendars. Once there, click the More tab and subscribe to Contacts' birthdays and events. Voila! Here's a reference to the article I found this from. - Categories: In the Trenches - Tags: code, role, roles, users, wordpress I was searching online for a quick solution to retrieving a list of users from WordPress by role. I found a solution but decided to check the core user functions for a better alternative. As of WordPress 3. 1, you can use the handy get_users function. Old Way You had to create your own function that used the WP_User_Search object. function getUsersWithRole($role) { $wp_user_search = new WP_User_Search($usersearch, $userspage, $role); return $wp_user_search->get_results; } $editors = getUsersWithRole('editor'); New Way $editors = get_users('role=editor'); - Categories: In the Trenches - Tags: multisite, roles, sync, wordpress, wordpress-plugins I posted on my day job's blog about a new plugin I've been working on. It's a role management plugin for WordPress Multisite that keeps the roles synced between the sites. Read more about it. - Categories: General Nonsense - Tags: 1997, backpacking, boy scouts, camping, philmont, scouts It would be great to go back to Philmont one of these days. It's amazing how while you are there experiencing the great adventure, you just want the hike part to be over. I'm so glad I had the opportunity to spend 10 days on the trail at Philmont! - Categories: General Nonsense - Tags: android, asus, edit, editing, eee pad, google, google docs, rich text, transformer I've recently purchased an Asus Eee Pad Transformer as a means to replace my laptop. One of the biggest features I use on my laptop is Google Docs. I love it for meetings around the office, keeping track of different things at home, etc. But editing documents on a tablet is terrible! It says there is "edit" mode, which allows you to type. That's great if I'm writing a novel... not going to happen. Most of the time, I'm making a list of some sort; which isn't available in "edit" mode. In fact, no rich-text editing options exist in "edit" mode. I would love for this to become available, as I'm a huge fan of Google Docs. EDIT: I have found a work-around. If you install FireFox on your tablet, you should be able to edit the documents. - Categories: In the Trenches - Tags: missouri, St. Louis, St. Louis WordCamp, St. Louis Wordpress Users Group, user group, wordcamp, wordpress Lately I've been thinking it would be good to start a St. Louis Wordpress users group. I'd love to attend some of these and meet some other Wordpress people in the St. Louis area. The idea of having a St. Louis WordCamp is also appealing, but I think it would be beneficial to find out how many people are interested in Wordpress before investing the time for a WordCamp. So who out there has a place to host such an event and would want to put it on? I'd be happy to help, but I'm not sure I'd be able to make it to every meeting. I wouldn't want to be the point person, I'm just trying to get the ball rolling. EDIT: I did come across a group on Facebook, the St. Louis and St. Charles Wordpress Users Group. I signed up, but it doesn't seem very active. EDIT x2: I just found a meetup group for STL Wordpress: http://www. meetup. com/stlwordpress/ - Categories: In the Trenches - Tags: code, dropdown, list, menu, select, wordpress, wordpress 3.0, wp_dropdown_categories, wp_dropdown_nav_menus, wp_nav_menu I've started to play around with Wordpress 3. 0 Beta 2 and the new menu system it has. While playing around with it, I thought it might be nice to include a dropdown box of menu choices on a settings page for a theme. So I made a function similar to that of the dropdown box for categories (wp_dropdown_categories). I called this one wp_dropdown_nav_menus. function wp_dropdown_nav_menus($args = ''){ $defaults = array( 'echo' => 1, 'id' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'selected' => 0, 'class' => 'postform', 'tab_index' => 0, 'show_option_all' => '', 'show_option_none' => '', ); $r = wp_parse_args( $args, $defaults ); extract( $r ); $tab_index_attribute = ''; if ( (int) $tab_index > 0 ) $tab_index_attribute = " tabindex="$tab_index""; $terms = get_terms( 'nav_menu', array( 'hide_empty' => $r, 'orderby' => $r, 'order' => $r )); if(! empty($terms)){ $output = ""; if($show_option_none){ $selected = ( '-1' === strval($r) ) ? " selected='selected'" : ''; $output . = "$show_option_none"; } if ($show_option_all) { $selected = ( '0' === strval($r) ) ? " selected='selected'" : ''; $output . = "$show_option_all"; } foreach($terms as $menu){ $selected = ( $menu->term_id === strval($r) ) ? " selected='selected'" : ''; $output . = "$menu->name"; } $output . = ""; } if ($echo){ echo $output; } return $output; } If you want to use this in your code, please change the prefix of the function from wp_ to something more useful for your purpose. Just in case Wordpress comes out with a function... - Categories: General Nonsense - Tags: 3g, dropped call, iphone Dear AT&T, Enough is enough. You know there is a problem with the iPhone 3G dropping calls. Please fix it. I finally went through and did as the forums suggested, and disabled 3G. I shouldn't have to do that though. I've been growing tired of your company and my family will probably be switching to Verizon once our contract is up. Your loyal customer since 2001, Eric - Categories: In the Trenches - Tags: analytics, mysql, php, piwik Has anyone messed with Piwik Analytics? I just got it setup on thejudens. com yesterday, and so far it seems pretty slick. The one thing I like most about it is that the data is mine! I don't have to share it with google! Right now we have both google analytics and piwik running on the server. I'm going to let them run and see how they compare with each other. I'm just kind of curious how close the results will be with the other. I'll report back later and let everyone know. In the meantime, you better go check out Piwik. It runs on php/mysql and you can most likely install it on your hosting account. - Categories: In the Trenches - Tags: list blogs, wordpress mu, wpmu I recently had to make a list of all the active blogs for the university's blog site running Wordpress MU. Here's the code to do so: https://gist. github. com/ericjuden/5583445 Blog Directory You'll notice the query is set to filter out blogs that are marked as archived, spam, private. Also, it hides the main blog from the list. UPDATE: As posted in the comments by Brad, you can sort these in alphabetical order by the site name by using the following code: https://gist. github. com/ericjuden/5583806 - Categories: In the Trenches - Tags: newsletter-converter, update, wordpress Not sure if anyone has noticed, but the Newsletter Converter for Wordpress has been updated to version 1. 0. 6. Hopefully this release fixes a lot of the timeout issues people were experiencing. You also have the ability to use cURL instead of php's file_get_contents function, which is apparently not enabled on a lot of web hosts... go figure. If you are happy with it, feel free to buy me a beer (in the sidebar). - Categories: In the Trenches - Tags: aspectratio, image, javascript, jquery, resize Let me start off by saying, I LOVE jQuery! It's the greatest thing since sliced bread! Now that I have that out of the way, I've been working on developing some Wordpress themes for work. We are going to be launching a blogs site (using Wordpress MU) fairly soon for faculty, staff, and eventually students. So, in the process we are building a blog that will be used as an online newsletter. On the blog page, they want the top story to take precedence, and for the image to be larger. So to accomplish this, I wanted to scale down the other images and keep the aspect ratio. Enter jQuery... I was looking out there at some of the solutions already completed. I didn't see anything that quite did what I was looking for. So I made my own function: https://gist. github. com/ericjuden/9334780 The 2nd line of code says to grab every image with a class of 'story-small'. The block for the height is just a safety net. I have it there in case the height is still larger than the max. There are a hundred ways to skin a cat, so I'm sure there are plenty of other ways to do this. - Categories: In the Trenches - Tags: c#, exists, files, http web request, httpwebrequest, multiple, response, time out I'm working on a project at work right now to pull inventory data from the bookstore's point-of-sale system into the e-commerce site I'm setting up for them. One of the parts in the process is to check the web server for any new/updated images for the items on the website. I am doing a web request for each image on the server to see if I really does exist. After doing so many, I noticed that all of the files kept coming back saying they weren't there, when I know darn well they are! So after a little research online, I noticed that you need to close your Response object when you are finished with it. Here's my code: private static bool _FileExists(string filename) { try { HttpWebRequest req = (HttpWebRequest)WebRequest. Create(filename); req. Timeout = 5000; req. Method = "HEAD"; HttpWebResponse response = (HttpWebResponse)req. GetResponse; if (response. StatusCode == HttpStatusCode. OK) { response. Close; // IMPORTANT return true; } else { response. Close; // IMPORTANT return false; } } catch(Exception ex) { return false; } } The big thing to note here is when I'm calling response. Close, as that closes out the connection. So if you are experiencing issues where you keep getting time out errors, give this a try. Here's the original article that helped me. - Categories: Inspiration - Tags: dreams, goals, life This is an excellent video that everyone should watch on achieving your childhood dreams. It is very inspirational and makes you think about how you are using your life. Grab some popcorn, because it's about an hour and 15 minutes long. http://www. youtube. com/watch? v=ji5_MqicxSo - Categories: Inspiration - Tags: life, values So I've been doing some reflecting recently. A blog that I frequently visit, The Art of Manliness, has started a 30 day challenge to becoming a better man. For the first day's post, they talked about building a list of core values to keep yourself from drifting through life. So, I've decided to share my 5 core values with the world (in alphabetical order): Confidence This is definitely one of the values that I need to work on. I feel confident in my current work abilities, but there is always room for improvement and the web is always changing. I think I could have more confidence in my role as a father... sometimes I wonder if I'm doing the right things. I would like to have more confidence toward my understanding of church and religion. Also, I would like to have more confidence in my decision making. If I decide on something, stick with it; I obviously chose it for a reason. Family Family comes first, what else can I really say on this. I'm sure almost everyone feels the same way I do on this subject. Honesty If you are getting an answer from me or seeking my opinion, it will be the honest truth. This is one thing that really bothers me. If you are responsible for something and it is your fault that it fails, own up to it. Rest assured, I always will, no matter the consequences. Humor Life can't always be serious, you've got to... - Categories: Uncategorized Hey everyone, hang tight for a little bit while I get the cobwebs out. I'm going to try and get my old blog posts back in here too. It'll only be a matter of time. - Categories: In the Trenches - Tags: 404, flash, flv, server2003, work Wow! That was a wierd problem. I haven’t done much with embedding videos online before, so I’m learning a lot about the nuances. I was getting a 404 error from a . flv file that I was using with a flash . swf file. Luckily, there’s been other people with the same problem (I love google). On the Windows 2003 server, open the Internet Information Services Manager. Expand the Local Computer Server. Right-click the local computer server and select Properties. Select the MIME Types tab. Click New and enter the following information: Associated Extension box: . FLV MIME Type box:flv-application/octet-stream Click OK. Restart the World Wide Web Publishing service. The original article I found is here - Categories: In the Trenches - Tags: code, event log, event viewer, windows mobile Alright troops... who’s gonna be first to test out the latest and greatest Event Viewer for Windows Mobile? I’m not going to say its perfect, because the only person to test it has been me! If you don’t like it, then just don’t tell your friends about it. If you do like it, by all means get your developer friends to use it in their Windows Mobile applications. You can download the files here. - Categories: In the Trenches - Tags: .netcf, c#, development, windowsmobile Well, I started in on a new project last night. This project will essentially be an event viewer for windows mobile devices. One of my concerns is that it won’t log events from the device... I’m not exactly sure how to hook in to device events yet. I can’t guarantee that this application will be running all the time to record device events, so I am thinking mainly of using it for application developers that want to use it to record events from their programs. They will be able to call a method and pass all the information to create a new event in the event log. I’ll post something worthwhile when it gets a little farther.