Jump to content

Better, More Convenient, Private Support for Your iThemes Products Is Here.

We're moving support away from the forum and in to private tickets - Log In to Get Support Here

Note: any currently open support threads in the community forum will stay open while we resolve them.

Most Liked Content

#256346 Shortcode For Exchange?

Posted Ronald on 20 May 2014 - 04:00 PM


I've worked out a way to add a "buy" button to a WordPress non exchange post or page via a shortcode. It is fairly experimental, some content is hard-coded, but if you want to give it a spin, please do. So this is not an official iThemes Exchange customisation yet.

The assumption is that you know the product ID, and that most other product information will be added in the post. So (currently) it only outputs description, price and the buy now button. In order for this to make sense, it is highly recommended that you add the superwidget to a sidebar, so that the checkout function can be initiated as well. Otherwise, the buy button would be kinda lost.

This is (as far as I'm concerned) still work in progress, but I'm curious to see how/if at all this works for you.

Add the following code at the end of your child theme's functions.php:

* Creates a shortcode to add a product to the cart
function my_it_exchange_add_to_cart($atts) {

			"product_id" => null
   ), $atts));

   it_exchange_set_product( $product_id );

	$output = "<div class='my_it_itemdescription'>Item: " . it_exchange( 'product', 'get-description' ) . "</div>";
	$output .= "<div class='my_it_price'>Price: " . it_exchange( 'product', 'get-base-price' ) . "</div>";
	$output .= "<div class='my_it_buy-now'>" .it_exchange( 'product', 'get-purchase-options', array( 'add-to-cart-edit-quantity' => true, 'buy-now-edit-quantity' =>true ) ) . "</div>";

   return $output;
add_shortcode( 'add-to-cart', 'my_it_exchange_add_to_cart' );

Then add the following shortcode in your post or page:

[add-to-cart product_id=123]

where 123 is the (WordPress) ID of the product,


#146000 Why I Admire Ithemes And Especially Webdesign.com

Posted mcfitz on 17 August 2012 - 11:30 PM

When I find something I like, I share it with others. I've had a lot of opportunities to talk about iThemes and WebDesign.com over the past few months, and the latest was this week at a local WordPress Meetup. These are a few of the things I told them.

I have been a member of WebDesign.com since last October, and it's been the best time and money I've spent in the past year. Each webinar is interesting and the topics are directly related to working in WordPress, not some out-of-touch designer's idea of what's important. The "Professor," Benjamin Bradley, is extremely knowledgeable and a great speaker. He has an incredible knack for knowing what we are about to ask next. His ability to move from beginner to expert level is super helpful, because we're quite a mixed group.

I like iThemes because Cory Miller and team are not just pushing iTheme products, but they are out to help members become better designers, better developers, and better business owners. Cory's presentations on entrepreneurs have been great, and the guest speakers he's invited have really added to the mix. I admire what he's done with the company and I respect his work ethic.

Builder and the child themes are super to work with. [I explained the difference between "frameworks," themes and child themes as best I could.] Although the child themes with Builder don't look as fancy as some other themes at the start, the ability to do ANYTHING YOU WANT with the theme is a huge advantage over a pretty but limited theme. I don't like working with any other theme brand now, after working with Builder, and that's a fact. (Plus, the new Allure themes are pretty to start with! LOL)

When I mentioned the fact that iThemes makes BackupBuddy, most of the Meetup members perked up. They recognized it and were interested in other Plugins made by the company. I made sure to mention Chris Jean and the development team a time or two, and to say how attentive they were to their customers.

The best part of all, I ended with, was the support. I have been very pleased with the support I've gotten from iThemes, and I want to especially recognize Sridhar Katakam for his patience, guidance, and the incredible amount of care and time he puts into the forums. When I see the answers from Ronald and Sridhar, I wonder how two men can possibly know so much about WordPress, Builder, plugins, and everything else. Please know that the users appreciate you tremendously, even if it isn't said as often is should be.

Thank you!

#281442 Limit Purchases To Only One Country?

Posted evita3 on 20 December 2014 - 07:06 PM

The filters you refer to are the 'alts'--synonyms that if entered will result in the same entry. This only makes sure if the client types anything close to the correct response that it will be accepted correctly. In my case for example (México) if you type in 'Mexico' it will not be found. With an alt, all variants are accepted.

Steve let me see if I can re-understand what hack I used to do the trick to limit ITE to one country.

If I am not mistaken, I took the output of what I wanted--country and state data in an entered form--and stuck it back into the appropriate templates. This bypasses the code and forcably inserts what would normally occur if one country were chosen.


Create directories and make two files in:

The first file, 'country.php', should have something like:

* Limit to one country (US example)
<?php do_action( 'it_exchange_content_checkout_shipping_address_purchase_requirement_before_country_element' ); ?>
<div class="it-exchange-country it-exchange-left">
<label for="it-exchange-shipping-address-country">
	 <?php _e( 'Country', 'it-l10n-ithemes-exchange' ); ?>
	 <span class="it-exchange-required-star">
<select id="it-exchange-shipping-address-country" name="it-exchange-shipping-address-country">
	 <option value="US"><?php _e( 'United States', 'it-l10n-ithemes-exchange' ); ?></option>
<?php do_action( 'it_exchange_content_checkout_shipping_address_purchase_requirement_after_country_element' ); ?>

The second, 'states.php', can contain something like what comes from 'ithemes-exchange/api/data-sets':

* div bug fix for 'state' field length, and hard coded for US states
<?php do_action( 'it_exchange_content_checkout_shipping_address_purchase_requirement_before_state_element' ); ?>
<div class="it-exchange-left it-exchange-clear-left">
<label for="it-exchange-shipping-address-state">
	 <?php _e( 'State', 'it-l10n-ithemes-exchange' ); ?>
	 <span class="it-exchange-required-star">*</span>
<select id="it-exchange-shipping-address-state" name="it-exchange-shipping-address-state">
<option value='AL'><?php _e( 'Alabama', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='AK'><?php _e( 'Alaska', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='AZ'><?php _e( 'Arizona', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='AR'><?php _e( 'Arkansas', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='CA'><?php _e( 'California', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='CO'><?php _e( 'Colorado', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='CT'><?php _e( 'Connecticut', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='DE'><?php _e( 'Delaware', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='DC'><?php _e( 'District Of Columbia', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='FL'><?php _e( 'Florida', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='GA'><?php _e( 'Georgia', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='HI'><?php _e( 'Hawaii', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='ID'><?php _e( 'Idaho', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='IL'><?php _e( 'Illinois', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='IN'><?php _e( 'Indiana', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='IA'><?php _e( 'Iowa', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='KS'><?php _e( 'Kansas', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='KY'><?php _e( 'Kentucky', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='LA'><?php _e( 'Louisiana', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='ME'><?php _e( 'Maine', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='MD'><?php _e( 'Maryland', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='MA'><?php _e( 'Massachusetts', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='MI'><?php _e( 'Michigan', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='MN'><?php _e( 'Minnesota', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='MS'><?php _e( 'Mississippi', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='MO'><?php _e( 'Missouri', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='MT'><?php _e( 'Montana', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='NE'><?php _e( 'Nebraska', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='NV'><?php _e( 'Nevada', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='NH'><?php _e( 'New Hampshire', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='NJ'><?php _e( 'New Jersey', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='NM'><?php _e( 'New Mexico', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='NY'><?php _e( 'New York', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='NC'><?php _e( 'North Carolina', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='ND'><?php _e( 'North Dakota', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='OH'><?php _e( 'Ohio', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='OK'><?php _e( 'Oklahoma', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='OR'><?php _e( 'Oregon', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='PA'><?php _e( 'Pennsylvania', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='RI'><?php _e( 'Rhode Island', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='SC'><?php _e( 'South Carolina', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='SD'><?php _e( 'South Dakota', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='TN'><?php _e( 'Tennessee', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='TX'><?php _e( 'Texas', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='UT'><?php _e( 'Utah', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='VT'><?php _e( 'Vermont', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='VA'><?php _e( 'Virginia', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='WA'><?php _e( 'Washington', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='WV'><?php _e( 'West Virginia', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='WI'><?php _e( 'Wisconsin', 'it-l10n-ithemes-exchange' ) ?></option>
<option value='WY'><?php _e( 'Wyoming', 'it-l10n-ithemes-exchange' ) ?></option>
<?php do_action( 'it_exchange_content_checkout_shipping_address_purchase_requirement_after_state_element' ); ?>


With the coutry preselected and states loaded, there is no need to show the country field. Include this such as in your theme 'style.css' file or one specific to ITE '<your_theme>/exchange/style.css', or in a Builder stylesheet assiged to your checkout page, and best wishes:

.it-exchange-city {
width: 95% !important;
.it-exchange-country {
display: none;
.it-exchange-state {
width: 67%;

NEW NOTE: The above code used to work, but for some reason as of 12/17/15 I cannot get it to automatically select the country. As country is required first before states can be selected, one can't simply hide the country field. This means that iThemes Exchange cannot be used for just one country.

#263175 Any Progress Toward Being Able To Email Customers?

Posted pattyayers on 24 July 2014 - 11:06 AM

Thanks, Elise. The MailChimp add-on only allows people to opt in if they want, so meets a completely different need. We need to be able to email all of our customers. We'll add them to a list manually for now, but really hoping this gets some attention soon, email being such a basic aspect of e-commerce.

#259378 Shortcode For Exchange?

Posted mrarlen on 18 June 2014 - 02:41 PM

Building on Ronald's code, Here's what I came up with so far. Although I am very new at working with this API.  

This adds a Featured Thumbnail Image, Product Title and basic tags which can be styled.  

* Creates a shortcode to add a product to the cart
function my_it_exchange_add_to_cart($atts) {
						"product_id" => null
   ), $atts));
   it_exchange_set_product( $product_id );
	 $output = "<div class='my_it_product_shortcode'><div class='my_it_itemimage'>" . it_exchange( 'product', 'featured-image', array( 'size' => 'thumbnail', 'return' => 'true' ) ) . "</div>";
		$output .= "<div class='my_it_itemdtitle'><h2>" . it_exchange( 'product', 'get-title' ) . "</h2></div>";
		$output .= "<div class='my_it_itemdescription'><b>Description: </b> " . it_exchange( 'product', 'get-description' ) . "</div>";
		$output .= "<div class='my_it_price'>Price: " . it_exchange( 'product', 'get-base-price' ) . "</div>";
		$output .= "<div class='my_it_buy-now'>" .it_exchange( 'product', 'get-purchase-options', array( 'add-to-cart-edit-quantity' => true, 'buy-now-edit-quantity' =>true ) ) . "</div></div>";
   return $output;
add_shortcode( 'add-to-cart', 'my_it_exchange_add_to_cart' );

#255944 Shortcode For Exchange?

Posted webweaver on 16 May 2014 - 10:21 AM

shortcodes for individual products to be placed on non-shop page would be awesome!

#246894 Add Billing Address To User Profile

Posted ironbound on 12 March 2014 - 08:49 PM

Hi Guys,

It'd be great if you could add the billing address automatically to the user's profile on the back end.



#240654 Login Landing Page

Posted tsetford on 30 January 2014 - 10:18 PM

Sorry, first line got messed up, should be:
'redirect' => it_exchange_in_superwidget() ? it_exchange_clean_query_args() : it_exchange_get_page_url( 'profile' ),

#225330 Gravity Forms And Exchange

Posted tugmariner on 29 October 2013 - 01:41 PM

In case anyone else needs it:

//add to cart
add_action("gform_after_submission", "custom_gf_hook_after_submission", 10, 2);
function custom_gf_hook_after_submission ($entry, $form) {
//convert to named array
$vals= array();
foreach($form['fields'] as $f) {
  if(!is_array($f['inputs'])) {
  //complex type
  foreach($f['inputs'] as $i)
// use labels to access fields
if(@$vals['Product ID'] AND $vals['Quantity']) {
  it_exchange_add_product_to_shopping_cart($vals['Product ID'],$vals['Quantity']);

#197317 Hope You Guys Are Safe!

Posted superdoc on 20 May 2013 - 03:37 PM

This is Mark Klinefelter, member in Miami, FL  I just hope the ithemes group is safe and sound after the
tornado activity in Ok. City.  Buildings can always get replaced but hope all the people in your area are
safe.  South Florida has its' turn coming up on hurricane season starting June1.


#113425 My Builder Sites

Posted ka2id on 22 February 2012 - 06:08 PM

I have been using WordPress now for about a year and a half and Builder for most of that time, as someone who doesn't code PHP much, I love how Builder gives me a quick and easy way to layout my sites.

So a lot of these sites don't look like typical Builder sites because I use Builder mainly as a skeleton for the layout, then I CSS the heck out of it and do all custom graphics. Enjoy!

New condo development in Vancouver, just using the base Builder theme

Condo development  site

Realtor's website, using the Covert theme

Website for building maintenance/renovation company, using base Builder theme

Relief Pharmacy worker job site, used Builder and WPJobBoard plugin, love how one can incorporate other major themes with Builder

My own website, also done using Builder

Really loving Builder and WordPress, using it for some other cool site concepts that I will load here soon, so thanks for the amazing plugin Ithemes and let me know what you guys think!

#286328 Need Phone Number And Email On Purchase Notifications

Posted Ronald on 10 February 2015 - 07:37 AM

Hi Cynthia,

I am looking into a way to extend the e-mail notification text and or add shortcodes, but there may be a workaround by adding this info to the payment details. That way, the information can be easily viewed from the transaction details in the WordPress dashboard, which already shows the e-mail address.

To do so, create a folder "exchange" in your active theme folder. Then create a file named "functions.php" in that folder.

In this example, we will be adding "phone" and "company-name" to the Billing Address fields. These fields are predefined in Exchange, but not enabled by default. Add the following content to the functions.php file in the exchange folder in your theme (wp-content/themes/{yourtheme}/exchange/functions.php):


* Add phone and company to Billing Address to Superwidget
function my_superwidget_billing_fields( $fields ) {

array_push( $fields, 'phone', 'company_name' );

return $fields;

add_filter( 'it_exchange_get_super_widget_billing_address_fields_elements', 'my_superwidget_billing_fields' );

* Add phone and company to Billing Address on Checkout
function my_checkout_billing_fields( $fields ) {

$my_fields = array( 'phone', 'company_name' );
array_splice( $fields, 8, 0, $my_fields );

return $fields;

add_filter( 'it_exchange_get_content_checkout/elements/purchase-requirements/billing-address/elements/_fields_elements', 'my_checkout_billing_fields' );

* Add the phone and company name fields to the payment details in the WordPress dashboard

function my_additional_customer_data( $post ) {

$cart_object = get_post_meta( $post->ID, '_it_exchange_cart_object', true );

echo "<div class='customer-data customer-info'>";

if( !empty( $cart_object->billing_address['phone'] ) ) {
	 echo "<p>Phone: " . $cart_object->billing_address['phone']. '</p>';

if( !empty( $cart_object->billing_address['company-name'] ) ) {
	 echo "<p>Company: " . $cart_object->billing_address['company-name']. '</p>';

echo "</div>";

add_action( 'it_exchange_transaction_details_after_customer_data', 'my_additional_customer_data' );

The first 2 functions will enable the phone and company-name fields in the Billing Address. The 3rd function "hooks" into the payment details, and display the phone number and company name.

If may need some tweaking to the styling, but it's a start,

hope this helps,

#279392 Instant Payment Notifications Failing

Posted johnhillcoat on 01 December 2014 - 08:36 PM

Thanks it is now working fine.

#273041 Php Error Message: Stripe Notice: Undefined Property Of Stripe_Customer Inst...

Posted garymgordon on 04 October 2014 - 02:25 PM

I just installed Exchange and set it up to work with my Stripe Account.

All went well.  I received the payment in my Stripe account.  

But in my Wordpress site, I noticed there was a PHP Error log message that appeared that said:

PHP Error log message:  Stripe Notice: Undefined property of Stripe_Customer instance: subscription

I wanted to know why this appeared and what can be done to prevent it in the future (unless there's a problem I need to address on my end somehow).  But I believe the issue might be due to Exchange and the Stripe addon.

Please let me know.


#258992 Exchange Update Has Broken Site Again!

Posted sixra2580 on 13 June 2014 - 03:03 PM


The PHP problem you reference, is it that the host server is running an old/outdated version of PHP?

#245050 Ui Bug: Exchange Add Membership Div/css Collision...

Posted Elise Alley on 27 February 2014 - 04:20 PM

Hi WP,

We've tested under the same circumstances and weren't able to replicate the issue.  An update of Membership was released today, so you might try updating and see if that makes any difference.

Let us know if you continue to have this issue.



#234963 Page Shortcodes?

Posted Elise Alley on 21 December 2013 - 07:54 PM

Hi briankross,

If you go into Exchange > Settings > Pages and change the page type of one of your pages from Exchange to WordPress, you should see a drop down menu where you can select the page you'd like to use instead and the shortcode which will appear just below that.

Screen Shot 2013-12-21 at 7.54.04 PM.png

You can then copy that shortcode into the page you selected.

Let us know if you have any additional questions.



#220312 Does Exchange Or Its Add-Ons Require Ssl?

Posted lewayotte on 23 September 2013 - 07:57 AM

Hi scott5598,

An SSL certificate is not required by either of the standard PayPal add-ons. According to Stripe's documentation they recommended enabling SSL on your site (https://stripe.com/help/ssl) just for the added security and increased customer conversion rate.

Hope that helps!

#185680 Doing It Alone, But Feel Like I Have A Whole Team

Posted pgross on 01 April 2013 - 11:20 PM

Dear ithemes staff,

Having worked with Builder and numerous plugins for the last four months, I am overdue to publicly state just how happy I am with all that ithemes does in software, training and online support.  I ran the developer tools divisions at Borland and Microsoft in the 90's and have good insight into how difficult it is to do this well and I think ithemes and the support crew knock the ball out of the park and rip the cover off too.

Specifically, there is patience with us as we get started and ask questions for numerous things that with a little more diligence could be found in the forum or the codex.  Second, there are timely responses to every question posted most of which close the topic or significantly advance the issue.  And finally, sleeves get rolled up and code or CSS is generated, themes are tweaked, and deeper questions are answered in a timely and friendly manner.  Per my post title, I feel like I am attacking my project with the force of a complete team.  When I have ventured out to other plugins and need support, I am rarely as impressed as I am with what is provided here.  Developing a site with ithemes gives me incredible peace of mind.

So to Sridhar, Ronald and Elise, from whom I have received the most support and to the trainers and the software engineers and designers back at the shop, my hat goes off to all of you for a job well done.  I will recommend you a thousand times over!


Paul Gross

#100159 Check Out The Power Of Builder!

Posted insightfulnana on 17 December 2011 - 10:12 AM

Your entire site is lovely.   I don't care for the black either. I think I would pick up the turquoise in the logo.  I think it would make a nice balance.  If that color is too sharp...you could tone it down by making it lighter in color or a little grayer.  However.... I like the bright turquoise.    Builder is great... I love it too.

Better, More Convenient, Private Support for Your iThemes Products Is Here.

We're moving support away from the forum and in to private tickets - Log In to Get Support Here

Note: any currently open support threads in the community forum will stay open while we resolve them.