SlideShare une entreprise Scribd logo
1  sur  49
The Way to
Theme Enlightenment
Amanda Giles
@AmandaGilesNH
http://amandagiles.com/enlightenment
Who am I?
• Programmer since 1985 (Basic & Logo!)
• Made my first website in 1994
• Professionally coding for 20 years
• Independent Consultant since 2006
• Working with WordPress since 2009
• Started the Seacoast NH WordPress
Meetup in 2011
• Co-Created Spark Development
WordPress Development Agency
Beginning WordPress Development
http://www.usgamesinc.com/tarotblog/
Beginning WordPress Development
http://www.soulgeniusbranding.com/blog/2015/10/19/trading-in-my-know-it-all-for-a-beginners-mind
Child Themes
If you’re editing an existing theme,
USE A CHILD THEME!
The existing theme becomes your “parent” theme
and both themes are installed on your site.
A child theme separates your changes from the
underlying theme, allowing for upgrades of the
parent theme or support from the theme maker.
WordPress looks to the child theme first for files it
needs. If not found, it then looks in the parent.
https://codex.wordpress.org/Child_Themes
Child Themes
1. Make a child theme by adding a new folder
under wp-content/themes
2. Create style.css with informational header:
/*
Theme Name: John’s New Theme
Theme URI: http://janedoes.com/johns-theme/
Description: Child theme for John’s company
Theme Author: Jane Doe
Author URI: http://janedoes.com
Template: twentysixteen
*/
Child Themes
3. Create functions.php and include parent theme’s
CSS file:
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
//Include parent theme style
wp_enqueue_style(
'parent-style',
get_template_directory_uri() . '/style.css' );
//Include child theme style (dependent on parent style)
wp_enqueue_style(
'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( 'parent-style' )
);
}
Template Hierarchy
How WordPress determines which template file
(in your theme) to use to display a particular
page on your website.
Called a “hierarchy” because WordPress looks in
a specific order (from most specific to least
specific) to determine which file to use.
Important to understand so you don’t repeat
yourself unnecessarily in theme files.
Your entire theme could consist of just 2 files:
style.css + index.php
But that’s not usually the case!
Template Hierarchy
https://developer.wordpress.org/themes/basics/template-hierarchy/
https://wphierarchy.com/
Template Hierarchy Example
1. category-$slug.php Variable Template
2. category-$id.php Variable Template
3. category.php Secondary Template
4. archive.php Primary Template
5. paged.php Secondary Template
6. index.php Primary Template
Useful Theme Functions
get_header ( string $name = null )
get_sidebar (string $name = null )
get_footer (string $name = null )
get_template_part ( string $slug, string $name = null )
get_bloginfo ( string $show = '', string $filter = 'raw' )
Conditional Tags
Examples include:
• is_front_page()
• is_admin()
• is_single()
• is_page() / is_page(43) / is_page(‘about’)
• Is_page_template()
• is_category() / is_category(7) / is_category(‘news’)
• is_post_type_archive()
• Is_tax()
https://developer.wordpress.org/themes/basics/conditional-tags/
Content Functions
Examples include:
the_title() get_the_title()
the_permalink() get_the_permalink()
the_date() get_the_date()
the_post_thumbnail() get_the_post_thumbnail()
the_excerpt() get_the_excerpt()
the_content() get_the_content()
$content = apply_filters('the_content', get_the_content());
Functions.php
If you have a functions.php file in your active theme
directory, WordPress will automatically load this file
when viewing both the front and back-end of your
website.
Within this file, you can write your own functions and
call WordPress core or plugin functions.
Function names should be unique to avoid conflicts.
https://codex.wordpress.org/Functions_File_Explained
CSS Classes – body_class()
Most WordPress themes use body_class() on the
body tag and this gives you a very helpful set of CSS
classes.
<body <?php body_class(); ?>>
<body class="page page-id-89 page-template-default">
<body class="archive category category-news category-1
logged-in admin-bar no-customize-support">
<body class="single single-post postid-247 single-
format-standard">
<body class="single single-event postid-3448">
CSS Classes – post_class()
Many WordPress themes use post_class() on the post
<article> tag (single and archive pages) and this gives
you a very helpful set of CSS classes.
<article id="post-<?php the_ID(); ?>" <?php
post_class(); ?>>
<article id="post-247" class="post-247 post type-post
status-publish format-standard hentry category-news">
<article id="post-7537" class="post-7537 featured-
stories type-featured-stories status-publish hentry" >
The Loop & WP_Query()
“The Loop” is at the heart of all WordPress pages.
if ( have_posts() ) :
// Start the Loop.
while ( have_posts() ) : the_post();
get_template_part(
'template-parts/content',
get_post_format()
);
endwhile; // End the loop.
endif;
The Loop & WP_Query()
Use WP_Query() to write your own queries to pull
content from your WordPress site.
Define an array of your query parameters to pass to
WP_Query():
<?php
//Get 20 Books in alphabetical order by title
$args = array(
'post_type' => 'book',
'post_per_page' => 20,
'orderby' => 'title',
'order' => 'ASC'
);
The Loop & WP_Query()
Then pass that array of query arguments to WP_Query():
$query = new WP_Query( $args );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) :
$query->the_post();
get_template_part(
'template-parts/content', 'book' );
endwhile;
endif;
//Restore the $post global to the current post in
// the main query – VERY IMPORTANT!
wp_reset_postdata();
The Loop & WP_Query()
Make complex queries using tax_query:
$args = array(
'post_type' => 'book',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'genre',
'field' => 'slug',
'operator' => 'IN',
'terms' => 'romance'
array(
'taxonomy' => 'genre',
'field' => 'slug',
'terms' => 'featured'
) );
https://developer.wordpress.org/reference/classes/wp_query/
The Loop & WP_Query()
Make complex queries using meta_query:
$args = array(
'post_type' => 'book',
'tax_query' => array(
'relation' => ‘OR',
array(
'key' => 'rating',
'value' => '3',
'compare' => '>=',
'type' => 'numeric',
array(
'key' => 'recommended',
'value' => 'Y',
'compare' => '=',
)
);
https://developer.wordpress.org/reference/classes/wp_query/
Editable Regions
An editable region is an area of your site layout
that the user can access and control its content.
For example:
• Menus
• Widgets
A good theme creates editable regions
instead of hard-coding content into the
theme’s PHP files.
Menus
Users can create as many menus as they like, but
the way for a theme to know which one to use is
through Menu Locations.
Themes can define multiple Menu Locations using:
• register_nav_menu ( $location, $description );
• register_nav_menus ( $locations );
Menus associated with those locations can be
displayed using:
• has_nav_menu ( $location )
• wp_nav_menu ( array $args = array() )
Widgets are an indispensable tool which allow
users to add secondary content to their site.
Themes can define multiple Sidebars using:
• register_sidebar( $args )
• register_sidebars( $number, $args )
Widgets associated with those Sidebars can be
displayed using:
• is_active_sidebar( $index )
• dynamic_sidebar( $index )
Sidebars & Widgets
Hooks
A hook is an "event" within WordPress
code which allows for additional code to
be run when it occurs.
One or more functions can be associated
with a hook name and they will all run
when the hook is triggered.
https://codex.wordpress.org/Plugin_API/Hooks
Why Use Hooks?
Hooks are placed within WordPress core,
plugins, and themes to allow
customization by developers without
direct edits of the code.
Hooks are the proper way to alter the
default behavior of code which is not
yours to edit.
Types of Hooks
Action hooks allow you to run extra code at a
certain point within the code.
Examples in WP core include initialization (‘init’),
before main query is run (‘pre_get_posts’),
header (‘wp_head’) or footer (‘wp_footer’) of a
page/post.
Filter hooks allow you to alter data, content,
parameters. A filter hook passes information to
filter function and returns it altered (or not).
Examples in WP code include displaying content,
page/post title, pre-saving content (admin).
Action Hook Example
/*** In WordPress Core, hook is triggered ***/
function wp_head() {
/**
* Print scripts or data in the
* head tag on the front end.
*
* @since 1.5.0
*/
do_action( 'wp_head' );
}
/*** In your code…your function is run ***/
add_action('wp_head', 'show_my_fonts_css');
Filter Hook Example
/*** In WordPress Core, hook is triggered ***/
function the_content( ... ) {
$content = get_the_content(
$more_link_text, $strip_teaser );
$content = apply_filters(
'the_content', $content );
...
echo $content;
}
/*** In your code…your function is run ***/
add_filter('the_content', 'replace_trump' );
• WordPress has a built-in system to allow
you to put your style (CSS) and script (JS)
files into a queue to be loaded into the
header or footer of your site.
• Plugins needing the same script can utilize
a single version rather than each loading
their own version.
• This helps prevent conflicts and improves
site performance (fewer scripts loaded).
• When enqueueing styles and scripts you
can even declare dependencies.
Enqueueing
Enqueueing Theme Styles
Within child theme, create functions.php and include
parent theme’s CSS file:
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
//Include parent theme style
wp_enqueue_style(
'parent-style',
get_template_directory_uri() . '/style.css' );
//Include child theme style (dependent on parent style)
wp_enqueue_style(
'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( 'parent-style' )
);
}
Using WordPress as a CMS
CMS = Content Management System
WordPress is already a CMS containing these
Post Types:
Posts Media Items
Pages Menus
Revisions
WordPress can be extended beyond those to
include new Custom Post Types such as:
Events Portfolio Items
Products Resources
Forms Team Members
Taxonomies
Taxonomies are a way of categorizing content.
WordPress is already a CMS containing these
Taxonomies:
Categories
Tags
WordPress can be extended beyond those to
include new Custom Taxonomies such as:
Event Category
Portfolio Medium
Team
Genre
Custom Fields
Custom Fields are a way to track more specific
attributes of content.
Examples of Custom Fields include:
Event Date
Price
Location
Position
Extend WordPress Structure
• Create new Custom Post Types
• Create new Taxonomies
• Create new Custom Fields
Example:
Event Custom Post Type
Event Category Taxonomy
Event Date Custom Field
Event Fee Custom Field
Tools to Extend WordPress
Custom Post Types & Taxonomy plugins:
• Custom Post Type UI
• MasterPress
• Pods
Advanced Meta / Custom Field plugins:
• Advanced Custom Fields
• Custom Field Suite
• CMB2
• Meta Box
Extend WordPress Yourself
• Use register_post_type() to create Custom
Post Types
• Use register_taxonomy () to create Custom
Taxonomies
• Use add_meta_boxes hook to add custom
fields to edit screens and get_post_meta() to
display those fields in your templates.
Check WordPress Code Reference or the Codex
for help on writing those functions or the
GenerateWP website to facilitate writing them.
Shortcodes
Shortcodes are a placeholder mechanism
whereby strings placed in content get replaced in
real-time with other content.
WordPress itself includes shortcodes such as
[gallery] and [embed] as do many plugins.
Themes can include their own shortcodes to help
users display content.
https://codex.wordpress.org/Shortcode_API
Shortcode Example
/*
* Email
*
* Given an email address, it encrypts the mailto
* and the text of the email and returns a proper
* email link which can't be picked up on bots
*/
function mytheme_email_encode( $atts, $content ){
return '<a href="' .
antispambot("mailto:".$content) . '">' .
antispambot($content) . '</a>';
}
add_shortcode( 'email', 'mytheme_email_encode' );
NOTE: Shortcode functions must RETURN content (not echo!)
If I was a Time Lord…
We would also cover:
• Transients API
• Customizer
• Customizing the Admin
• Creating Dashboard Widgets
• Debugging
• Developer Tools
Up Your Game!
• Read Developer Blogs & subscribe to those you
like or follow on Twitter
• Subscribe to The Whip newsletter by WPMU
• Subscribe to updates on Make WordPress Core
• Subscribe to Post Status (WordPress newsletter –
paid service)
• Set aside time each day or week to read
WordPress news or research code
• Use an IDE (Integrated Development
Environment) so you can go right into a core or
plugin function to look for hooks or check
functionality
Resources
Codex: https://codex.wordpress.org/
Theme Handbook:
https://developer.wordpress.org/themes/getting
-started/
Code Reference:
https://developer.wordpress.org/reference/
Thank You
Amanda Giles
@AmandaGilesNH
www.Amanda Giles.com
Slides: http://amandagiles.com/enlightenment
Background designs are the property of Geetesh Bajaj. Used with
permission. © Copyright, Geetesh Bajaj. All Rights Reserved.

Contenu connexe

Tendances

Intro to WordPress theme development
Intro to WordPress theme developmentIntro to WordPress theme development
Intro to WordPress theme developmentThad Allender
 
WordPress Theme Structure
WordPress Theme StructureWordPress Theme Structure
WordPress Theme Structurekeithdevon
 
Becoming a better WordPress Developer
Becoming a better WordPress DeveloperBecoming a better WordPress Developer
Becoming a better WordPress DeveloperJoey Kudish
 
Responsive Theme Workshop - WordCamp Columbus 2015
Responsive Theme Workshop - WordCamp Columbus 2015Responsive Theme Workshop - WordCamp Columbus 2015
Responsive Theme Workshop - WordCamp Columbus 2015Joe Querin
 
Custom Post Types in Depth at WordCamp Montreal
Custom Post Types in Depth at WordCamp MontrealCustom Post Types in Depth at WordCamp Montreal
Custom Post Types in Depth at WordCamp MontrealJoey Kudish
 
Introduction to WordPress Theme Development
Introduction to WordPress Theme DevelopmentIntroduction to WordPress Theme Development
Introduction to WordPress Theme DevelopmentSitdhibong Laokok
 
Introduction to Custom WordPress Themeing
Introduction to Custom WordPress ThemeingIntroduction to Custom WordPress Themeing
Introduction to Custom WordPress ThemeingJamie Schmid
 
Theme development essentials columbus oh word camp 2012
Theme development essentials   columbus oh word camp 2012Theme development essentials   columbus oh word camp 2012
Theme development essentials columbus oh word camp 2012Joe Querin
 
Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...
Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...
Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...LinnAlexandra
 
Theming Wordpress with Adobe
Theming Wordpress with AdobeTheming Wordpress with Adobe
Theming Wordpress with AdobeGrace Solivan
 
How to Prepare a WordPress Theme for Public Release
How to Prepare a WordPress Theme for Public ReleaseHow to Prepare a WordPress Theme for Public Release
How to Prepare a WordPress Theme for Public ReleaseDavid Yeiser
 
Build a WordPress theme from HTML5 template @ Telerik
Build a WordPress theme from HTML5 template @ TelerikBuild a WordPress theme from HTML5 template @ Telerik
Build a WordPress theme from HTML5 template @ TelerikMario Peshev
 
WordPress Theme Development
WordPress Theme DevelopmentWordPress Theme Development
WordPress Theme DevelopmentWisdmLabs
 
WordCamp Boston 2012 - Creating Content With Shortcodes
WordCamp Boston 2012 - Creating Content With ShortcodesWordCamp Boston 2012 - Creating Content With Shortcodes
WordCamp Boston 2012 - Creating Content With ShortcodesJon Bishop
 
Cms & wordpress theme development 2011
Cms & wordpress theme development 2011Cms & wordpress theme development 2011
Cms & wordpress theme development 2011Dave Wallace
 

Tendances (20)

Intro to WordPress theme development
Intro to WordPress theme developmentIntro to WordPress theme development
Intro to WordPress theme development
 
WordPress Theme Structure
WordPress Theme StructureWordPress Theme Structure
WordPress Theme Structure
 
Becoming a better WordPress Developer
Becoming a better WordPress DeveloperBecoming a better WordPress Developer
Becoming a better WordPress Developer
 
Rebrand WordPress Admin
Rebrand WordPress AdminRebrand WordPress Admin
Rebrand WordPress Admin
 
Responsive Theme Workshop - WordCamp Columbus 2015
Responsive Theme Workshop - WordCamp Columbus 2015Responsive Theme Workshop - WordCamp Columbus 2015
Responsive Theme Workshop - WordCamp Columbus 2015
 
Custom Post Types in Depth at WordCamp Montreal
Custom Post Types in Depth at WordCamp MontrealCustom Post Types in Depth at WordCamp Montreal
Custom Post Types in Depth at WordCamp Montreal
 
Seven deadly theming sins
Seven deadly theming sinsSeven deadly theming sins
Seven deadly theming sins
 
Introduction to WordPress Theme Development
Introduction to WordPress Theme DevelopmentIntroduction to WordPress Theme Development
Introduction to WordPress Theme Development
 
Introduction to Custom WordPress Themeing
Introduction to Custom WordPress ThemeingIntroduction to Custom WordPress Themeing
Introduction to Custom WordPress Themeing
 
Theme development essentials columbus oh word camp 2012
Theme development essentials   columbus oh word camp 2012Theme development essentials   columbus oh word camp 2012
Theme development essentials columbus oh word camp 2012
 
Theming 101
Theming 101Theming 101
Theming 101
 
Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...
Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...
Don't Fear the Custom Theme: How to build a custom WordPress theme with only ...
 
Theming Wordpress with Adobe
Theming Wordpress with AdobeTheming Wordpress with Adobe
Theming Wordpress with Adobe
 
How to Prepare a WordPress Theme for Public Release
How to Prepare a WordPress Theme for Public ReleaseHow to Prepare a WordPress Theme for Public Release
How to Prepare a WordPress Theme for Public Release
 
Build a WordPress theme from HTML5 template @ Telerik
Build a WordPress theme from HTML5 template @ TelerikBuild a WordPress theme from HTML5 template @ Telerik
Build a WordPress theme from HTML5 template @ Telerik
 
WordPress Theme Development
WordPress Theme DevelopmentWordPress Theme Development
WordPress Theme Development
 
Custom Fields & Custom Metaboxes Overview
Custom Fields & Custom Metaboxes OverviewCustom Fields & Custom Metaboxes Overview
Custom Fields & Custom Metaboxes Overview
 
Demystifying WordPress Conditional Tags
Demystifying WordPress Conditional TagsDemystifying WordPress Conditional Tags
Demystifying WordPress Conditional Tags
 
WordCamp Boston 2012 - Creating Content With Shortcodes
WordCamp Boston 2012 - Creating Content With ShortcodesWordCamp Boston 2012 - Creating Content With Shortcodes
WordCamp Boston 2012 - Creating Content With Shortcodes
 
Cms & wordpress theme development 2011
Cms & wordpress theme development 2011Cms & wordpress theme development 2011
Cms & wordpress theme development 2011
 

Similaire à The Way to Theme Enlightenment

The Way to Theme Enlightenment 2017
The Way to Theme Enlightenment 2017The Way to Theme Enlightenment 2017
The Way to Theme Enlightenment 2017Amanda Giles
 
Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919Paul Bearne
 
WordPress Theme Workshop: Part 4
WordPress Theme Workshop: Part 4WordPress Theme Workshop: Part 4
WordPress Theme Workshop: Part 4David Bisset
 
How to make a WordPress theme
How to make a WordPress themeHow to make a WordPress theme
How to make a WordPress themeHardeep Asrani
 
WordPress Theme Workshop: Part 3
WordPress Theme Workshop: Part 3WordPress Theme Workshop: Part 3
WordPress Theme Workshop: Part 3David Bisset
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress WebsitesKyle Cearley
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practicesmarkparolisi
 
PSD to WordPress
PSD to WordPressPSD to WordPress
PSD to WordPressNile Flores
 
Word press templates
Word press templatesWord press templates
Word press templatesDan Phiffer
 
Getting started with WordPress development
Getting started with WordPress developmentGetting started with WordPress development
Getting started with WordPress developmentSteve Mortiboy
 
WordPress Themes 101 - dotEduGuru Summit 2013
WordPress Themes 101 - dotEduGuru Summit 2013WordPress Themes 101 - dotEduGuru Summit 2013
WordPress Themes 101 - dotEduGuru Summit 2013Curtiss Grymala
 
WordPress Theme Design and Development Workshop - Day 2
WordPress Theme Design and Development Workshop - Day 2WordPress Theme Design and Development Workshop - Day 2
WordPress Theme Design and Development Workshop - Day 2Mizanur Rahaman Mizan
 
WordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media InstituteWordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media InstituteBrendan Sera-Shriar
 
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Mike Schinkel
 
Customizing WordPress Themes
Customizing WordPress ThemesCustomizing WordPress Themes
Customizing WordPress ThemesLaura Hartwig
 
Week 7 introduction to theme development
Week 7   introduction to theme developmentWeek 7   introduction to theme development
Week 7 introduction to theme developmenthenri_makembe
 
Intro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentIntro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentBrad Williams
 
Easy Guide to WordPress Theme Integration
Easy Guide to WordPress Theme IntegrationEasy Guide to WordPress Theme Integration
Easy Guide to WordPress Theme IntegrationSankhala Info Solutions
 
Building themesfromscratchwithframeworks
Building themesfromscratchwithframeworksBuilding themesfromscratchwithframeworks
Building themesfromscratchwithframeworksDavid Brattoli
 

Similaire à The Way to Theme Enlightenment (20)

The Way to Theme Enlightenment 2017
The Way to Theme Enlightenment 2017The Way to Theme Enlightenment 2017
The Way to Theme Enlightenment 2017
 
Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919
 
WordPress Theming 101
WordPress Theming 101WordPress Theming 101
WordPress Theming 101
 
WordPress Theme Workshop: Part 4
WordPress Theme Workshop: Part 4WordPress Theme Workshop: Part 4
WordPress Theme Workshop: Part 4
 
How to make a WordPress theme
How to make a WordPress themeHow to make a WordPress theme
How to make a WordPress theme
 
WordPress Theme Workshop: Part 3
WordPress Theme Workshop: Part 3WordPress Theme Workshop: Part 3
WordPress Theme Workshop: Part 3
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress Websites
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practices
 
PSD to WordPress
PSD to WordPressPSD to WordPress
PSD to WordPress
 
Word press templates
Word press templatesWord press templates
Word press templates
 
Getting started with WordPress development
Getting started with WordPress developmentGetting started with WordPress development
Getting started with WordPress development
 
WordPress Themes 101 - dotEduGuru Summit 2013
WordPress Themes 101 - dotEduGuru Summit 2013WordPress Themes 101 - dotEduGuru Summit 2013
WordPress Themes 101 - dotEduGuru Summit 2013
 
WordPress Theme Design and Development Workshop - Day 2
WordPress Theme Design and Development Workshop - Day 2WordPress Theme Design and Development Workshop - Day 2
WordPress Theme Design and Development Workshop - Day 2
 
WordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media InstituteWordPress 2.5 Overview - Rich Media Institute
WordPress 2.5 Overview - Rich Media Institute
 
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
 
Customizing WordPress Themes
Customizing WordPress ThemesCustomizing WordPress Themes
Customizing WordPress Themes
 
Week 7 introduction to theme development
Week 7   introduction to theme developmentWeek 7   introduction to theme development
Week 7 introduction to theme development
 
Intro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentIntro to WordPress Plugin Development
Intro to WordPress Plugin Development
 
Easy Guide to WordPress Theme Integration
Easy Guide to WordPress Theme IntegrationEasy Guide to WordPress Theme Integration
Easy Guide to WordPress Theme Integration
 
Building themesfromscratchwithframeworks
Building themesfromscratchwithframeworksBuilding themesfromscratchwithframeworks
Building themesfromscratchwithframeworks
 

Dernier

Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...tanu pandey
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Servicesexy call girls service in goa
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)Delhi Call girls
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...singhpriety023
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...SofiyaSharma5
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.CarlotaBedoya1
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableSeo
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.soniya singh
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.soniya singh
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Delhi Call girls
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Call Girls in Nagpur High Profile
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445ruhi
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...Escorts Call Girls
 

Dernier (20)

Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting  High Prof...
VIP Model Call Girls Hadapsar ( Pune ) Call ON 9905417584 Starting High Prof...
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
Low Rate Young Call Girls in Sector 63 Mamura Noida ✔️☆9289244007✔️☆ Female E...
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
 
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service AvailableCall Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
Call Girls Ludhiana Just Call 98765-12871 Top Class Call Girl Service Available
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
 
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
(INDIRA) Call Girl Pune Call Now 8250077686 Pune Escorts 24x7
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 

The Way to Theme Enlightenment

  • 1. The Way to Theme Enlightenment Amanda Giles @AmandaGilesNH http://amandagiles.com/enlightenment
  • 2. Who am I? • Programmer since 1985 (Basic & Logo!) • Made my first website in 1994 • Professionally coding for 20 years • Independent Consultant since 2006 • Working with WordPress since 2009 • Started the Seacoast NH WordPress Meetup in 2011 • Co-Created Spark Development WordPress Development Agency
  • 5. Child Themes If you’re editing an existing theme, USE A CHILD THEME! The existing theme becomes your “parent” theme and both themes are installed on your site. A child theme separates your changes from the underlying theme, allowing for upgrades of the parent theme or support from the theme maker. WordPress looks to the child theme first for files it needs. If not found, it then looks in the parent. https://codex.wordpress.org/Child_Themes
  • 6. Child Themes 1. Make a child theme by adding a new folder under wp-content/themes 2. Create style.css with informational header: /* Theme Name: John’s New Theme Theme URI: http://janedoes.com/johns-theme/ Description: Child theme for John’s company Theme Author: Jane Doe Author URI: http://janedoes.com Template: twentysixteen */
  • 7. Child Themes 3. Create functions.php and include parent theme’s CSS file: add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function theme_enqueue_styles() { //Include parent theme style wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); //Include child theme style (dependent on parent style) wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( 'parent-style' ) ); }
  • 8. Template Hierarchy How WordPress determines which template file (in your theme) to use to display a particular page on your website. Called a “hierarchy” because WordPress looks in a specific order (from most specific to least specific) to determine which file to use. Important to understand so you don’t repeat yourself unnecessarily in theme files. Your entire theme could consist of just 2 files: style.css + index.php But that’s not usually the case!
  • 10. Template Hierarchy Example 1. category-$slug.php Variable Template 2. category-$id.php Variable Template 3. category.php Secondary Template 4. archive.php Primary Template 5. paged.php Secondary Template 6. index.php Primary Template
  • 11. Useful Theme Functions get_header ( string $name = null ) get_sidebar (string $name = null ) get_footer (string $name = null ) get_template_part ( string $slug, string $name = null ) get_bloginfo ( string $show = '', string $filter = 'raw' )
  • 12. Conditional Tags Examples include: • is_front_page() • is_admin() • is_single() • is_page() / is_page(43) / is_page(‘about’) • Is_page_template() • is_category() / is_category(7) / is_category(‘news’) • is_post_type_archive() • Is_tax() https://developer.wordpress.org/themes/basics/conditional-tags/
  • 13. Content Functions Examples include: the_title() get_the_title() the_permalink() get_the_permalink() the_date() get_the_date() the_post_thumbnail() get_the_post_thumbnail() the_excerpt() get_the_excerpt() the_content() get_the_content() $content = apply_filters('the_content', get_the_content());
  • 14. Functions.php If you have a functions.php file in your active theme directory, WordPress will automatically load this file when viewing both the front and back-end of your website. Within this file, you can write your own functions and call WordPress core or plugin functions. Function names should be unique to avoid conflicts. https://codex.wordpress.org/Functions_File_Explained
  • 15. CSS Classes – body_class() Most WordPress themes use body_class() on the body tag and this gives you a very helpful set of CSS classes. <body <?php body_class(); ?>> <body class="page page-id-89 page-template-default"> <body class="archive category category-news category-1 logged-in admin-bar no-customize-support"> <body class="single single-post postid-247 single- format-standard"> <body class="single single-event postid-3448">
  • 16. CSS Classes – post_class() Many WordPress themes use post_class() on the post <article> tag (single and archive pages) and this gives you a very helpful set of CSS classes. <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <article id="post-247" class="post-247 post type-post status-publish format-standard hentry category-news"> <article id="post-7537" class="post-7537 featured- stories type-featured-stories status-publish hentry" >
  • 17. The Loop & WP_Query() “The Loop” is at the heart of all WordPress pages. if ( have_posts() ) : // Start the Loop. while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content', get_post_format() ); endwhile; // End the loop. endif;
  • 18. The Loop & WP_Query() Use WP_Query() to write your own queries to pull content from your WordPress site. Define an array of your query parameters to pass to WP_Query(): <?php //Get 20 Books in alphabetical order by title $args = array( 'post_type' => 'book', 'post_per_page' => 20, 'orderby' => 'title', 'order' => 'ASC' );
  • 19. The Loop & WP_Query() Then pass that array of query arguments to WP_Query(): $query = new WP_Query( $args ); if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); get_template_part( 'template-parts/content', 'book' ); endwhile; endif; //Restore the $post global to the current post in // the main query – VERY IMPORTANT! wp_reset_postdata();
  • 20. The Loop & WP_Query() Make complex queries using tax_query: $args = array( 'post_type' => 'book', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'genre', 'field' => 'slug', 'operator' => 'IN', 'terms' => 'romance' array( 'taxonomy' => 'genre', 'field' => 'slug', 'terms' => 'featured' ) ); https://developer.wordpress.org/reference/classes/wp_query/
  • 21. The Loop & WP_Query() Make complex queries using meta_query: $args = array( 'post_type' => 'book', 'tax_query' => array( 'relation' => ‘OR', array( 'key' => 'rating', 'value' => '3', 'compare' => '>=', 'type' => 'numeric', array( 'key' => 'recommended', 'value' => 'Y', 'compare' => '=', ) ); https://developer.wordpress.org/reference/classes/wp_query/
  • 22. Editable Regions An editable region is an area of your site layout that the user can access and control its content. For example: • Menus • Widgets A good theme creates editable regions instead of hard-coding content into the theme’s PHP files.
  • 23. Menus Users can create as many menus as they like, but the way for a theme to know which one to use is through Menu Locations. Themes can define multiple Menu Locations using: • register_nav_menu ( $location, $description ); • register_nav_menus ( $locations ); Menus associated with those locations can be displayed using: • has_nav_menu ( $location ) • wp_nav_menu ( array $args = array() )
  • 24. Widgets are an indispensable tool which allow users to add secondary content to their site. Themes can define multiple Sidebars using: • register_sidebar( $args ) • register_sidebars( $number, $args ) Widgets associated with those Sidebars can be displayed using: • is_active_sidebar( $index ) • dynamic_sidebar( $index ) Sidebars & Widgets
  • 25. Hooks A hook is an "event" within WordPress code which allows for additional code to be run when it occurs. One or more functions can be associated with a hook name and they will all run when the hook is triggered. https://codex.wordpress.org/Plugin_API/Hooks
  • 26. Why Use Hooks? Hooks are placed within WordPress core, plugins, and themes to allow customization by developers without direct edits of the code. Hooks are the proper way to alter the default behavior of code which is not yours to edit.
  • 27. Types of Hooks Action hooks allow you to run extra code at a certain point within the code. Examples in WP core include initialization (‘init’), before main query is run (‘pre_get_posts’), header (‘wp_head’) or footer (‘wp_footer’) of a page/post. Filter hooks allow you to alter data, content, parameters. A filter hook passes information to filter function and returns it altered (or not). Examples in WP code include displaying content, page/post title, pre-saving content (admin).
  • 28. Action Hook Example /*** In WordPress Core, hook is triggered ***/ function wp_head() { /** * Print scripts or data in the * head tag on the front end. * * @since 1.5.0 */ do_action( 'wp_head' ); } /*** In your code…your function is run ***/ add_action('wp_head', 'show_my_fonts_css');
  • 29. Filter Hook Example /*** In WordPress Core, hook is triggered ***/ function the_content( ... ) { $content = get_the_content( $more_link_text, $strip_teaser ); $content = apply_filters( 'the_content', $content ); ... echo $content; } /*** In your code…your function is run ***/ add_filter('the_content', 'replace_trump' );
  • 30. • WordPress has a built-in system to allow you to put your style (CSS) and script (JS) files into a queue to be loaded into the header or footer of your site. • Plugins needing the same script can utilize a single version rather than each loading their own version. • This helps prevent conflicts and improves site performance (fewer scripts loaded). • When enqueueing styles and scripts you can even declare dependencies. Enqueueing
  • 31. Enqueueing Theme Styles Within child theme, create functions.php and include parent theme’s CSS file: add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function theme_enqueue_styles() { //Include parent theme style wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); //Include child theme style (dependent on parent style) wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( 'parent-style' ) ); }
  • 32. Using WordPress as a CMS CMS = Content Management System WordPress is already a CMS containing these Post Types: Posts Media Items Pages Menus Revisions WordPress can be extended beyond those to include new Custom Post Types such as: Events Portfolio Items Products Resources Forms Team Members
  • 33. Taxonomies Taxonomies are a way of categorizing content. WordPress is already a CMS containing these Taxonomies: Categories Tags WordPress can be extended beyond those to include new Custom Taxonomies such as: Event Category Portfolio Medium Team Genre
  • 34. Custom Fields Custom Fields are a way to track more specific attributes of content. Examples of Custom Fields include: Event Date Price Location Position
  • 35. Extend WordPress Structure • Create new Custom Post Types • Create new Taxonomies • Create new Custom Fields Example: Event Custom Post Type Event Category Taxonomy Event Date Custom Field Event Fee Custom Field
  • 36. Tools to Extend WordPress Custom Post Types & Taxonomy plugins: • Custom Post Type UI • MasterPress • Pods Advanced Meta / Custom Field plugins: • Advanced Custom Fields • Custom Field Suite • CMB2 • Meta Box
  • 37. Extend WordPress Yourself • Use register_post_type() to create Custom Post Types • Use register_taxonomy () to create Custom Taxonomies • Use add_meta_boxes hook to add custom fields to edit screens and get_post_meta() to display those fields in your templates. Check WordPress Code Reference or the Codex for help on writing those functions or the GenerateWP website to facilitate writing them.
  • 38. Shortcodes Shortcodes are a placeholder mechanism whereby strings placed in content get replaced in real-time with other content. WordPress itself includes shortcodes such as [gallery] and [embed] as do many plugins. Themes can include their own shortcodes to help users display content. https://codex.wordpress.org/Shortcode_API
  • 39. Shortcode Example /* * Email * * Given an email address, it encrypts the mailto * and the text of the email and returns a proper * email link which can't be picked up on bots */ function mytheme_email_encode( $atts, $content ){ return '<a href="' . antispambot("mailto:".$content) . '">' . antispambot($content) . '</a>'; } add_shortcode( 'email', 'mytheme_email_encode' ); NOTE: Shortcode functions must RETURN content (not echo!)
  • 40. If I was a Time Lord… We would also cover: • Transients API • Customizer • Customizing the Admin • Creating Dashboard Widgets • Debugging • Developer Tools
  • 41. Up Your Game! • Read Developer Blogs & subscribe to those you like or follow on Twitter • Subscribe to The Whip newsletter by WPMU • Subscribe to updates on Make WordPress Core • Subscribe to Post Status (WordPress newsletter – paid service) • Set aside time each day or week to read WordPress news or research code • Use an IDE (Integrated Development Environment) so you can go right into a core or plugin function to look for hooks or check functionality
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49. Thank You Amanda Giles @AmandaGilesNH www.Amanda Giles.com Slides: http://amandagiles.com/enlightenment Background designs are the property of Geetesh Bajaj. Used with permission. © Copyright, Geetesh Bajaj. All Rights Reserved.