Dec
22

Post Supplements – A Concept

The Art of Manliness adds an author box, a Facebook "like" button, a related content gallery, and a subscription feature to the bottom of each post.

A few months ago, WordPress UX Lead Jane Wells posted a request to WordPress’ Trac ticketing system.  The idea was to find a better way to insert “stuff” below WordPress posts:

Inserting the sharing and like rows at the bottom of the post text before the byline/classification metadata seems wrong. It should go below that, so it is closely related to commenting, not part of the content itself. The plugin-generated widget is not “by” the post author, after all.

I haven’t used very many social media plugins for exactly this reason.  Nor have I ever used a “related posts” plugin.  They always seem to conflict with one another and build up a bunch of unnecessary cruft below my content.

So for the past few months, I’ve been thinking about different ways to handle this. [Read more...]

Dec
16

Should Free Software Have Free Support?

I do professional (paid) consulting for WordPress.  But I also write and distribute free plugins and themes for WordPress.  My paid business depends a lot on my reputation on the free side of things.

And that’s where I face a dilemma.

A lot of people use my free stuff.  And several of them come to me from time to time asking for new features, bug fixes, or just regular “I can’t figure this out” support.  Up ’til now, I’ve offered that support for free.

And that’s proven to be a bad idea.

So my question to you, how much is reasonable to charge for ongoing development and support?

Please complete the following survey to share your thoughts on how much (if anything) is reasonable to charge for support, on-going development, and feature requests when it comes to open source software. 1

Complete the survey through Google Docs

To say “thank you” I’ll be giving away a handful of Amazon.com gift cards to those who complete the survey.  How many I give away and the exact amount on each card will depend on how many people complete the survey.

Notes:

  1. For the record, I will not stop giving away free software.  I’m just considering a few different ways I can continue to earn a living while doing it.
Dec
10

I’ve Still Got It!

Every now and then, someone asks me whether or not I still have quality WordPress development skills.  I think it’s a fair question.  After all, I spend the bulk of my time now working with closed-source ASP.Net projects and have little time for my favorite WordPress stuff.

But really, much of what I do in the .Net arena is pretty transferable.  And – this is me bragging a bit – I’m a good developer no matter what language or paradigm I’m working with.

There’s been a lot of talk about WordPress 3.3 coming out soon.  And a lot of that talk has been about the number of contributions and contributors to the project.  I’m proud to say that I’m in that group – I’ve had a patch in every major version of WordPress since version 2.8!

And I want to show that off. [Read more...]

Nov
28

WordPress Portland

As promised, here is the code for my demo of adding feature pointers to WordPress in version 3.3

And again, please do not use these in distributed plugins/themes.  They’re only slated for Core at the moment, but if you feel that they’ll help in your custom theme/plugin development with clients, feel free!

<?php
/*
Plugin Name: WordPress Portland Meetup Pointer Demo
Plugin URI:
Description: Demonstrate feature pointers in WP 3.3
Author: Eric Mann
Version: 1.0
Author URI: http://eamann.com
*/


add_action( 'admin_enqueue_scripts', 'pdxwp_pointers_header' );
function pdxwp_pointers_header() {
    $enqueue = false;
   
    $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
   
    if ( ! in_array( 'pdxwp_pointer', $dismissed ) ) {
        $enqueue = true;
        add_action( 'admin_print_footer_scripts', 'pdxwp_pointers_footer' );
    }
   
    if ( $enqueue ) {
        // Enqueue pointers
        wp_enqueue_script( 'wp-pointer' );
        wp_enqueue_style( 'wp-pointer' );
    }
}

function pdxwp_pointers_footer() {
    $pointer_content = '<h3>Welcome WordPress Portland!</h3>';
    $pointer_content .= '<p>This is an example of an admin pointer.</p>';
    $pointer_content .= '<p>You can use it in your <a href="http://wordpress.org/extend/themes">themes</a> ';
    $pointer_content .= 'and <a href="http://wordpress.org/extend/plugins">plugins</a>.</p>';
?>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function($) {
    $('#menu-comments').pointer({
        content: '<?php echo $pointer_content; ?>',
        position: {
            edge: 'left',
            align: 'center'
        },
        close: function() {
            $.post( ajaxurl, {
                pointer: 'pdxwp_pointer',
                action: 'dismiss-wp-pointer'
            });
        }
    }).pointer('open');
});
//]]>
</script>
<?php
}

?>
Nov
21

Security Vulnerabilities

Out of the blue today, a user of one of my plugins contacted me to ask why I was so slow in patching a security vulnerability in my system.

The question came as a complete surprise.

Apparently, back in January, someone discovered a potential security hole in one of my plugins, WP Publication Archive.  The frightening thing about the report, though, was the fact that he never bothered to report the vulnerability to me so I could fix it.  Instead, an open report sat there on his site, and was then picked up by a few other security sites and syndicated across the Internet.

Had this user not contacted me, I would never had known about this issue.  And I can’t fix something if I don’t know it’s broken.

The Hole

WP Publication Archive uses a proxy file to load a remote file as an attachment so it can be downloaded by the browser.  Here’s the entire source of the “vulnerable” file: [Read more...]

Oct
08

WordPress Weekly

Last night, I had the opportunity to talk with Jeff Chandler on the weekly podcast WordPress Weekly.  We talked about a lot of things: should automatic WordPress updates be opt-in or opt out? Will/should Automattic ever be acquired by another organization?  Does it matter how many plugins your site runs?

It was a fun chat, and I hope to call in to the show sometime again soon.  For now, you can listen to the show yourself:

Or you can download the show from iTunes.