Based on the popular open-source contract for web professionals by Stuff & Nonsense
- Originally published: 23rd December 2008
- Revised date: January 30th 2018
- Original post
{ | |
"basics": { | |
"name": "Kyle Devereaux Nel", | |
"label": "Full Stack Engineer | PHP Engineer", | |
"image": "http://devnel.blog/wp-content/uploads/2025/05/avatar_1200.jpeg", | |
"email": "[email protected]", | |
"phone": "+27 671746400", | |
"url": "https://devnel.com", | |
"summary": "Full Stack Engineer with 10+ years of cross-functional experience driving innovation across WordPress ecosystems, e-commerce platforms, and SaaS marketplaces. Experienced in bridging backend infrastructure with intuitive frontends using PHP, React, JavaScript, and API orchestration. Built and led cohesive remote engineering teams while implementing AI-integrated tooling, and optimizing performance at scale for global platforms such as WooCommerce.com. Leadership across the full software development lifecycle, customer-centric design, and mentoring engineers across growth stages. Equally comfortable at the code level or driving strategy across departments.", | |
"location": { |
/* | |
Run the following terminal command from the sql folder to merge files into a new file: | |
cat *.sql > complete.sql | |
*/ | |
-- Add the following to the top of complete.sql | |
SET sql_mode = ''; | |
-- Import complete.sql as normal |
# This is a template .gitignore file for git-managed WordPress projects. | |
# | |
# Fact: you don't want WordPress core files, or your server-specific | |
# configuration files etc., in your project's repository. You just don't. | |
# | |
# Solution: stick this file up your repository root (which it assumes is | |
# also the WordPress root directory) and add exceptions for any plugins, | |
# themes, and other directories that should be under version control. | |
# | |
# See the comments below for more info on how to add exceptions for your |
<?php | |
/** | |
* Loads media from a remote site when on a local dev environment. | |
* Eliminates the need to download the uploads directory from the remote site for testing purposes. | |
*/ | |
//Replace yourdomain.local with local server domain | |
if ( 'yourdomain.local' === $_SERVER['HTTP_HOST'] ): | |
add_filter( 'upload_dir', function ( $uploads ) { | |
//Replace http://your-remote-site.com with your live site URL | |
$uploads['baseurl'] = 'http://your-remote-site.com/wp-content/uploads'; |
/** | |
* =========================================== | |
* Send Emails when User Profile Changes | |
* =========================================== | |
*/ | |
// IF EMAIL or NAME CHANGES | |
function user_profile_update_email( $user_id, $old_user_data ) { | |
//check session exists before evaluating |
class WP_Plugin_Boilerplate{ | |
// Constructor | |
function __construct() { | |
add_action( 'admin_menu', array( $this, 'wppb_add_menu' )); | |
register_activation_hook( __FILE__, array( $this, 'wppb_install' ) ); | |
register_deactivation_hook( __FILE__, array( $this, 'wppb_uninstall' ) ); | |
} |
# Ignore everything # | |
** | |
!wp-content/ | |
wp-content/** | |
!wp-content/themes/ | |
!wp-content/plugins/ | |
wp-content/themes/** | |
wp-content/plugins/** | |
# Add two rules for each Theme or Plugin you want to include: |