find . -type d -exec chmod 755 {} + find . -type f -exec chmod 644 {} +
Wordpress Developer Guide
- What is Wordpress (AKA WP)
- Useful Links
- Recommended Themes
- Recommended Plugins
- Recommended Themes & Plugins Marketplaces
- Working with WP CLI (WordPress Command Line Interface)
- WordPress Coding Standards
- How to Create a WP Plugin?
- How to Create a WP Theme ?
- WP Configuration
- WP REST API
- Understanding WP Action & Filter Hooks
- WP Optimisation
- WP & MySQL Code Samples
What is Wordpress (AKA WP)
WordPress (WordPress.org) is a content management system (CMS) written in PHP … Source : Wikipidia
Useful Links
General Information
Repos of Plugins & Frameworks (Not listed on WordPress marketplace)
Recommended Themes
Sage Theme Framework (Free)
-
Aimed at developers.
-
Sage is a WordPress starter theme with a modern development workflow.
-
Sass for stylesheets
-
Modern JavaScript
-
Webpack for compiling assets, optimizing images, and concatenating and minifying files
-
Browsersync for synchronized browser testing
-
Blade as a templating engine
-
Controller for passing data to Blade templates
-
CSS framework (optional): Bootstrap 4, Bulma, Foundation, Tachyons, Tailwind
SiteOrigin Vantage (Freemium)
-
Works well with SiteOrigin Page Builder
Avada (Paid)
-
Priced at $60 with over 300,000 sales. (ToDo) Test & Provide more info.
Components.underscores.me theme generator by WP
-
Aimed at developers.
UnderStrap: Underscores starter theme + Bootstrap (Free)
-
Aimed at developers.
-
Has a sample child theme to get started quickly.
-
Aimed at developers and does not include pretty css for production sites.
Recommended Plugins
-
Listed in a WP CLI command below for now.
Recommended Themes & Plugins Marketplaces
Elegent Themes
-
Pricing : $250 USD lifetime access & updates. Other options available.
-
Included Themes
-
Divi Theme
-
-
Included Plugins
-
Bloom
-
-
Third Party Elegant Themes:
WPMUDEV Plugins (Freemium)
-
Smush
-
HummingBird
-
Defender
https://themefuse.com (premium)
-
Pricing: $250 life time access & updates. Other options available.
Working with WP CLI (WordPress Command Line Interface)
Setting File permission
The recommended file permissions are 755
for folders & 644
for files.
To correct WordPress file permission, you can run the following commands in the terminal at the root level of the project (Usually public_html/
)
WP CLI Commands
wp core download
wp plugin install \ classic-editor \ shortcodes-ultimate \ worker \ duplicate-post \ easy-wp-smtp \ contact-form-7 \ flamingo \ simple-image-sizes \ wordpress-seo \ updraftplus \ duplicator \ wp-force-login wp plugin install \ wp-smushit \ hummingbird-performance \ defender-security \ smartcrawl-seo wp plugin install \ user-role-editor \ query-monitor wp plugin install \ woocommerce # Alternitaves wp plugin install custom-sidebars wp plugin install cc-child-pages wp plugin install imagemagick-engine wp plugin install post-smtp wp plugin install w3-total-cache
wp post create --post_type=page --post_status="publish" --post_title="Home" wp post create --post_type=page --post_status="publish" --post_title="About" wp post create --post_type=page --post_status="publish" --post_title="Contact" wp post create --post_type=page --post_status="publish" --post_title="Services" wp post create --post_type=page --post_status="publish" --post_title="Terms & Conditions" wp post create --post_type=page --post_status="publish" --post_title="Privacy Policy"
wp menu create "Primary Menu" wp menu location assign primary-menu primary wp menu create "Secondary Menu" wp menu create "Sidebar Menu" wp menu create "Footer Menu"
WordPress Coding Standards
Moved to programming/conventions/
folder.
How to Create a WP Plugin?
Sample Plugin
-
Create a file under WP root
/wp-content/plugins/my-plugin-name/my-plugin-name.php
-
Add then modify the following code as needed
<?php /** * Plugin Name: MyPluginName * Plugin URI: mypluginname.com * Description: myplugindescription * Version: 0.1.0 * Author: My Name * Author URI: https://mywebsite.com * */ // Function containing my code function my_plugin_name__function_name(){ } add_action('plugins_loaded', 'my_plugin_name__function_name');
How to Create a WP Theme ?
WP Configuration
Sample wp-config.php
Note: Configs below used in test environment, it’s highly recommended you change them as needed for live websites.
// Load test environment config based on requested domain, else load SAFE live site config
if (
key_exists('HTTP_HOST', $_SERVER) &&
(($_SERVER['HTTP_HOST'] == "testing-domain.example.com.com") ||
!($_SERVER['SERVER_ADDR']))
) {
define('WP_SITEURL', 'https://example.com');
define('WP_HOME', WP_SITEURL);
define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);
define('WP_DEBUG_LOG', true);
define('WP_DISABLE_FATAL_ERROR_HANDLER', false);
define('SCRIPT_DEBUG', true);
define('DISALLOW_FILE_EDIT', false);
define('DISALLOW_FILE_MODS', false);
ini_set('display_errors', 1);
}else{
// Load SAFE live site config .
}
Control WP Updates Notifications
Add the following code to your theme or plugin to disable successful update notifications.
add_filter( 'auto_core_update_send_email', 'wpb_stop_auto_update_emails', 10, 4 );
function wpb_stop_update_emails( $send, $type, $core_update, $result ) {
if ( ! empty( $type ) && $type == 'success' ) {
return false;
}
return true;
}
WP Settings
-
Enable Pretty URL
-
Disable comments or at least limit them to loggin users till anti spam measures are taken.
WP REST API
Links
Code Samples
example.com/wp-json/wp/v2/posts?per_page=3&orderby=date&order=desc&status=publish
Understanding WP Action & Filter Hooks
Useful Links
Commonly used action hooks.
muplugins_loaded plugin_loaded` init wp_loaded wp
Commonly used filter hooks.
WP Optimisation
-
Use PHP 7.2 with Opcache
-
GZip
-
Convert images to .webp
-
Image lazy loading
-
Long term file cache by adding expiry headers.
WP & MySQL Code Samples
Change WP Site URL
UPDATE wp_options SET option_value = replace(option_value, 'oldurl.com', 'newurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';UPDATE wp_posts SET guid = replace(guid, 'oldurl.com','newurl.com'); UPDATE wp_posts SET post_content = replace(post_content, 'oldurl.com', 'newurl.com'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'oldurl.com','newurl.com');