Tag Archive: WordPress


I love Gravity Forms, it’s one of my go-to plugins for all WordPress installs. Last week a client gave me the form fields for a new form and some of them needed a word counter to limit words to 300 in textareas. I found two possible solutions for adding maximum word count in Gravity Forms after a bit of searching, but neither worked for me (not being a programmer, I didn’t know how to fix them). But my programmer friends at CodeGeek stepped in and came up with this solution.

Here’s the Javascript which is saved in /themes/mytheme/js/ (it could also be put in an HTML block within the form itself, but we may want to use it on several other forms so made it available site-wide):

Then in functions.php, call the script:

Then in the Gravity Form for fields that need the word count, add the class ‘els-word-count[300]‘ in the Advanced tab for CSS Class Name. Change [300] as needed for the maximum words that can be added to that particular field.

Have a private blog category only visible to logged-in members of your blog or website? You can hide that category so that it doesn’t show up in your site’s default feed. Just add this to your theme’s functions.php file:

If you need to exclude more than one category, just add more like this:

This took a bit to figure out. If you only want to load Meteor Slides on the home page, try this:

I’m currently working on building a good responsive base version of the Theme Hybrid child theme I use as the starting point for most WordPress sites. To that end, today I destroyed a project-in-progress to rebuild it responsively. It’s going well so far, but I’m not close to being done. 

One thing that is complete: I now have a responsive menu thanks to a little jQuery script called TinyNav.js. This automatically converts any ul or ol-based navigation menu to a select menu. It was very easy to do except for one thing that wasn’t clear from the documentation, which I’ll explain below.

First download TinyNav.js from the link above and upload it to your theme directory. Then in the head section of your theme, connect to the script:

Then add this, changing #menu-primary to the ul id in your WordPress menu. The second part of this makes the current_page_item appear in the select menu by default.

Finally, open up tinynav.js. This was the tricky part because it wasn’t explained clearly. You’re going to need to make one change: the first occurrence of ‘selected’ needs to be changed to ‘current_page_item’ and then the first part of the script should look like this:

Note that that’s just part of the first line in the minified script…

Now you’ll use media queries to control the appearance of the select menu and the hiding of the main menu, perhaps like this:

And you can style select.tinynav in CSS. Enjoy!

NextGen has been my go-to gallery for WordPress for quite a long time. Very easy to use for my clients, and super-easy to customize. But the included lightbox scripts are not so great-looking.

I recently started using Easy FancyBox to replace those scripts. If you go to Options > Effects under NextGen and select ‘none’ for the JS Thumbnail effect, you can then tweak Easy FancyBox under Settings > Media. It looks great right out of the box (so to speak) and has some nice options for fades and titles.

Here’s an example of NextGen with Easy FancyBox from a recent project.

About a month ago I was contacted by a company who had a big job (from my perspective as a freelancer), a WordPress conversion project, and a very short deadline. I chatted with the project director, the developer and a few others and was hired to do a small proof-of-concept task to both determine if WordPress was really going to be a good platform for what they needed, and to try out my company to see if we would be a good fit.

The POC went very well. It served as a good intro for me to their site’s structure and content styles, and the client was quite happy with the results. They asked me to write a full proposal that would include:

  • Creating a custom WordPress theme based on their current site’s design. It needed to be a pixel-perfect copy.
  • Migrating about 60 pages of content to the new platform.
  • Creating a set of 6 custom templates that would be used as the basis for another 30 or so pages.
  • A good deal of custom Javascript and PHP programming to integrate with their CRM and cart.
  • Helping with the WordPress migration and installation on their Amazon host.
  • Training for the client’s Marketing and Development teams.

Taking the Proposal to the Next Level

I’ve gotten quite good at writing estimates in the last few years, but this one needed more care.

I have a spreadsheet that I use for estimating hours that I used to feed all the info I had about this project into and came up with a preliminary number, but I knew that was just the beginning; I was very afraid of putting in something that was too low and terrified of comitting to something so big and fast without some input from someone else who had been there before. I needed to find out what team members I needed to pull in and get some estimating help from a friend who runs a web development studio and has more experience with quotes for this size project.

I met with my friend and things really started to flow from that meeting. Ron had two employees that had some time available in the following two weeks, which coincided with the short deadline, and between them they could provide the custom programming and some plugin support for about 25 hours of time. This was great! He helped me tweak my estimate and get in an appropriate amount of time for project management and unforeseen contingencies, and in the end I felt comfortable with the range of fees we provided to the client in the final version of the estimate.

Filling Out the Team

Writing the proposal helped me get a better handle on who I needed for the team. I had my programing covered, but I called on another colleague familiar with WordPress to do some tasks for me like managing widget placement and SEO tags on all pages, and then put out a call on the Women Designers’ Group mailing list, where I’m a member, for a few others who were experienced with custom theming for WordPress.

I was very lucky to find two women who had the time available to commit. One had a lot of custom theming experience similar to mine, and the other wound up contributing as quality control.

Jumping In With Both Feet

The client was happy with our quote and so they hired us and we were off and running. We had roughly 10 days to get the project to a point it was ready for extensive review and testing by the client’s Development and Marketing teams, and then three more days until it went live. The quick timing was due to some advertising that was coming out right after the launch date.

I’d never managed a project so big nor had I ever had so many subcontractors working on a single project. In order to help me keep everything together and moving forward steadily I used two tools:

  • activeCollab, my project management site, where I set up milestones and tasks for everything in the project development sequence, and where we posted files and held discussions between team members and the client’s contact people.
  • A Google Apps spreadsheet that served as the master guide for everything. This spreadsheet took about half a day to put together. It showed every page on the site, it’s statuses for content migration, custom templating and programming if needed, notes, review/QA status and other elements. One of my subcontractors serving as QA/QC checked off pages in review as they were completed, and the other subs had access to mark their progress on various tasks for each page.

The client was pleased with our implied level of understanding of the minutiae of the project based on the spreadsheet and basically let us go, checking in every day and asking/answering questions as needed. They kept a very close eye on our work, and during the entire course of the project we ran into very few snags. Things went pleasantly smoothly.

The Team!

Could not have done this without the subs, in particular the custom themer that made it possible for us to offer additional features in the templates that we originally told the client would not be possible given the short timeframe, and the programmer that took the initiative to move things forward based on ongoing conversations with the client’s lead developer.  The choice of subs turned out to be very nearly perfect and it was fortuitous that everyone on the team had the time to throw at this project during the work period.

Launch and Beyond

We had a few hours of hiccups when the site was migrated from my production server to the client’s Amazon Web Services hosting, but the project launched on time  and the client was very pleased. I provided training sessions and extensive documentation for them, and we’ve established a strong working relationship that is moving into Phase 2 at this time.

The Most Important Things I Learned

  • Allow plenty of time for project management and be sure to put in an equal amount of time for contingencies because you just never know what’s going to happen.
  • Get the right people to help.
  • Stay organized, used tools accessible by all team members to stay on top of every task taking place across the board.
  • Find some time away whenever you can. I wound up with a nasty bacterial infection during the launch phase that began as a simple cold, I’m pretty sure it was due to the 12-14 hour days I put in near the end.

And, having a good client is also a huge contributing factor for the success of this project. The Marketing and Development staff and the project manager for the client were all passionate about their company, knowledgeable (or enthusiastic and willing to learn) about how our contributions would be affecting their daily work after launch, and easy to work with, and that was refreshing; it helped us keep moving forward at a rapid pace with few interruptions. The project was complex but the experience was great for me. I’m looking forward to working with this client in the future.

© 2014 position: relative; All rights reserved. WordPress site maintained by WP Minder.