Used to iterate through the list of available shipping options.

shopp('shipping', 'options')

@param string $object the object or object.tag combination, if object.tag is used, the tag parameter can be omitted
@param string $tag the tag, can be hyphenated or not. Prefix with 'get' as shorthand for the return=true option
@param mixed $options associative array, or url-style name=value pairs separated by ampersands (&). Each pair is passed to the theme api tag as an option.
@returns bool true if more shipping options to loop through, false if at the end of the list

Alternative Forms

shopp('shipping', 'options');


Used to iterate through the list of available shipping options.

An iterator tag, used to loop through each shipping method that is calculated. This tag returns a boolean true until it has iterated through all the method estimates, and then will return false and reset the iterator.

Universal Options

All Theme API calls have these options.

  • return: when set to true, 1, or on, this option forces the tag to return the value instead of displaying/echoing the value to the page. Alternatively, prefix the tag parameter with get to get the same effect. All theme api tags that return a boolean value will return by default.
  • echo: when set to false, 0, or off, this option forces the tag to display the value to the page. This is the default for all non-boolean tags.
  • is: when set to true, 1, or on, this option will evaluate the return of the theme api call as a boolean true or false value. See how values are converted to boolean.




if ( shopp('shipping', 'has-options') )
while( shopp( 'shipping', 'options' ) ) {
    // do something

shipping options as radios

if ( shopp('shipping', 'has-options') )
while( shopp( 'shipping', 'options' ) ) {
    shopp('shipping', 'option-selector'); shopp('shipping', 'option-name');

shipping options as select menu

<?php if ( shopp('shipping.has-options') ): ?>
  <select name="shipmethod" class="shopp shipmethod">
    <?php while ( shopp('shipping.options')): 
      $selected = ''; 
      if ( shopp('shipping.option-selected') )
        $selected = ' selected="selected"';

      $value    = shopp('shipping.get-option-slug');
      $name     = shopp('shipping.get-option-name');
      $cost     = shopp('shipping.get-option-cost');
      $delivery = shopp('shipping.get-option-delivery');
      $label    = $name . ' &mdash; ' . $cost . ' ' . $delivery;
      <option value="<?php echo $value; ?>"<?php echo $selected; ?> ><?php echo $label; ?></option>
    <?php endwhile; ?>
<?php endif; ?>

See Also

  1. You’re missing an apostrophe in your “shipping options as select menu” code. But the code doesn’t work even when fixed. All of your examples yield bizarre results when inserted into a template file.

    September 16th   #

  2. Thanks for mentioning the missing apostrophe. The &mdash conversion is something your browser should take care of. The radio button code looked a bit weird because the option name was not added. You can add styling tags to adjust the layout to your needs ( for example <ul> and <li> or </ br> ).

    April 11th   #

You must be logged in to post a comment.

© Ingenesis Limited. Shopp™ is a registered trademark of Ingenesis Limited.