P4 Auto-update details, build #1075

This morning we’re pushing an auto-update for ProPhoto4 users on auto-upgrade-capable web hosts. This particular update features a grab-bag of small improvements and a couple of bug fixes we wanted to release before switching our attention to improving the Grids feature for a couple weeks. This post contains some details about the four most noteworthy changes, plus a full changelog.

-GOTCHA-If your host doesn’t do auto-updates, you can download the latest build from within your admin area, under ProPhoto => Customize => Site Settings => Misc => ProPhoto Updates. Tutorial for updating from downloaded zip can be found here.-/-

Mobile phone call telephone links

You can now add a telephone call link to your Mobile footer menu links. To do so, just create a new menu item in your Mobile footer menu area, and select Special link type => Call telephone # link. Enter your telephone number, and ProPhoto will create a link that tells your users mobile phone to make a call to that number.

Disabling slideshow thumbstrips

This update adds a new slideshow-specific option to the “Edit ProPhoto Gallery” screen — the ability to completely remove and hide the thumbnail portion of a ProPhoto slideshow gallery.

We’ve had a lot of customers ask us how to completely hide the thumbnail strip portion of a ProPhoto slideshow gallery on a specific page. Often, but not always, these users have set up their site with a static home page containing a slideshow set to autoplay and don’t want the users to be able to see the thumbnails or control the playback of the slideshow.

In order to accommodate these users, we had been helping them by supplying a bit of custom CSS code to accomplish this task, but we realized that enough people were doing it that it deserved it’s own option in the ProPhoto interface. To make use of the new feature, just create a new gallery, or edit an existing gallery, and click the “Slideshow options” tab and check the box marked “remove thumbnail strip with control buttons”.

Individual & more granular “Email post” control

When we introduced the “Call to Action” feature in ProPhoto4, one of the built-in options was an “Email post to friend” link. This functionality was nearly identical to the “Email a friend” link option available in the comments header area, and in the interest of time, we opted to have the new Call to Action links inherit some of the comments header options. This decision helped us launch ProPhoto4 a bit sooner, but wasn’t terribly flexible or intuitive. So, in this update we’ve fixed that by separating out the full set of controls and making them available within the call to action area.

You can now specify the subject and body of the generated Email created when a user clicks on the “Email post to friend” call-to-action link, in the same way that you can with the comments header “Email a friend” link option.

In addition, we also have added four special keywords you can use when customizing Email subject and body, to allow for dynamic inclusion of post and site-specific information. ProPhoto replaces the special keywords with the correct information from each specific post or your site, making these customizations dynamic and context-aware. The four keywords are:

  • %post_url% is replaced with the full URL of the post
  • %post_name% is replaced with the title of the post
  • %site_url% is replaced with the URL of your site
  • %site_name% is replaced with the name of your site

Call to Action open in new tab/window option

Another thing a fair number of users have requested is the ability to specify that Call to Action link open in a new browser tab or new window, instead of in the same window. So now, where it makes sense, ProPhoto will give you the option to specify this within the individual Call to Action item customization area.


For those interested in a near-exhaustive list of what’s changed/new since our last auto-update, see the below list:

  • 04/02/12 – improve scrollability of mobile pages with overlay-style grids
  • 03/30/12 – add trailing slash to Facebook home URL in og:url meta tag, prevent redirects and linter warnings
  • handle permissions-related failures to create and delete ProPhoto galleries with helpful error messages instead of failing silently
  • 03/28/12 – fix extremely rare issue with PHP warning on Solaris-type servers that can’t handle GLOB_BRACE constant
  • improve usability of overlay-style grids on mobile devices, allow touch anywhere on visible overlay to function as click on link
  • 03/27/12 – increase ajax comment-adding timeout to 15 seconds, for very slow servers
  • 03/22/12 – move comment error messages from markup into JavaScript, to prevent Google from ever reading, indexing, or displaying the error messages
  • improve documentation of post-signature special keywords to show that you can also access post author name dynamically
  • separate comments-header and call-to-action “email a friend” customizations, adding more flexibility to dynamically include post URL and title, and site URL and description
  • 03/21/12 – add option for certain Call to Action links to open in new tab/window
  • lengthen interval between a few ProPhoto cron jobs, now that ProPhoto4 is very stable
  • clean up and refactor some internal documentation related to galleries
  • auto scroll to top of menu edit frame when there is a validation error, prevent usability issues when the error message area not visible because of scrolling
  • strip linebreaks from entered SEO meta keywords, to keep source code cleaner and prettier (yes, I am a bit OCD)
  • don’t allow .bmp or .tiff images into ProPhoto galleries, only allow .jpg, .png, and .gif
  • add per-instance complete disabling of ProPhoto slideshow gallery thumbstrip area, useful for auto-playing portfolio-type pages
  • respect optional WP_HOME and WP_SITEURL constants if defined, since WordPress does
  • add call telephone number mobile link type for mobile devices
  • require ProPhoto designers to export from most recent build when submitting designs to the add-on store
  • 03/15/12 – constrain very large images to 1200px for Facebook og:meta tag, since Facebook seems to balk at previewing very large images
  • add daily automated unit tests of Facebook public APIs to alert us as soon as they make changes
  • delete grid transients in a more optimized way
  • allow for Facebook comments to be turned off completely on home page by setting number of comments to zero
  • 03/14/12 – add fallback for very rare servers missing filter_var() function
  • when determining width of Facebook comments area, only account for sidebar width if sidebar present on that page, duh

Facebook Comments and What's Next

This past Wednesday we released a pretty major update for free to all ProPhoto4 usersbuilt in Facebook comments integration.

an example of integrated Facebook comments on a blog post

Brought to you by Automatic Updates

I’m pretty excited about this most recent update, because it was made possible by one of the great new features of ProPhoto4: automatic updating. Before P4, we rarely were able to add new features to ProPhoto between major paid upgrades, because the complexity and time required to get everyone to manually update their theme files was too great. Now, with P4, about 96% of our users get updates automatically with zero work on their part — ProPhoto just updates itself to a new build whenever there is a new one available.

Since P4 was launched in late September, we’ve already used automatic updating to push a number of new features, enhancements to existing features, and a slew of minor bug fixes. Facebook comments is simply the latest and largest example of these free updates. Being able to continually release improvements to ProPhoto through automatic updating is exciting to us because it means ProPhoto will be able to evolve faster and stay more current between major versions, and allow us to react quicker to changing trends in web world in general. We think it makes ProPhoto a better product, and will help your websites stay fresh, current, and competitive.

More on Facebook comments

I had originally intended to write up a bunch of details about how the new Facebook comments feature works, but we ended up creating a very detailed tutorial for the new feature that covers almost everything I wanted to mention here in the blog. So, if you’re looking for tons of screenshots and a detailed explanation of how the new feature works, how to enable it, and what exactly the different options do, head over to the new tutorial.

Handling old posts and non Facebook comments

One of the toughest things about integrating Facebook comments was figuring out what do for people who wanted to use Facebook comments, but had many months or years of old posts with comments that they did not want to lose or stop displaying. Facebook comments actually are sort of an optical illusion — they look like they’re on your site, but you’re really seeing through in invisible window (called an iframe) into an actual Facebook.com page. So, for obvious reasons, there’s no way to take old comments from a WordPress blog and “push” them into Facebook’s system.

Because we couldn’t move old comments onto Facebook, we had to somehow deal with the old posts with the old comments. At first we considered letting you set a cut-off date before which we would show WordPress comments, and after which only Facebook comments would be seen. But this was problematic for a number of reasons, and we eventually rejected it. What we ended up deciding on was not a time-based approach, but rather an approach that lets you make customization choices that fundamentally answer two basic questions:

  1. What do you want to do with comments that exist outside of Facebook? Show them or hide them?
  2. How do you want to accept new comments when Facebook comments are enabled? Through Facebook only or through Facebook and also through WordPress?

Answering these questions is pretty intuitive, and leads to some fairly intelligent configurations. You can completely hide all non-Facebook comments if you want and start over with a clean slate, or you can show both types of comments. If you are only accepting new comments through Facebook, you can still show old WordPress comments on old posts. New posts without any old WordPress comments will seem as though you only are using Facebook comments, while visitors to your old posts will still be able to see old comments left before you started using Facebook comments. If you have more questions about this, see the tutorial linked above.

Pulling comments FROM Facebook

I mentioned in the previous section that Facebook comments actually exist on Facebook’s site, so you can’t “push” comments into Facebook. But we can “pull” comments left on Facebook and store them in your WordPress site database. We built our new Facebook comments integration to automatically pull all comments left on Facebook into your database, inserting them as if they were regular WordPress comments left through your traditional add a comment form. We did this for several reasons:

  • It allows us to display those comments as traditional WordPress comments should you ever decide to stop using Facebook comments
  • It allows us to print Facebook comments to the page source code in such a way that they are not visible to the reader, but can be read and indexed by Google (since Google won’t look inside the iframe to see the actual Facebook comments themselves)
  • It allows us to preserve your comments if you change your blog address or permalink structure

That last point deserves a little more explanation. See, Facebook decided to tie comments to exact web addresses. So if you have a post with the address http://mysite.com/blog/a-post/ and people leave Facebook comments on it, Facebook attaches those comments to the exact URL http://mysite.com/blog/a-post/, as opposed to some numeric ID or unique identifier string.

What that means is if you ever change your blog address in such a way that the same post is now found at the URL http://mynewdomain.com/a-post/, all of your Facebook comments will be lost. This is true even for small changes in your permalink structure — if the URL changes at all, it breaks the association between the comments left when the post had a different URL and the post itself. Kinda lame, I know, but it makes sense from Facebook’s perspective and there’s not much we can do about it.

Anyway, the fact that ProPhoto scrapes all of the comments left through Facebook solves this problem, as best as is possible. If you’re using Facebook comments with ProPhoto, when we store a local copy of each Facebook comment in your WordPress database, we make a note of what the post’s exact URL was when the comment was added into Facebook. Then, if you change your blog address or permalink structure, ProPhoto can compare the two URLs and see if you have any orphan Facebook comments. If you do have some of these, ProPhoto can display these old orphaned Facebook comments as traditional Facebook comments.

How do we “PULL” the comments?

Excellent question. Facebook gives us a way to “listen” with JavaScript for new comments added through Facebook. When a new comment is added, our ProPhoto JavaScript is notified. Then, we make an ajax-request to the Facebook public comments API and figure out which comment was just added. We then download the text and other details about the Facebook comment, and insert it programmatically into your WordPress database.

It works great — most of the time. Occasionally the Facebook API is down, or returns a whacky error, and there’s a known Facebook bug that means that our “listener” doesn’t get notified if the comment is added via a mobile device. Because of this bug and the periodic problems with the API, we also check each WordPress post once every three weeks to re-sync your WordPress database with all of the comments left on Facebook, to catch any comments that fell through the cracks. It’s not a foolproof system, but it should catch and sync the vast majority of all comments left within Facebook.

What’s next?

Facebook comments was the last big part of our recent, 2-month long, Facebook-centric development push. We’ve reworked and improved Facebook Like buttons, Like box widgets, added Send buttons, improved og:meta compliance, added more granular controls for how Facebook previews your links, and now added Facebook comments.

Now that we’re done working on Facebook, we’re likely going to spend a week or two on Grids. Grids are an awesome feature that people really love, and we want to add some oft-requested new customization options and other improvements, including likely at least one more entirely new grid display option. So stay tuned for more on that in the days and weeks to come.

I’m also probably going to review all of the open development tickets and pick off some of the higher priority smaller but often requested items as well.

P4 Auto-update details, build #1046

This morning we’re pushing a pretty major auto-update for ProPhoto4 users on auto-upgrade-capable web hosts. The biggest part of this auto update is the inclusion of a new feature, Facebook comments. It also includes a small optional image protection enhancement related to Pinterest, and a bunch of minor bug fixes.

-GOTCHA-If your host doesn’t do auto-updates, you can download the latest build from within your admin area, under ProPhoto => Customize => Site Settings => Misc => ProPhoto Updates. Tutorial for updating from downloaded zip can be found here.-/-

Facebook Comments

an example of integrated Facebook comments on a blog post

Facebook comments are now built-in and fully supported by ProPhoto. I’ll be providing more information in a future blog post, but for now, once your site updates, you can experiment with Facebook comments by enabling them from your ProPhoto => Customize => Comments screen.

We’ve got lots of information and a ton of explanatory screenshots, plus FAQs about Facebook comments on our new, detailed support tutorial, so head over there and check it out if you’re interested in learning more.

-GOTCHA-Facebook comments is the biggest feature we’ve ever released to ProPhoto in between major upgrades, so for a few weeks it’s going to be in a “beta” phase. There will likely be a few small bugs we fix and basic improvements we’ll add as the feature stabilizes.-/-

For those of you who don’t like Pinterest

A few weeks ago we added some basic Pinterest integration into P4. Most photographers like the idea of people pinning and sharing images from their site. However, if you’re concerned about unauthorized use or download of “Pinned” images on Pinterest, you can now set a global site setting in ProPhoto that prevents all “Pinning” of images from your site. You can find the preference under “Image Protection” on the ProPhoto => Customize => Content Appearance => Text & Images screen.


For those interested in a near-exhaustive list of what’s changed/new since our last auto-update, see the below list:

  • 03/13/12 – new feature: Facebook comments integration
  • 03/09/12 – prevent attempts to downsize images to zero or negative dimensions in odd circumstances
  • 03/08/12 – ensure all post/page styling (headlines, bold, italics, lists, etc) format correctly on mobile sites
  • 03/07/12 – fix rare image path location problem with certain Microsoft IIS 7.0 servers
  • 03/02/12 – improve menu creation for mobile footer menu, allow more items to be displayed, and more to be dragged into container items
  • fix display problems with quotation marks and other special characters in image titles
  • fix iPhone mobile gallery display width problem caused by previous change made to accommodate Android phones with larger screens
  • 02/29/12 – fix rare problem with first slideshow image sizing caused by large post image border width
  • fix rare fatal error caused by unresponsive call to debug_backtrace() in menu admin area caused by attempt to load missing or unknown gallery
  • fix JavaScript syntax error in slideshow file causing errors in IE
  • correctly load and display Facebook Like Box even when ajax-ed into contact form area after initial page load and Facebook parsing
  • 02/27/12 – fix comment form prefill formatting when an error occurs adding a comment via ajax
  • 02/23/12 – fix rare issue where a certain header layout could cause masthead slideshow width display problems
  • don’t try to load a ProPhoto slideshow that contains only one image
  • 02/22/12 – properly handle slideshows with music that are ajax-loaded into a page after initial request complete
  • fix rare but troublesome bug where certain widgets (mostly Grid) wouldn’t save changes
  • throw a console.warn() message when jQuery not defined for script.js to use, to aid debugging mysterious silent JavaScript failures when plugins dequeue or move jQuery
  • optimize error logging for greater speed, avoid slowing down page loads where there are error conditions present
  • 02/21/12 – allow prevention of Pinterest “pinning” of all images
  • 02/20/12 – fix error with IE9 playing music for slideshows, have IE9 use HTML5 audio element instead of flash, because it can
  • hide primary/secondary menu customization options if disabled

Get a $30 rebate when you choose our recommended host, Hostpapa