SlideShare a Scribd company logo
1 of 48
iThemes Exchange
for developers
Simple ecommerce for WordPress
Where do you jump in?
How is Exchange Organized
● /lib
How is Exchange Organized
● /lib
● /api
How is Exchange Organized
● /lib
● /api
● /core-addons
How do I register an add-on?
exchange-addon-stripe/exchange-addon-stripe.php
How do I generate a settings page?
exchange-addon-stripe/exchange-addon-stripe.php
How do I generate a settings page?
exchange-addon-stripe/lib/addon-settings.php
How do Products & Product Types
work?
● All Exchange products are a single WP
post_type
● Product Features are tied to product types
● Admin UI is reactive to the registered types
o Setup Wizard
o Sidebar
o Add / Edit products
ithemes-exchange/lib/products/class.products-post-type.php
One WP post_type
How do Products & Product Types work?
Admin UI is Reactive
How do Products & Product Types work?
How do I register a Product Type?
Product Types are
an add-on category
How do I register a Product Type?
exchange-addon-membership/exchange-addon-membership.php
Product Types are
an add-on category
What are Product Features?
product_feature all the things!
ithemes-exchange/lib/product-features/
How do Product Features work?
product_feature all the things!
ithemes-exchange/lib/product-features/class.downloads.php
hooked to it_exchange_enabled_addons_loaded
How do Product Features work?
product_feature all the things!
ithemes-exchange/lib/product-features/
How do Product Features work?
Use the Abstract
Class to create
Product Features
How do Product Features work?
ithemes-exchange/lib/product-features/class.inventory.php
See the inventory
product feature as
example of
abstract
implementation.
How do Product Features work?
product_feature all the things!
ithemes-exchange/lib/product-features/
Why use our Product Feature class?
● it_exchange_product_supports_feature()
● it_exchange_product_has_feature()
● it_exchange_update_product_feature()
● it_exchange_get_product_feature()
● it_exchange_add_feature_support_to_product_type()
● it_exchange_remove_feature_support_for_product_type()
● it_exchange_product_type_supports_feature()
● it_exchange_get_registered_product_features()
It exposes your feature to all these API functions
ithemes-exchange/api/product-features.php
How do I use a Product Feature?
product features API
ithemes-exchange/api/theme/products.php
How do Exchange Pages work?
How do Exchange Pages work?
Pages have 1-3 options: Exchange, WordPress,
Disabled
How do I register an Exchange
page?
ithemes-
exchange/lib/api/pages.php
How does templating work?
We have #alot of template-parts
ithemes-exchange/lib/templates/
http://hyperboleandahalf.blogspot.com/2010/04/alot-is-better-than-you-at-
everything.html
How does templating work?
Standard Templating Components
ithemes-exchange/lib/templates/content-store.php
How does templating work?
Top Level v. Loops v. Elements ( all template-
parts )
ithemes-exchange/lib/templates/content-login.php
Loops are template-parts too but their primary job is to
call additional (but related) template-parts.
ithemes-exchange/lib/templates/content-login/loops/fields.php
TopLevelLoop
How does templating work?
Top Level v. Loops v. Elements ( all template-
parts ) Elements are usually extremely small chunks of HTML
ithemes-exchange/lib/templates/content-login/loops/fields.phpLoop
ithemes-exchange/lib/templates/content-login/elements/username.php
Element
There are 3 ways increasingly complex ways to alter output
1. WordPress Hooks ( multiple hooks in every template part )
o Ideal for quick additions to non-distributed code
2. Overwriting individual template parts in your theme
o Ideal for theme authors or clients that have highly customized
themes and may need some custom CSS classes, etc.
3. Inserting, removing, rearranging template parts with the templating
API
o Ideal for add-on developers and clients that may enable
additional add-ons without you in the future.
How should I modify the templates?
1) WordPress Hooks (simple)
How should I modify the templates?
ithemes-exchange/lib/templates/content-registration/elements/email.php
2) Overwriting template parts in your theme (moderately difficult)
How should I modify the templates?
ithemes-exchange/lib/templates/content-store/elements/featured-image.php
themes/twentythirteen-child-exchange/exchange/content-store/elements/featured-image.php
2) Overwriting template parts in your theme (moderately difficult)
How should I modify the templates?
ithemes-exchange/lib/templates/content-store/elements/featured-image.php
themes/twentythirteen-child-exchange/exchange/content-store/elements/featured-image.php
Exchange looks for the template-parts in the following locations by
default
1. [child-theme]/exchange/
2. [parent-theme]/exchange/
3. ithemes-exchange/lib/templates/
2) Overwriting template parts in your theme (moderately difficult)
How should I modify the templates?
3) Inserting / deleting / rearranging ( difficult but powerful )
How should I modify the templates?
ithemes-exchange/api/template-parts.php
3) Inserting / deleting / rearranging ( difficult but powerful )
How should I modify the templates?
ithemes-exchange/lib/templates/content-login/loops/fields.php
ithemes-exchange/api/template-parts.php
3) Inserting / deleting / rearranging ( difficult but powerful )
How should I modify the templates?
ithemes-exchange/lib/templates/content-login/loops/fields.php
ithemes-exchange/api/template-parts.php
How should I modify the templates?
ithemes-exchange/lib/templates/content-store/elements/featured-image.php
Exchange looks for the template-parts in the following locations by
default
1. [child-theme]/exchange/
2. [parent-theme]/exchange/
3. ithemes-exchange/lib/templates/
3) Inserting / deleting / rearranging ( difficult but powerful )
How should I modify the templates?
ithemes-exchange/lib/templates/content-store/elements/featured-image.php
Exchange looks for the template-parts in the following locations by
default
1. [child-theme]/exchange/
2. [parent-theme]/exchange/
3. locations added via the ‘it_exchange_possible_template_paths’
filter
4. ithemes-exchange/lib/templates/
3) Inserting / deleting / rearranging ( difficult but powerful )
ithemes-exchange/lib/functions/template-functions.php
How should I modify the templates?
ithemes-exchange/lib/templates/content-store/elements/featured-image.php
3) Inserting / deleting / rearranging ( difficult but powerful )
ithemes-exchange/core-addons/taxes/taxes-simple/init.php
filters generated inside
it_exchange_get_template_part_loops()
How should I modify the templates?
3) Inserting / deleting / rearranging ( difficult but powerful )
ithemes-exchange/core-addons/taxes/taxes-simple/init.php
How should I modify the templates?
3) Inserting / deleting / rearranging ( difficult but powerful )
before after
How does the Theme API work?
it_exchange( ‘context’, ‘tag’, $options );
ithemes-exchange/api/theme/
How does the Theme API work?
it_exchange( ‘context’, ‘tag’, $options );
ithemes-exchange/api/theme/product.php
it_exchange( ‘product’, ‘found’);
it_exchange( ‘product’, ‘description’);
How does the Theme API work?
it_exchange( ‘context’, ‘tag’, $options );
ithemes-exchange/api/theme/product.php
it_exchange( ‘product’, ‘baseprice’, array( ‘before’ => ‘<p>’, ‘after’ => ‘</p>’ ) );
How does the Theme API work?
Prefixes
ithemes-exchange/api/theme/product.php
it_exchange( ‘product’, ‘get-description’);
it_exchange( ‘product’, ‘has-description’);
it_exchange( ‘product’, ‘supports-description’);
it_exchange( ‘product’, ‘description’); // prints the description
// returns a boolean
// returns a boolean
// returns the description
How does the Theme API work?
A couple examples
ithemes-exchange/lib/templates/super-widget-cart.php
iThemes Exchange
for developers

More Related Content

Similar to iThemes Exchange for Developers

Batch Scripting with Drupal (Featuring the EntityFieldQuery API)
Batch Scripting with Drupal (Featuring the EntityFieldQuery API)Batch Scripting with Drupal (Featuring the EntityFieldQuery API)
Batch Scripting with Drupal (Featuring the EntityFieldQuery API)Ranel Padon
 
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauAmasty
 
Joomla Explained - As Easy as 1, 2, 3
Joomla Explained - As Easy as 1, 2, 3Joomla Explained - As Easy as 1, 2, 3
Joomla Explained - As Easy as 1, 2, 3Rod Martin
 
Modules and Components Introduction in Joomla! 2.5
Modules and Components Introduction in Joomla! 2.5Modules and Components Introduction in Joomla! 2.5
Modules and Components Introduction in Joomla! 2.5Vishwash Gaur
 
Spree framework overview
Spree framework overviewSpree framework overview
Spree framework overviewmartin_hong91
 
Techgig Webinar: Joomla Introduction and Module Development June 2012
Techgig Webinar: Joomla Introduction and Module Development June 2012Techgig Webinar: Joomla Introduction and Module Development June 2012
Techgig Webinar: Joomla Introduction and Module Development June 2012Vishwash Gaur
 
Extending WP-e-Commerce WordCamp UK
Extending WP-e-Commerce WordCamp UKExtending WP-e-Commerce WordCamp UK
Extending WP-e-Commerce WordCamp UKjghazally
 
Joomla @ Barcamp4(Feb 08 Pune)
Joomla @ Barcamp4(Feb 08 Pune)Joomla @ Barcamp4(Feb 08 Pune)
Joomla @ Barcamp4(Feb 08 Pune)Amit Kumar Singh
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction PresentationNerd Tzanetopoulos
 
Introduction to the Magento eCommerce Platform
Introduction to the Magento eCommerce PlatformIntroduction to the Magento eCommerce Platform
Introduction to the Magento eCommerce PlatformJarne W. Beutnagel
 
ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!Condiminds
 
ElggCamp Santiago - Dev Edition
ElggCamp Santiago - Dev EditionElggCamp Santiago - Dev Edition
ElggCamp Santiago - Dev EditionBrett Profitt
 
Joomla 4 custom fields and workflow
Joomla 4 custom fields and workflowJoomla 4 custom fields and workflow
Joomla 4 custom fields and workflowTim Plummer
 
Getting started with WordPress development
Getting started with WordPress developmentGetting started with WordPress development
Getting started with WordPress developmentSteve Mortiboy
 

Similar to iThemes Exchange for Developers (20)

Whats next in templating
Whats next in templatingWhats next in templating
Whats next in templating
 
Batch Scripting with Drupal (Featuring the EntityFieldQuery API)
Batch Scripting with Drupal (Featuring the EntityFieldQuery API)Batch Scripting with Drupal (Featuring the EntityFieldQuery API)
Batch Scripting with Drupal (Featuring the EntityFieldQuery API)
 
Meet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir KalashnikauMeet Magento Belarus 2015: Uladzimir Kalashnikau
Meet Magento Belarus 2015: Uladzimir Kalashnikau
 
forms builder
forms builderforms builder
forms builder
 
Joomla Explained - As Easy as 1, 2, 3
Joomla Explained - As Easy as 1, 2, 3Joomla Explained - As Easy as 1, 2, 3
Joomla Explained - As Easy as 1, 2, 3
 
Modules and Components Introduction in Joomla! 2.5
Modules and Components Introduction in Joomla! 2.5Modules and Components Introduction in Joomla! 2.5
Modules and Components Introduction in Joomla! 2.5
 
Spree framework overview
Spree framework overviewSpree framework overview
Spree framework overview
 
Techgig Webinar: Joomla Introduction and Module Development June 2012
Techgig Webinar: Joomla Introduction and Module Development June 2012Techgig Webinar: Joomla Introduction and Module Development June 2012
Techgig Webinar: Joomla Introduction and Module Development June 2012
 
AtoM's Command Line Tasks - An Introduction
AtoM's Command Line Tasks - An IntroductionAtoM's Command Line Tasks - An Introduction
AtoM's Command Line Tasks - An Introduction
 
Whats next in templating
Whats next in templatingWhats next in templating
Whats next in templating
 
Extending WP-e-Commerce WordCamp UK
Extending WP-e-Commerce WordCamp UKExtending WP-e-Commerce WordCamp UK
Extending WP-e-Commerce WordCamp UK
 
Joomla @ Barcamp4(Feb 08 Pune)
Joomla @ Barcamp4(Feb 08 Pune)Joomla @ Barcamp4(Feb 08 Pune)
Joomla @ Barcamp4(Feb 08 Pune)
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction Presentation
 
Introduction to the Magento eCommerce Platform
Introduction to the Magento eCommerce PlatformIntroduction to the Magento eCommerce Platform
Introduction to the Magento eCommerce Platform
 
ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!ElggCamp Santiago> For Developers!
ElggCamp Santiago> For Developers!
 
ElggCamp Santiago - Dev Edition
ElggCamp Santiago - Dev EditionElggCamp Santiago - Dev Edition
ElggCamp Santiago - Dev Edition
 
DIWD 2011
DIWD 2011DIWD 2011
DIWD 2011
 
The future of templating and frameworks
The future of templating and frameworksThe future of templating and frameworks
The future of templating and frameworks
 
Joomla 4 custom fields and workflow
Joomla 4 custom fields and workflowJoomla 4 custom fields and workflow
Joomla 4 custom fields and workflow
 
Getting started with WordPress development
Getting started with WordPress developmentGetting started with WordPress development
Getting started with WordPress development
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

iThemes Exchange for Developers

  • 3. Where do you jump in?
  • 4. How is Exchange Organized ● /lib
  • 5. How is Exchange Organized ● /lib ● /api
  • 6. How is Exchange Organized ● /lib ● /api ● /core-addons
  • 7. How do I register an add-on? exchange-addon-stripe/exchange-addon-stripe.php
  • 8. How do I generate a settings page? exchange-addon-stripe/exchange-addon-stripe.php
  • 9. How do I generate a settings page? exchange-addon-stripe/lib/addon-settings.php
  • 10. How do Products & Product Types work? ● All Exchange products are a single WP post_type ● Product Features are tied to product types ● Admin UI is reactive to the registered types o Setup Wizard o Sidebar o Add / Edit products
  • 12. Admin UI is Reactive How do Products & Product Types work?
  • 13. How do I register a Product Type? Product Types are an add-on category
  • 14. How do I register a Product Type? exchange-addon-membership/exchange-addon-membership.php Product Types are an add-on category
  • 15. What are Product Features? product_feature all the things! ithemes-exchange/lib/product-features/
  • 16. How do Product Features work? product_feature all the things! ithemes-exchange/lib/product-features/class.downloads.php hooked to it_exchange_enabled_addons_loaded
  • 17. How do Product Features work? product_feature all the things! ithemes-exchange/lib/product-features/
  • 18. How do Product Features work? Use the Abstract Class to create Product Features
  • 19. How do Product Features work? ithemes-exchange/lib/product-features/class.inventory.php See the inventory product feature as example of abstract implementation.
  • 20. How do Product Features work? product_feature all the things! ithemes-exchange/lib/product-features/
  • 21. Why use our Product Feature class? ● it_exchange_product_supports_feature() ● it_exchange_product_has_feature() ● it_exchange_update_product_feature() ● it_exchange_get_product_feature() ● it_exchange_add_feature_support_to_product_type() ● it_exchange_remove_feature_support_for_product_type() ● it_exchange_product_type_supports_feature() ● it_exchange_get_registered_product_features() It exposes your feature to all these API functions ithemes-exchange/api/product-features.php
  • 22. How do I use a Product Feature? product features API ithemes-exchange/api/theme/products.php
  • 23. How do Exchange Pages work?
  • 24. How do Exchange Pages work? Pages have 1-3 options: Exchange, WordPress, Disabled
  • 25. How do I register an Exchange page? ithemes- exchange/lib/api/pages.php
  • 26. How does templating work? We have #alot of template-parts ithemes-exchange/lib/templates/ http://hyperboleandahalf.blogspot.com/2010/04/alot-is-better-than-you-at- everything.html
  • 27. How does templating work? Standard Templating Components ithemes-exchange/lib/templates/content-store.php
  • 28. How does templating work? Top Level v. Loops v. Elements ( all template- parts ) ithemes-exchange/lib/templates/content-login.php Loops are template-parts too but their primary job is to call additional (but related) template-parts. ithemes-exchange/lib/templates/content-login/loops/fields.php TopLevelLoop
  • 29. How does templating work? Top Level v. Loops v. Elements ( all template- parts ) Elements are usually extremely small chunks of HTML ithemes-exchange/lib/templates/content-login/loops/fields.phpLoop ithemes-exchange/lib/templates/content-login/elements/username.php Element
  • 30. There are 3 ways increasingly complex ways to alter output 1. WordPress Hooks ( multiple hooks in every template part ) o Ideal for quick additions to non-distributed code 2. Overwriting individual template parts in your theme o Ideal for theme authors or clients that have highly customized themes and may need some custom CSS classes, etc. 3. Inserting, removing, rearranging template parts with the templating API o Ideal for add-on developers and clients that may enable additional add-ons without you in the future. How should I modify the templates?
  • 31. 1) WordPress Hooks (simple) How should I modify the templates? ithemes-exchange/lib/templates/content-registration/elements/email.php
  • 32. 2) Overwriting template parts in your theme (moderately difficult) How should I modify the templates? ithemes-exchange/lib/templates/content-store/elements/featured-image.php themes/twentythirteen-child-exchange/exchange/content-store/elements/featured-image.php
  • 33. 2) Overwriting template parts in your theme (moderately difficult) How should I modify the templates? ithemes-exchange/lib/templates/content-store/elements/featured-image.php themes/twentythirteen-child-exchange/exchange/content-store/elements/featured-image.php Exchange looks for the template-parts in the following locations by default 1. [child-theme]/exchange/ 2. [parent-theme]/exchange/ 3. ithemes-exchange/lib/templates/
  • 34. 2) Overwriting template parts in your theme (moderately difficult) How should I modify the templates?
  • 35. 3) Inserting / deleting / rearranging ( difficult but powerful ) How should I modify the templates? ithemes-exchange/api/template-parts.php
  • 36. 3) Inserting / deleting / rearranging ( difficult but powerful ) How should I modify the templates? ithemes-exchange/lib/templates/content-login/loops/fields.php ithemes-exchange/api/template-parts.php
  • 37. 3) Inserting / deleting / rearranging ( difficult but powerful ) How should I modify the templates? ithemes-exchange/lib/templates/content-login/loops/fields.php ithemes-exchange/api/template-parts.php
  • 38. How should I modify the templates? ithemes-exchange/lib/templates/content-store/elements/featured-image.php Exchange looks for the template-parts in the following locations by default 1. [child-theme]/exchange/ 2. [parent-theme]/exchange/ 3. ithemes-exchange/lib/templates/ 3) Inserting / deleting / rearranging ( difficult but powerful )
  • 39. How should I modify the templates? ithemes-exchange/lib/templates/content-store/elements/featured-image.php Exchange looks for the template-parts in the following locations by default 1. [child-theme]/exchange/ 2. [parent-theme]/exchange/ 3. locations added via the ‘it_exchange_possible_template_paths’ filter 4. ithemes-exchange/lib/templates/ 3) Inserting / deleting / rearranging ( difficult but powerful ) ithemes-exchange/lib/functions/template-functions.php
  • 40. How should I modify the templates? ithemes-exchange/lib/templates/content-store/elements/featured-image.php 3) Inserting / deleting / rearranging ( difficult but powerful ) ithemes-exchange/core-addons/taxes/taxes-simple/init.php filters generated inside it_exchange_get_template_part_loops()
  • 41. How should I modify the templates? 3) Inserting / deleting / rearranging ( difficult but powerful ) ithemes-exchange/core-addons/taxes/taxes-simple/init.php
  • 42. How should I modify the templates? 3) Inserting / deleting / rearranging ( difficult but powerful ) before after
  • 43. How does the Theme API work? it_exchange( ‘context’, ‘tag’, $options ); ithemes-exchange/api/theme/
  • 44. How does the Theme API work? it_exchange( ‘context’, ‘tag’, $options ); ithemes-exchange/api/theme/product.php it_exchange( ‘product’, ‘found’); it_exchange( ‘product’, ‘description’);
  • 45. How does the Theme API work? it_exchange( ‘context’, ‘tag’, $options ); ithemes-exchange/api/theme/product.php it_exchange( ‘product’, ‘baseprice’, array( ‘before’ => ‘<p>’, ‘after’ => ‘</p>’ ) );
  • 46. How does the Theme API work? Prefixes ithemes-exchange/api/theme/product.php it_exchange( ‘product’, ‘get-description’); it_exchange( ‘product’, ‘has-description’); it_exchange( ‘product’, ‘supports-description’); it_exchange( ‘product’, ‘description’); // prints the description // returns a boolean // returns a boolean // returns the description
  • 47. How does the Theme API work? A couple examples ithemes-exchange/lib/templates/super-widget-cart.php