Categories
WordPress

WordPress: Community, Code, Conduct

What happens when Matt Mullenweg, WordPress co-founder and project lead, violates the community code of conduct?

Categories
WordPress

Easy Digital Downloads, Awesome Motive, and the benefit of the doubt

Easy Digital Downloads was recently acquired by Awesome Motive as part of their acquisition of all the Sandhills Development WordPress plugins. EDD, created and led by Pippin Williamson, had a history of not pushing their other products aggressively with in-dash notifications and upsells. Awesome Motive—developers of OptinMonster, MonsterInsights, WPForms, and more—have used in-dash notifications and […]

Categories
Web Development WordPress

Translating Multiple Branches of Your Premium Plugin with Transifex

Since GravityView launched in 2014, we have used Transifex to manage translations. Our process has always relied on a single translation resource file, and we’ve had the same flow over time: Create an update with new strings Upload the translation file to Transifex Release the update In the next minor release, include any new translations […]

Categories
WordPress

The Future of WordPress

I will be presenting the WordCamp Denver 2017 keynote on August 26, 2017. It’s a privilege, and I’m looking forward to it! If you don’t have tickets yet, it’s not too late—get a ticket now. See you soon! I will update this post with the slides once they are available, and I will also have “show notes”—a […]

Categories
Code WordPress

How to fix UTF-8 filename issues when using wp_handle_upload()

PHP said the file didn’t exist. Except it did. file_exists() wasn’t working for a file uploaded using wp_handle_upload(). It worked for every other file, except for one provided by a German customer. I confirmed the following: The file did exist in the correct wp-uploads sub-directory The file had correct permissions The directory and its parents […]

Categories
Code jQuery WordPress

Fixing JSON Parse Error in WordPress Plugins

If you write WordPress plugins and make AJAX requests, you may be familiar the dreaded Javascript error: SyntaxError: JSON Parse Error: Unrecognized token ‘>’ Why? Why!?! What it means is that the response your code expected is screwed up because a plugin barfed PHP warnings into the admin-ajax.php ventilation system. When WP_DEBUG is on, admin-ajax.php […]

Categories
Code CSS WordPress

How to use your own widget icon in the WordPress Widget customizer

In developing deeper integration with the Customizer functionality of WordPress, I wanted to use a custom icon for my IDX+ plugin’s widgets. By default, WordPress defines a list of icons using their dashicons icon set and tries to guess the best icon for your widget based on the CSS class of your widget. Check out […]

Categories
Constant Contact WordPress

Help test the Constant Contact API 3.0 plugin beta!

Almost ready. It’s been a long haul for the new version of the Constant Contact for WordPress plugin. I started working on it before Constant Contact finalized their new API, so let’s just say it has been a major undertaking 🙂 Now I need help getting it ready for release! The new Constant Contact WordPress […]

Categories
WordPress

How to get all downloads in Easy Digital Downloads

Easy Digital Downloads defaults to using 10 results per page when using the get_products() method. You can modify this default using the edd_api_results_per_page filter. Here’s how to fetch all products at once: $EDD_API = new EDD_API; // Force EDD to show all the downloads at once. add_filter(‘edd_api_results_per_page’, ‘modify_edd_api_results_per_page’ ); // Get all the EDD products […]

Categories
Google WordPress

How to Add Support for Display Advertising Code in Google Analytics for WordPress

It’s really simple to use Google’s Display Advertising code, so I thought I’d share how. To enable the new GA features: Check the “Show Advanced Settings” Under “Advanced Settings,” check the checkbox for “Host ga.js locally:” In the text field that appears, enter: //stats.g.doubleclick.net/dc.js Note: The missing http and https is intentional – if your […]

Categories
WordPress

I’ll be at WordCamp Phoenix 2014

I’m going to be attending WordCamp Phoenix 2014 from the 17-19th. If you see me there, say hi! I’m looking forward to meeting some plugin developers and other people I recognize from the attendance roll. I’m also looking forward to expected 70° temperatures.

Categories
WordPress

Testing Translation Function Speeds in WordPress

After reading Pippin Williamson’s post about gettext speed issues, I wanted to learn more. My IDX+ plugin has 815 translatable strings, and I was worried that it was having a performance impact on the plugin. I created a test that looped through different methods of outputting and printing strings to try and determine their relative […]

Categories
Code WordPress

Test Payments for Admins in Easy Digital Downloads

I’m in the process of setting up a store using the Easy Digital Downloads plugin. It’s been a good process so far and I’ll have more posts about it. While I was setting up the checkout process for testing, I wanted to be able to use test payments but keep the option hidden to non-admin […]

Categories
jQuery WordPress

Toggle WordPress Help Menu

It’s not possible (as far as I know) to currently link directly to a help tab in WordPress. Here’s the jQuery solution I cooked up: “ /** * Toggle the WP help menu tab by linking to the tab id * * The anchor must have a `rel` of `wp-help` */ $(‘a[rel=”wp-help”]’).click(function() { // Open […]

Categories
WordPress

Bradycardia & Cardiac Arrest for WordPress 3.6

Bradycardia is the resting heart rate of under 60 beats per minute…. Wikipedia A new feature in WordPress 3.6 is an upgrade to the autosave functionality that’s been around for years. It’s called “Heartbeat” and it makes sure you have valid authentication credentials, aren’t working on the same post as other people, and more. The problem […]

Categories
WordPress

Add "Preview" Link to Manage Themes

Ever since WordPress added a Live Preview option to the Manage Themes screen, it’s been frustrating to test a plugin using multiple themes. Why Live Preview sucks for developers When using Live Preview, you can’t modify the URL of the page you’re visiting or open the preview in a new window or tab. Live Preview […]

Categories
Tutorial Uncategorized WordPress

How to Hide or Replace the WordPress Welcome Panel

Updated: now with more in-depth code! So you want to modify the WordPress Dashboard Welcome Screen There was a thread on the WPMU website that discusses how to disable the WordPress welcome screen, but the code provided didn’t work, so I figured I’d show how to do it! The `wp_welcome_panel()` function uses the `show_welcome_panel` user […]

Categories
WordPress

Major Changes in the WordPress.org Plugin Directory

The new plugin Reviews feature suggests a shifting approach to the WordPress ecosystem. Reviews: a new tab in town On every plugin page, there is now a Reviews tab. This is in addition to the Support tab that WordPress added around August. Rating a plugin now requires a review Until now, WordPress reviews were basic: […]

Categories
WordPress

Create a Custom Error Page for "Error establishing a database connection"

Here’s how to make a custom database error page for WordPress. If your site’s all set up and you see “Error establishing a database connection,” that’s an immediate “oh crap” situation. Hostgator.com, the company that hosts this website, has had some issues recently, and I’ve seen that screen a little too often. If you want […]

Categories
Web Development WordPress

Generate a Link to Activate a Plugin in WordPress

Here’s another specialized plugin development tip! If you want to create a link to activate a plugin, you need to know the path of the plugin file. Let’s use Akismet for this example. $path = ‘akismet/akismet.php’; $link = wp_nonce_url(admin_url(‘plugins.php?action=activate&plugin=’.$path), ‘activate-plugin_’.$path); The `$link` URL will be something like http://yoursite.com/wp-admin/plugins.php?action=activate&plugin=akismet%2Fakismet.php&_wpnonce=f97dabdf9