ithemes exchange for developers
DESCRIPTION
Learn Theme & Add-on Development for Exchange - Free Webinar July 26th with lead dev Glenn Ansley. iThemes Exchange, our free ecommerce plugin, is the easiest way to get your clients selling online with WordPress. iThemes Exchange lead developer Glenn Ansley gives an overview of Exchange, including a walk-through of the API so that you can create custom (or premium) add-ons and themes.TRANSCRIPT
iThemes Exchangefor 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?
ithemes-exchange/core-addons/load.php
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?
ithemes-exchange/lib/product-features/class.abstract.php
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/functions/functions.php
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
Top
Level
Loop
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.phpLo
op
ithemes-exchange/lib/templates/content-login/elements/username.php
Ele
ment
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 Exchangefor developers