ithemes exchange for developers

48
iThemes Exchange for developers

Upload: ithemes

Post on 22-Jan-2015

541 views

Category:

Technology


0 download

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

Page 1: iThemes Exchange for Developers

iThemes Exchangefor developers

Page 2: iThemes Exchange for Developers

Simple ecommerce for WordPress

Page 3: iThemes Exchange for Developers

Where do you jump in?

Page 4: iThemes Exchange for Developers

How is Exchange Organized

● /lib

Page 5: iThemes Exchange for Developers

How is Exchange Organized

● /lib● /api

Page 6: iThemes Exchange for Developers

How is Exchange Organized

● /lib● /api● /core-addons

Page 7: iThemes Exchange for Developers

How do I register an add-on?

exchange-addon-stripe/exchange-addon-stripe.php

Page 8: iThemes Exchange for Developers

How do I generate a settings page?

exchange-addon-stripe/exchange-addon-stripe.php

Page 9: iThemes Exchange for Developers

How do I generate a settings page?

exchange-addon-stripe/lib/addon-settings.php

Page 10: iThemes Exchange for Developers

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

Page 11: iThemes Exchange for Developers

ithemes-exchange/lib/products/class.products-post-type.php

One WP post_type

How do Products & Product Types work?

Page 12: iThemes Exchange for Developers

Admin UI is Reactive

How do Products & Product Types work?

Page 13: iThemes Exchange for Developers

How do I register a Product Type?

ithemes-exchange/core-addons/load.php

Product Types are an add-on category

Page 14: iThemes Exchange for Developers

How do I register a Product Type?

exchange-addon-membership/exchange-addon-membership.php

Product Types are an add-on category

Page 15: iThemes Exchange for Developers

What are Product Features?

product_feature all the things!

ithemes-exchange/lib/product-features/

Page 16: iThemes Exchange for Developers

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

Page 17: iThemes Exchange for Developers

How do Product Features work?

product_feature all the things!

ithemes-exchange/lib/product-features/

Page 18: iThemes Exchange for Developers

How do Product Features work?

ithemes-exchange/lib/product-features/class.abstract.php

Use the Abstract Class to create Product Features

Page 19: iThemes Exchange for Developers

How do Product Features work?

ithemes-exchange/lib/product-features/class.inventory.php

See the inventory product feature as example of abstract implementation.

Page 20: iThemes Exchange for Developers

How do Product Features work?

product_feature all the things!

ithemes-exchange/lib/product-features/

Page 21: iThemes Exchange for Developers

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

Page 22: iThemes Exchange for Developers

How do I use a Product Feature?

product features API

ithemes-exchange/api/theme/products.php

Page 23: iThemes Exchange for Developers

How do Exchange Pages work?

Page 24: iThemes Exchange for Developers

How do Exchange Pages work?Pages have 1-3 options: Exchange, WordPress, Disabled

Page 25: iThemes Exchange for Developers

How do I register an Exchange page?

ithemes-exchange/lib/functions/functions.php

ithemes-exchange/lib/api/pages.php

Page 26: iThemes Exchange for Developers

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

Page 27: iThemes Exchange for Developers

How does templating work?Standard Templating Components

ithemes-exchange/lib/templates/content-store.php

Page 28: iThemes Exchange for Developers

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

Page 29: iThemes Exchange for Developers

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

Page 30: iThemes Exchange for Developers

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?

Page 31: iThemes Exchange for Developers

1) WordPress Hooks (simple)

How should I modify the templates?

ithemes-exchange/lib/templates/content-registration/elements/email.php

Page 32: iThemes Exchange for Developers

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

Page 33: iThemes Exchange for Developers

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/

Page 34: iThemes Exchange for Developers

2) Overwriting template parts in your theme (moderately difficult)

How should I modify the templates?

Page 35: iThemes Exchange for Developers

3) Inserting / deleting / rearranging ( difficult but powerful )

How should I modify the templates?

ithemes-exchange/api/template-parts.php

Page 36: iThemes Exchange for Developers

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

Page 37: iThemes Exchange for Developers

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

Page 38: iThemes Exchange for Developers

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 )

Page 39: iThemes Exchange for Developers

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

Page 40: iThemes Exchange for Developers

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()

Page 41: iThemes Exchange for Developers

How should I modify the templates?3) Inserting / deleting / rearranging ( difficult but powerful )

ithemes-exchange/core-addons/taxes/taxes-simple/init.php

Page 42: iThemes Exchange for Developers

How should I modify the templates?3) Inserting / deleting / rearranging ( difficult but powerful )

before after

Page 43: iThemes Exchange for Developers

How does the Theme API work?it_exchange( ‘context’, ‘tag’, $options );

ithemes-exchange/api/theme/

Page 44: iThemes Exchange for Developers

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’);

Page 45: iThemes Exchange for Developers

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>’ ) );

Page 46: iThemes Exchange for Developers

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

Page 47: iThemes Exchange for Developers

How does the Theme API work?A couple examples

ithemes-exchange/lib/templates/super-widget-cart.php

Page 48: iThemes Exchange for Developers

iThemes Exchangefor developers