I finally made the switch from PC to Mac. My previous machine was an old Sony Vaio purchased in 2005. It was top of the line then, and actually worked great until about a year ago, when it inevitably began dying a slow, complicated death. The time to finally buy a new computer was fast approaching..
Several months after the release of the Arabic and Spanish versions of Contact Coldform, I am pleased to announce the release of a French translation of the plugin. The new French translation is graciously provided by Tony Tohme, who is also helping with the upcoming Russian translation of the Coldform. Thank you, Tony! :)
To download the French version of Contact Coldform, check out the plugin’s home page, where you will find additional information, future updates, and much more.
Great news! Contact Coldform is now available in Spanish (Spain). Special thanks to Fernando Tellado of Ayuda Wordpress for his superb Spanish translation of the Coldform. Fernando has articulately translated both the administration panel and all of the (X)HTML/text output as well. Contact Coldform is now the perfect solution for Spanish users of WordPress who desire a super-clean, standards-based contact form. Thanks Fernando! :)
Announcing an improved, Arabic version of my latest WordPress plugin, Contact Coldform. The new version features complete UTF-8 compatibility and has been completely translated to the Arabic language. Here is a detailed breakdown of changes made for the Arabic version:
Completely translated to Arabic
Encoded in UTF-8 without BOM
Emails now sent in HTML format
Added line breaks in HTML format
Right-to-left text presentation
Customized layout for Arabic
Full UTF-8 support
Of course, none of this would have been possible without the generous help of:
For more information, check out the original thread at ar-wp.com. There you may obtain more information and also download the Arabic version of Contact Coldform. You may also download the Arabic version via the Coldform home page.
Just a note to announce a site upgrade to WordPress 2.3.3. The upgrade went well, but overall server performance continues to suffer. I am aware that some people are experiencing difficulties leaving comments and even accessing the site in general. Rest assured, I am working with my hosting company, A Small Orange, to get everything back on track and running smooth. In the meantime, I appreciate your patience as we work to resolve the issues, restore full functionality, and return to reliable performance.
Please share any helpful observations regarding the site here. — Thanks!
One of the necessary evils associated with creating a highly customized WordPress-powered site involves the inevitable necessity to hack the WordPress core. WordPress is built for mass-consumption and tends to cater to the largest audience possible, making it necessary to bend and poke around the corners to get WordPress to function in a more specific or specialized capacity.
Of course, there is a major downside to tweaking core WordPress files: upgrading. The overambitious WordPress peeps are constantly rolling out upgrade after upgrade, many of which are required security fixes, patches, or whatever. The point is that editing the WordPress core on your current version of WordPress requires that you edit each and every subsequent upgrade, for each and every one of your sites.
Over time, I have realized the importance of documenting core changes for any sites that require them. Having a concise record of the files and code involved with each hack greatly facilitates the entire upgrade process. Without such a reference, subtle changes may be forgotten and key hacks may be overlooked. Here at Perishable Press, my former Core Hacks Log served me well from WordPress 1.5 to 2.0, however, much of it no longer applies to the new WordPress 2.3 configuration. Since the latest site overhaul, I have dramatically reduced the overall number of required core edits.
Two weeks ago, I decided to completely overhaul Perishable Press. The decision came after several months of smooth sailing with excellent site performance, an optimized theme, plenty of visitors, and even a comfortable posting schedule. All things considered, everything was peachy keen — until I began reflecting on the “big picture,” meditating upon certain aspects that are frequently taken for granted or simply overlooked during periods of hectic operation and maintenance. For example, while troubleshooting htaccess and PHP errors, webmasters generally don’t take the time to meditate on the structural and functional integrity of their overall site configuration.
Fortunately, I recently found the time to contemplate Perishable Press from a broader perspective, rethinking everything from themes and plugins to organizational architecture and permalinks. As I approach the completion of the most comprehensive site renovation ever, many significant improvements are currently underway. Here is a summary of the primary changes involving site structure, presentation, functionality and performance:
Alrighty then! Looks like recent changes to site structure have really dropped a bomb on quite a few regular visitors out there. After switching over to the new default theme last night, I had setup an email notification system to alert me of all errors encountered at this domain (i.e., the main site and all test sites). Of course, I knew that at least a few errors would be inevitable, but I had no idea that I would receive nearly 300 of them!
After examining the nature of these errors, it appears that the bulk of them are the result of either Google showing confusion over the new image directory structure, or people visiting the site with a browser cache full of old theme files. Apparently, a few visitors were actually using some of the alternate themes that I had provided via the previous default theme. So, now that the alternate themes have been removed (temporarily, for a few months), visitors are experiencing errors when they visit the site. Uhh, not so good, especially for them.
Duetopopulardemand, I am proud to announce the release of a new widgetized version of the free AddMySite (AMS) plugin for WordPress. The new version (0.88) is compatible with all versions of WordPress (including all WP 2.3+), and is easily integrated into any widget-capable area (e.g., sidebars, footers, etc.) of any widget-friendly WordPress theme. Simply activate, drag & drop into place, and enjoy! Once the widget has been activated, AMS enables site visitors to easily and quickly add your site or feed to as many as 40 social-bookmarking and/or feed aggregation services.
By default, version 0.88 of AMS automatically uses the information specified in your WP Admin for your blog name, blog address, and feed URL. Thus, manual code editing is no longer required for the plugin to work as intended. However, if you would like to customize any of the predefined variables, simply use the nifty popup menu provided on the AMS widget icon. Everything is completely widgetized, automated, and customizable! For more information about AddMySite, or to download yourself a fresh copy, visit the official AMS information page »
Just a note to announce the release of a new version of BlogStats PCC. BlogStats PCC is a free WordPress plugin that provides an easy way to share your blog’s core statistics with your visitors. You can show off any or all of the following statistics:
total number of posts
total number of comments
total number of categories
total number of registered users
total number of unregistered users
total number of individual, static pages
the date of the most recent post modification
a link to the most recently published blog post
a link to the name of the most recent commentator
date/time of the most recent blog update, displayed in your default date format
BlogStats PCC enables you to display any or all of these statistics in any location (inside the loop or elsewhere). The plugin is completely free, totally customizable, and extremely easy to use. The new version (2.3.0a) works with all versions of WordPress (1.5 - 2.3), and is available for immediate download via the official BlogStats PCC information/download page.
Ladies and gentlemen, things have become a little too comfortable around here. Themes are displaying with nary a hitch, files are being downloaded as expected, URLs are served like butter, and the site is experiencing fewer errors (PHP, 404, etc.) than ever before. After two years of perpetual updating, posting, fixing, and tweaking, Perishable Press is finally performing exactly as desired (all things considered, of course). Yes sir, things are running quite smooth indeed..
A little too smooth. Sure, given the comfortable equilibrium that I am currently enjoying, it would be very easy to kick back, get lazy, and just coast on autopilot for the next two or three years. Maybe drop a new theme every six or seven months and call it good. After all, I have finally developed a comfortable writing and posting schedule as well. So what’s the problem, then? Why change things now? Why deliberately create more work, hassle, and stress for myself? Surely, there is a good reason.
CLB+ As many WordPress users now realize, there have been many fundamental changes in the new version of WordPress. The latest version of WordPress — 2.3 — features a considerably revamped database structure, including a complete reorganization and redistribution of the wp_categories table. Unfortunately, such database alterations have rendered inoperable many popular plugins, proving quite unfortunate not only for millions of WordPress users, but also for those of us who donate time, effort, and resources toward the development of freely available WordPress plugins. Thus, with the advent of WordPress 2.3, developers whose plugins have ceased to function must now decide whether or not to continue their support. In my humble opinion, philanthropic plugin developers have several choices:
When I first began Perishable Press, I intended the site to focus primarily on the creative side of web and graphic design. However, I also wanted to share equally my ideas and experiences involving music, video, and other multimedia avenues of creative expression. Further, because I enjoy writing, and find myself frequently focusing on art, inspiration, and artistic expression, the initial plan encompassed a perpetual exploration and presentation of these topics here at Perishable Press.
Two years later, the original vision continues to change. Perishable Press has evolved into a site that focuses almost exclusively on technical aspects of web design. Although readers may occasionally experience a few digressions into graphic design, photography, and creative expression, these topics no longer represent the primary purpose of the site. Currently, visitors to the site will notice a plethora of content aimed at helping designers, developers, and bloggers excel on the Internet. Over the course of fifteen redesigns, the look and feel of Perishable Press has managed almost completely to evolve synchronously with the content. Almost..
Here at Perishable Press, we like to stay current by running the latest version of WordPress. The site launched in 2005 with WordPress 1.5 (Strayhorn), eventually made the jump to version 2.0 (Duke), recently stepped up to 2.0.1 (Still Duke), and currently enjoys 2.0.5 (Ronan). Although each of these upgrades have required various file edits, plugin tweaks, and theme modifications, the process is always educational and remains an important aspect of this site. Much of our content revolves around using and customizing WordPress, and so staying current with new versions is critical if we are to continue operating as a relevant, contemporary resource.
Needless to say, with the release of WordPress 2.1 (Ella) in January of 2007, we were excited about upgrading. In fact, we were so enthusiastic about diving into ‘Ella’ that we went ahead and upgraded only hours after its release (mistake #1). I recall thinking something to the effect of “..every other WordPress upgrade has gone so well..” and, after skimming over the list of changes, “Wow, look at all that WordPress goodness — surely this will be a fantastic upgrade!” (mistake #2). As if that weren’t enough, by not waiting a few days before jumping aboard, it was impossible to follow the sage advice of “Google first, upgrade second” (mistake #3).
We are happy to announce the release of AddMySite (AMS) version 0.77. The new version features support for syndicated content feeds, and enables users to add their site’s feed to fifteen different feed-syndication and social-aggregator sites. Plus, the new version of AMS includes twenty-five social-bookmarking services to which users may easily add your site. The entire list of 40 sites is concisely presented via drop-down menu or as a customizable list. One file. Simple installation. Easy to use. Clean output and XHTML strict. Plus, the new version of AddMySite is fully compatible with WordPress 2.1 (Ella).
As promised, the fine folks at WordPress have released WordPress 2.1, which has been named "Ella" after jazz legend Ella Fitzgerald. The new version features several key improvements, including lossless XML import/export, spell checking, post Autosave, and even a new search-engine privacy option. All that, and much more. Reading through the vast list of changes and developer features, we are quite excited to dive in and explore the new and improved, "state-of-the-art semantic personal publishing platform."
[Edit] Note to WP 2.0.5 users: Everything was working fine on this site before upgrading to WP 2.0.5. After upgrading, apparently, our feeds stopped validating* and the BDP RSS Aggregator plugin refused to update our own feeds. After several hours investigating the situation, we determined that the Live Comment Preview plugin was interfering with our feeds validating, while the upgraded WordPress (2.0.5) was responsible for problems with the BDP plugin.
Comment by m0n on Wednesday 6 December 2006 at 4:28 am
I was running BDPRSS v.0.2.2 just fine before upgrading to WP 2.0.5. After the upgrade, I noticed that feeds from my own site are no longer updated. They are apparently polled, but reflect a ‘last updated’ value of the day I upgraded WP. I have, since the WP upgrade, posted several new articles that appear fine directly, through feedburner, etc.
I have tried just about everything (restoring old BDP databases, deleting and adding new feed entries in the admin panel, deleting cache, you name it, etc.). I have also tried upgrading to BDP 0.4.10, but to no avail. My own feeds will not update either in the BDP admin panel or on the web page itself. Adding different feed formats does not work either.
So, just a note to hopefully garner some more clues concerning this. I realize it may not be an emergency, because who reads their own feeds for crying out loud. Perhaps there are others out there with the same problem. If possible, try adding any of your own feeds (on WP 2.0.5) and see if they work. Well, thanks for listening!
The whole event pretty much zapped the weekend of any free-time, but the good news is that we managed to get everything working properly (according to our needs) once again — feeds all validate and we have previews of our own feeds via the BDP plugin — and we are still running WP 2.0.5! We’ll just bill the incident as another 8-hour "learning experience"..
If anyone is experiencing anything similar to the issues mentioned in this post, we would love to hear about it — drop us a line!
Update: [ May 28th, 2007 ] - Issue resolved! After moving the Perishable Press website to a new server, our WordPress feeds once again began updating directly through our own site (via BDP plugin, et al). Apparently, as our previous host continued to disable important PHP functions (as a solution to potential security vulnerabilities), the various plugins and scripts employing the disabled functions inevitably became useless. Thus, we attribute the source our non-updating feed issue directly to server limitations (and lazy technicians). While we cannot at this point discern exactly the cause of the problem, suffice it to say that our new host provides all the functionality needed for everything to run properly (and smoothly, we might add). So cheers to everyone who helped us with suggestions and ideas for this bizarre dilemma. We now enjoy fully functional and validating WordPress feeds. Case closed.
Perishable Press is now running WordPress 2.0.5. Everything went very well as we upgraded directly from version 2.0.2. Please report any errors or unusual/unexpected behavior (concerning this site). Your help is much appreciated.
The AddMySite (AMS) plugin for WordPress makes it easy for your visitors to add your site to all of their favorite social-bookmarking services. With a few clicks, users may easily bookmark or add your site to any number of popular social bookmarking services, which are concisely presented via drop-down menu or as a customizable list. One file. Simple installation. Easy to use. Clean output and XHTML strict.
New! — Widgetized AMS version 0.88 now available! The new widgetized version of AddMySite makes it easier than ever to add your site and feed to 40 sites! AMS version 0.88 features 25 social-bookmarking sites to which visitors may add your site. Even better, the new version of AMS also enables visitors to add your site’s syndicated feed to 15 feed-related/aggregator sites. That’s 40 ways to expand your online empire!
Super-easy installation instructions
Upload plugin to plugins directory and activate.
Drag and drop the AMS widget into your sidebar.
Enjoy! ;)
Demonstration
To see AddMySite (AMS) in action, look here (located near the middle of the page).
Thanks to some valuable feedback, several inconsistencies were discovered in our Category LiveBookmarks plugin for WordPress. If you are using CLB+ version 1.1.1, check carefully your feed links — you may discover that your feed links are being written twice in both the document head and (if applicable) the document body. Further, it was requested that the plugin produce a complete set of links for various WP page views, such as category views and archive views, rather than creating links merely for the categories of whichever post appears first in the sequence..
In addition fixing the “double-link” bug, we decided to rewrite completely the CLB+ plugin. Several functions have been consolidated and streamlined. New features providing greater flexibility and control have been added, thereby enabling users to specify where, when, and how their feed links are generated. We even posted a nice collection of RSS feed icons for users to enjoy, use, and share. Overall, the CLB+ plugin is better than ever. If you haven’t yet upgraded to 1.3.3, now is definitely the time!
Update: After upgrading Perishable Press in 2007, many of the hacks listed on this page are no longer applicable. Please refer to our new WordPress Core Edits for current information. Otherwise, this article remains online for reference purposes only.
The folks developing WordPress are continually rolling out “upgrades”. While it is generally a good idea to stay current, it can also be a bit of a pain if you have made any changes to the WordPress core files. Our recommendation? Keep a log such as this one that either includes all edits or links to posts describing them. That way, when it is time to upgrade to WP 3.0.1, WP 3.0.2, … WP 9.0.1, WP 9.0.2 … (you get the idea), it will simply be a matter of referring to your handy WP core file change log and then going thru the list, copying & pasting your way back to complete functionality. Just remember to add any subsequent changes to the list, though, or you may find yourself scratching your head after the next upgrade. Another good idea involves carefully comparing any code you are replacing, checking to make sure the wizards at WordPress haven’t changed any aspects of the original code (of which you are replacing).
So, without further ado, here are the WordPress core file edits currently operating here at Perishable Press:
Customize the_excerpt function
File: wp-includes/functions-formatting.php (~ lines #763 & 767): set to desired values:
$excerpt_length = 50;
...
array_pop($words);
array_push($words, '[...] ( click post title to read more )');
$text = implode(' ', $words);
Customize the wpautop function
File: wp-includes/functions-formatting.php (~ line #72, #83):
$pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "<p>$1</p>\n\t\t\t\t\t\t", $pee); // make paragraphs, including one at the end
$string = '<a href="'.get_permalink($post->ID).'" title="Go to previous post">'.$previous;
...
$string = '<a href="'.get_permalink($post->ID).'" title="Go to next post">'.$next;
...
...
function next_posts_link($label='Next Page »', $max_page=0) {
...
echo '" title="Go backward in time">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .'</a>';
...
function previous_posts_link($label='« Previous Page') {
...
echo '" title="Go forward in time">'. preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $label) .'</a>';
...
function posts_nav_link($sep=' — ', $prelabel='« Previous Page', $nxtlabel='Next Page »') {
Vars Tweak for htaccess Edits
File: wp-includes/vars.php (~ #35):
// Server detection
//the next line is used to allow WP to write htaccess rules during permalink creation (comment out the $is_apache line first)
//$is_apache = 1;
$is_apache = ( strstr($_SERVER['SERVER_SOFTWARE'], 'Apache') || strstr($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') ) ? 1 : 0;
Customize Password-Protected Posts
File: template-functions-post.php (~ line #3):
function get_the_password_form() {
$output = '<form action="' . get_settings('siteurl') . '/wp-pass.php" method="post">
<p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
<p><small><label class="h">' . __("Password: ") . ' </label><input class="postpassword" name="post_password" type="password" size="11" /> <input class="passwordsubmit" type="submit" name="Submit" value="' . __("Submit »") . '" /></small></p>
</form>
<div class="clear vspace"> </div>
';
return $output;
}
File: wp-includes/functions.php (~ lines #1067): insert "@" before parse_url and praise the Lord!
Remove CSS Link to Print Stylesheet
File: press/wp-subscription-manager.php (~ line #100): delete the following line to eliminate unnecessary 404 errors when users subscribe/unsubscribe to comments (or when managing subscriptions):
File: wp-includes/feed-functions.php (line #84): edit according to current default theme requirements:
echo "<a href='$url'>$link_text</a>";
--- changed to --->
echo "<a class=\"feed-icon\" href='$url' title=\"Subscribe to comments for this article\" rel=\"nofollow\">$link_text</a>";
Customize Commentator Links
File: wp-includes/comment-functions.php (~lines #358-368): swap the following:
/* original */
function get_comment_author_link() {
global $comment;
$url = get_comment_author_url();
$author = get_comment_author();
if ( empty( $url ) || 'http://' == $url )
$return = $author;
else
$return = "<a href='$url' rel='external nofollow'>$author</a>";
return apply_filters('get_comment_author_link', $return);
}
For many months, visitors to Perishable Press encountered the highly customized Jupiter! theme. Utilizing sIFR, Prototype, Lightbox, and several other bandwidth-heavy scripts, the Jupiter! theme weighs in at well over 400KB/page when saved as an offline copy. The Jupiter! theme also employs every plugin used here at Perishable Press, resulting in even slower performance for broadband users, and utterly painful experiences for those on modem/dial-up.
Recently, we decided to give Jupiter! a facelift and dump the heavy baggage. The idea was to create a theme aesthetically similar to Jupiter!, focusing on speed and usability without sacrificing essential functionality. The result is Lithium, the eleventh WordPress theme from Perishable Press & Monzilla Media. Lithium is lightweight, accessible, user-friendly, XHTML-strict, and provides helpful features such as tags, keywords, gravatars, as well as comment enhancements and autodiscovery feeds. Best of all, Lithium provides the same overall "look and feel" as Jupiter!, but with better, brighter colors and sharper, sexier details.
Nonetheless, there are yet simpler, more refined themes in the works for Perishable Press. By the time you read this, in fact, the Lithium theme may no longer appear as the site's "default" theme. So, for the record, here are links to Jupiter!, Lithium, and a selection of all Press themes.
CLB+ New version of Category LiveBookmarks Plus now available! CLB+ 2.3.0b enables WordPress 2.3+ users to configure and customize the ultimate set of autodetection feeds, category feeds, category links, and feed links. Features include completely rewritten, optimized code, optional category post counts, and custom RSS-icon links for all category and/or feed links. Overall, the new version is faster and more flexible than ever!
Category LiveBookmarks Plus is the easy way to provide complete “Live Bookmark” functionality and "Post Smart" feed links to your WordPress-powered website. Simply install the plugin, and users with Firefox, Opera, Navigator, or any other modern browser, will enjoy a selection of your RSS feed links at their fingertips. CLB Plus seamlessly integrates the code necessary for modern browsers to automatically detect and update any RSS feed available from the current page, enabling readers to stay current with important news and updates.
Category LiveBookmarks Plus also makes it easy to add category feed links to posts, comments, pages, or anywhere else within your site. Simply add the <? clb_plus(); ?> function to the desired location within your blog, and there enjoy a contextually relevant selection of completely customizable RSS feed links. There are also options to include RSS feed links for “all posts” and “all comments”, as well as settings to customize markup, icons, and feed links. Plus, as of version 1.7.7, there are options to configure a custom set of category links next to corresponding feed links, which may include comment counts and RSS-icon links.
With CLB+, you may customize category feeds for the various WordPress view types (e.g., category views, page views). CLB automatically omits feeds with zero posts, and also excludes subcategory feeds. Further, this plugin produces strictly valid XHTML markup.
Installation and Usage:
Unzip php file and add to wp-content/plugins directory.
Open php file and adjust any of the "CLB OPTIONS", if desired.
Add the following function call to your sidebar or any other location: <?php if (function_exists('clb_plus')) { clb_plus(); } ?>
Feed links will be added to the <head> automatically. No further action required.
Feed links will be added to the <body> wherever the function call (from step 3) is located.
According to the WordPress Codex 1, it is possible to pass quotation marks via the parameters of the function, wp_link_pages(). This would enable users to assign a particular css class or id to the function output, thereby providing greater design and behavioral control over that particular object.
But alas, as reported several times in the WordPress Codex 2, wp_link_pages() is unable to pass quotes without causing errors.
To fix this, we open template-functions-post.php and find wp_link_pages(), which is located around line #121 (for WP 2.0.2).
The fix is easy, simply edit the <p> in the following lines:
$r['before'] = '<p>' . __('Pages:');
$r['after'] = '</p>';
For example, if you wanted to wrap the function output with a <div class="foo"> and subsequent </div>:
This article explains how to reverse the order of WordPress page navigation links.
To reverse the default (backward) order of page navigation in WordPress, open the file template-functions-links.php (in WP 2.0) or link-template.php (in WP 2.1/2.2) and scroll down to the last function, posts_nav_link()1. Next, find the last if statement and switch the order of the following two lines:
previous_posts_link($prelabel);
[ ignore this line ]
next_posts_link($nxtlabel, $max_page);
Next, within the first line of the same function (beginning with function posts_nav_link), switch the order of the variables $prelabel='« Previous Page' and $nxtlabel='Next Page »'.
Finally, within the loop, make sure you are calling the function with the usual parameters in place. Something like:
That’s it! Your post navigation links (for index and category views) should now operate according to the following principle: left links point to older posts and right links post to newer posts.
References
1 Not to be confused with previous_post_link() and next_post_link(), which provide navigational links to older individual posts and newer individual posts, respectively. Oddly enough, in the case of post-by-post navigation, WordPress gets it right: left links point to older posts and right links post to newer posts; however, this is not the case with page-by-page navigation, in which WordPress adopts the reverse strategy.