Custom post types

In any post type that you’re allowing to be used to sell tickets for events, you’ll have a section labeled “My Tickets Purchase Data” in a metabox for that post type. By default, it should appear underneath your main content area; although it’s impossible to control exactly where it will sit on that screen from a plug-in.

Sell tickets on this post

When you click on the checkbox to have sales on this post, the full set of sales options will open:

Define ticket sales form

This form differs only slightly from what you get when using My Calendar, because in My Calendar the date, time, and location information is pulled from the event. When creating a ticketed event from a post type, however, you need to define that information here.

It is possible to display the event date and time for a custom post type, since they’re saved in standard custom post fields. You can do that using My Tickets by using the simple shortcode [ticket_data type=’date’]. It accepts three values: date, time, and location, depending on what you choose to display.

Location is only available by default if you also have My Calendar installed; it pulls locations from the My Calendar Locations database table. You don’t need to be using My Calendar to take advantage of this, other than as a means to store your location data.

For advanced users, you can also write a custom function to map another set of location data into a format that My Tickets will understand using the ‘mt_create_location_object’ filter, and define a function called ‘mc_location_select’ that provides the dropdown menu to choose your locations.

The other options for creating events are as follows:

  • Allow sales until x hours before the event – Set an amount of time prior to the event when you no longer want sales to be possible. It’s always possible to add another sale when you’re logged in as an administrator.
  • Allow multiple tickets/ticket type per purchaser – Purchasers can buy multiple tickets for an event – (e.g. 2 adult tickets and one child) in a single cart purchase. If disabled, purchasers can buy only one ticket for an event. Instead of a text input to choose a number of events, they will see a checkbox to select a ticket.
  • Total Tickets Available – For “continuous” purchase types, this is the total number of tickets available.
  • Ticket Prices and Availability – Shows the labels and prices as well as the number of tickets sold. For tickets using “discrete” counting, the number of tickets available will be a text field and the “Total Tickets Available” field will not be displayed.
  • Type of Sale – This simply toggles the language in use for add to cart forms. E.g. “Buy a Ticket” vs. “Register”
  • Ticket Counting Method – Effects whether tickets are counted as a single total or per section.
  • Don’t display form on event – You can use the ‘ticket’ shortcode to customize where your order form is displayed. If you’re using this in the event post, you may no also want to see the default form.

Main Settings

The main settings page for My Tickets is where you:

  • set your license key, entitling you to support and updates
  • determine whether to send email as HTML or plain text
  • designate the recipient of administrative email notifications and the sending address for notifications sent to purchasers
  • Write your notification messages for both administrators and purchaser
  • Determine which post types you would like to use for ticketing

The most significant section of this is the email notifications, which has it’s own article in this documentation. Otherwise, you need to know that you only need the license key in order to be eligible for support and updates (no support of any kind is provided without a license key).

My Tickets will work with any public post type, but the user interface for setting up your tickets is added as a meta box in the post editor administration. If you have a public post type that uses a custom interface, there’s no guarantee that you’ll be able to set up tickets for that post type.

Notification Messages

Notification messages support twelve default template tags to provide information to your purchasers and administrators. You can add additional notification messages by using the My Tickets custom field api.

The content produced by some of these tags is simple strings, but others produce more complicated data. All of the tags automatically toggle their formats depending on whether you’re sending HTML or plaintext email.

A link to the user’s receipt.
For e-tickets or printable tickets, a list of the purchased tickets.
The purchaser’s name, as provided in the shopping cart.
The name of your site.
The purchase’s internal payment ID. (Probably only useful for admin messages!)
Purchase data: tickets purchased, how many, at what price.
The purchaser’s provided shipping address.
All transaction data from the payment gateway.
The payment gateway’s transaction ID.
For offline payments, the amount owed on the purchase.
The ticketing method chosen by the purchaser.

In general, I recommended that you at minimum provide your purchaser’s with their receipt link and their purchase data, regardless of the ticketing and payment methods you allow.

Payment Settings

Payment settings cover all the settings directly related to making payments, unsurprisingly. My Tickets supports offline payment,, and PayPal standard out of the box – but payment gateways are pluggable, and in time there will be more options available for purchase separately.

Before you can accept payments, you need to set the currency you want to use for selling tickets. You can also define a percentage discount available to logged-in members. Right now, My Tickets doesn’t support any other discount or sales methods.

By default, the offline payment gateway is the only configured option. Using this option, tickets will not be created until you manually mark the payment as completed in the Payments management screen. You can do this prior to receiving the payment if you wish, but you’ll have to take responsibility for making certain that your notification messages reflect the fact that payments have not actually been made!

gateways and PayPal settings are the usual basic configuration for these gateways; look at the Ticketing Help screen to get more information about where to get your information for these gateways if you don’t know. You’ll have to have a PayPal or account to use them.

You can enable Testing mode during development. In this mode, queries will be made against the developer’s sandbox. You can get a free account for the sandbox so that you can verify that everything works before going live. You can also use the PayPal developer sandbox to work with PayPal.

While your site is in test mode, a banner will be displayed at the bottom of your site indicating that the site is in test mode and that payments will not be processed.

If you have an SSL certificate for your site (and I recommend that you do), you can enable SSL for payment pages, and My Tickets will attempt to force SSL for those pages. There are many factors that can prevent a page from properly rendering securely, and My Tickets can’t guarantee this – it’s your responsibility to ensure that your site is secure. An SSL certificate is not required for My Tickets to operate, but is strongly recommended.


Finally, you can set the payment and other rendering pages for your cart. There are three dedicated pages created by My Tickets – one each for your Shopping cart, your tickets page, and your receipts page. The shopping cart will use your standard theme template, and you can edit it just like you would any other page. The tickets and receipts page will automatically use custom templates provided by My Tickets. If you copy the /wp-content/plugins/my-tickets/templates/ directory into your theme directory, you can customize those templates. The copy in your theme directory will be used instead of the default templates. You don’t need to copy the entire directory; only the parts you intend to replace.

Ticket Settings

In the ticket settings, you configure what types of tickets you want to support and the default values new events should use.

Types of Tickets

My Tickets supports 4 types of tickets: Printable, E-tickets, Postal Mail, and Pick up at box office (or “Will call”). On this page, you can define which of these formats you want to make available for sale. Printable and e-tickets have QR code-based validation systems; postal mail and will-call systems assume that you will produce your tickets independently of the My Tickets system, although you can produce lists of purchases using the My Tickets Reports panel.

Ticket Shipping

If you’re offering tickets available via postal mail, you need to set a shipping cost and an approximate shipping time for postal mail. The shipping cost is added to shopping carts if the selected ticketing method is postal mail. This is a flat fee; it doesn’t matter whether somebody has purchased 1 ticket or 200.

The shipping time is used to notify the purchaser of the approximate time until they’ll receive their ticket, but is also used internally to prevent purchasers from choosing the postal mail option if the time until the event will not allow them to receive their tickets. If you indicate that it usually takes 5 days for a purchaser to receive their ticket, then that options will cease to be available for an event 5 days prior to the event.

In addition to setting a shipping & handling charge that’s based on the entire cart, you can set a per-ticket handling charge. This can be valuable if you need to separate out secondary costs for the tickets that are common to all tickets, rather than wrapping them into the cost.

Closing Sales on Tickets

Close by time
You can set a number of hours prior to an event when tickets may no longer be sold for an event. For example, if you need to collate your list to prep for an event starting 4 hours before the event, you can shut off online sales 4 hours before the event. This will happen automatically, so you don’t have to worry about unexpected last minute sales.

Close by number of tickets remaining
If you want to reserve a certain number of tickets for sale at the venue, you can specify either a specific number of tickets to reserve for all events or a specific percentage of the total available tickets to reserve. Once the number of tickets falls below that point, online sales will be closed. Visitors to your site will get a notification telling them that online sales are closed and how many tickets are still available at the box office.

Can users purchase multiple tickets?

You can set an event to allow multiple tickets for each event per purchaser or only a single ticket. This can particularly be useful in combination with My Tickets custom field api. Allowing multiple tickets is the norm, in which case the purchaser can buy any number of tickets for the event; if it’s restricted to single tickets, the user will not have any of the options to adjust the number of tickets for a particular event, and will only be able to choose one.

How are tickets counted?

Total tickets available is the number of tickets available when using “continuous” ticket counting. If the counting method is “discrete”, this field will not be displayed. You would use “continuous” counting methods when it doesn’t matter which type of ticket a user buys – for example, when you’re selling tickets for Adults, Children, and Seniors. You could equally well sell out to all seniors or all adults. If you’re selling by section, however, (Main Floor, Balcony, Gallery), then it does matter which type of ticket a user buys, and you’ll want to use “discrete” counting, so that you can only sell a finite number of tickets for each section.

You can customize the price groups you use as a default. This can save a lot of time if you’re selling the same types of tickets over and over again.

The Type of Sale is mostly about the language used – whether a user is “Buying a ticket” or “Registering for an event”.

And I’ve already talked about counting methods. 🙂

General Admissions Tickets

Since My Tickets version 1.9, you can sell tickets for events that don’t have any fixed date. These are described as ‘General Admission’ tickets in the ticket settings. These tickets will be good for admission for a particularly amount of time after purchase. This type of ticket is good for admission to experiences such as a sight-seeing destination, museum, or gallery, where the experience is available every day, and time-specific admissions aren’t required.

Using in My Calendar

Using My Tickets integrated into My Calendar is almost identical to using it with a custom post type, except that the event date, event time, and location data is pulled from your My Calendar event instead of from the post.

My Tickets and Recurring Events

At this time, I don’t recommend that you use My Tickets to sell tickets on recurring or grouped events in My Calendar; the way My Tickets handles event data is not compatible with complex events.

For singular events, it’s very straightforward.

When My Tickets is installed, it will replace the default ‘Registration’ section in your My Calendar Events Manager with the ticketing set up form (as documented in the custom post types form.)

I can’t see how to sell tickets from My Calendar!

It’s possible that you won’t be able to see this form when you first install My Tickets with My Calendar. My Calendar includes options to disable the registration input fields on both a global and an individual level, which can mean that these fields are hidden. If you can’t find the registration information panel under My Calendar > Add Events, there are two places to check.

  1. My Calendar > Settings > Input Settings Make sure that the “Registration” options are enabled for input.
  2. My Calendar > Add Event > Screen Options (Screen options are found in the top right corner of the screen.) Make sure that the registration input options are enabled for you, personally.

The add to cart form is automatically added to your standard details pop-up when viewing My Calendar in either List or Grid mode, and can also be added to Upcoming Events lists or any other custom template using the template tag {register}.