Download - iThemes Exchange for Developers
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