• Conceived for Pizza Delivery Businesses, but flexible enough to serve any restaurant type.

  • Maintain your restaurant menu online and accept cash on delivery orders.

  • Set categories, multiple prices per item and descriptions.

  • Multilingual Frontend (just update labels in admin settings page and/or widget as required). WPML compatible.

  • Multisite enabled

  • Keeps track of your online orders.

  • Shortcode enabled. (see complete shortcode list)

To see the plugin in action with different themes try it at demo.wp-pizza.com

if you wish to allow your customers to add additional ingredients to any given menu item, have a look at the premium “WPPizza Add Ingredients” extension

Current premium extensions available:

gateways available to process credit card payments instead of just cash on delivery at www.wp-pizza.com

Translations provided by:

  • Italien: Silvia Palandri
  • Hebrew: Yair10 [הלב בניית אתרים ]
  • Dutch: Jelmer
  • Spanish: Andrew Kurtis at WebHostingHub
  • German: Franz Rufnak, Witali Opfer

Many, many thanks guys and girls.

Note: As the plugin gets updated over time and has some other strings and features added, the translations above (and future ones) will probably have a few strings not yet translated. If you wish, feel free to provide any of those missing and I will update the translations accordingly.

If you want to contribute your own translation, feel free to send me your files and I will be more than happy to include them.

Demo Icons:

please note that the icons used in the demo installation are iconarchive.com icons and not for commercial use.
if you do wish to use any icon from this set commercially, please follow this link to purchase it.


  • frontend example
  • administration - widget
  • administration - categories
  • administration - menu item
  • administration - order settings (one of many option screens)



  1. Download the plugin and upload the entire wppizza folder to the /wp-content/plugins/ directory.
    Alternatively you can download and install WPPizza using the built in WordPress plugin installer.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. You will find all configuration and menu options in your administration sidebar

Things to do on first install

for consistency this document has now moved to the following location :
** I strongly encourage you to read it **


Please note:
although all options, menu items and menu categories get deleted from the database along with the table that holds any orders you may have received, you will manually have to delete any additional pages (such as the order page for example) that have been created as i have no way of knowing if you are using this page elsewhere or have changed the content/name of it.
the same goes for the 3 example icons that come with this plugin as you might have used them elsewhere.


Installation Instructions


  1. Download the plugin and upload the entire wppizza folder to the /wp-content/plugins/ directory.
    Alternatively you can download and install WPPizza using the built in WordPress plugin installer.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. You will find all configuration and menu options in your administration sidebar

Things to do on first install

for consistency this document has now moved to the following location :
** I strongly encourage you to read it **


Please note:
although all options, menu items and menu categories get deleted from the database along with the table that holds any orders you may have received, you will manually have to delete any additional pages (such as the order page for example) that have been created as i have no way of knowing if you are using this page elsewhere or have changed the content/name of it.
the same goes for the 3 example icons that come with this plugin as you might have used them elsewhere.

General Faq’s

for consistency and manageability the faq’s have been moved to http://docs.wp-pizza.com/faqs/


please refer to http://docs.wp-pizza.com/shortcodes/

How can I submit a bug, ask for help or request a new feature?



Yesterday i deliver my first customer website with wppizza and several addons: wppizza (Basic) and payd addons: wppizza-add-ingredients, wppizza-delivery-by-postcode, wppizza-gateway-paypal, wppizza-google-cloudprint and wppizza-pickup-prices.

All addons working like a charm! not one did not do as expected and none have problems!

And most of all, there was always the developer Oliver who offered help with any questions.

Thanks Oliver!


This simply allows you to add an ordering system to a site. It’s straight forward and offers about anything you could need. Great product! Thanks!

Oliver and Wp-Pizza Rocks

Normally when you asked for tech support from someone just selling a plug-in, maybe you will and maybe you won’t get support. Sometimes as you well know support can take days or weeks for the support technician to get back to even. And sometimes I’ll get back to you at all. I have to say that Oliver went above and beyond in my case. My site got hacked and I must’ve emailed back and forth with all over probably over a dozen times.
He got back to me, in a timely manner, was extremely helpful, and now everything is working properly again. I am super impressed by his professionalism and giving back to me. I would highly recommend anyone looking for a word press plug-in for a restaurant where you want to order online WP-Pizza and Oly Rocks!!

Really astonishing plugin

I am blown away. This plugin does things that I didn;t even realize I meeded while putting together a delivery website that is sort of like take out taxi, with multiple restaurant menus. Brilliant! And quick support!

Read all 48 reviews

Contributors & Developers

“WPPizza” is open source software. The following people have contributed to this plugin.


Translate “WPPizza” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


* fix: any newly entered or amended customer data on order page was not kept when changing quantities (if enabled)
* fix: ajax request to update cart ran 2 times when updating item quantity via input fields in cart/orderpage
13th March 2018

* tweak: minor admin js tweaks/simplifications
* tweak: update to plugin development helper functions
* tweak/update: making sure any GET variables send to gateways are trimmed of leading/trailing whitespaces
12th March 2018

* fix: wppizza_on_order_execute action hook only had customer details available with some gateways
* development: tweaked some of the (future use) plugin development functions
08th March 2018

* tweak: allow label of order formfield (“WPPizza->Order Form Settings”) to include html if type is set to “checkbox”
* added: “viewonly” shortcode attribute for menu item display, removing cart icon and add to cart functionality
* added: option to exclude delivery charges (if any) to see if minimum order value was reached
06th March 2018

* fix for php versions <=5.4: fatal error thrown Cant use function return value in write context
04th March 2018

* added: bulk delete of orders in admin history (provided user has that capabiity)
* tweak: some minor code tidy ups and improvements in plugin development helper functions
03rd March 2018

* added: action hook wppizza_on_email_sent to perhaps do something more when an email was sent
21st February 2018

* tweak: moved capture of any transaction details in db before sending any emails (to make those details available there when using mail filters)
* tweak: added formatted and raw order data as parameters to wppizza_filter_mail_headers and wppizza_filter_mail_attachments hooks
21st February 2018

* added: wppizza_order_reject function and payment_status “rejected” to orders table (might be useful in some cases/gateways)
* tweak: wrapped wppizza_on_order_execute hook into has_action call to truly restrict to completed orders only and to eliminate some overheads if not used
* tweak: minor tweak to admin css applied to contextual help screen
* tweak: allow min/max arguments to be passed on to wppizza_validate_int_only helper validation function
* added: a somewhat more versatile “wppizza_get_order_by_columns” helper function that can be used elsewhere (not used in plugin itself)
* fix: make sure gateway/transaction responses/details also get passed to wppizza_on_order_execute hook
* changed: convenience function “wppizza_telephone_country_codes” (added in 3.2.4) removed in favour of more versatile “wppizza_country_info”
20th February 2018

* added: globally available convenience functions “added wppizza_get_cart()” “wppizza_cart_summary()”
* added: a couple of css classes to order history screen elements
* added/fix: added missing filter wppizza_filter_db_column_data when submitting order
16th February 2018

* tweak: allow for shortcodes (and any other the_content filters for that matter) in menu item descriptions (enable in wppizza->layout->general)
6th February 2018

* fix: any custom opening times set in wppizza->openingtimes were duplicated on plugin update (simply delete the duplicates if you have any, though leaving them will not cause any problems either)
* fix: “Wppizza->Order Settings->Delivery->Exclude menu items from calculation” was broken in previous v3.x version. If you have any item added there, please simply save this page (“WPPizza->Order Settings”)once.
* fix: the wrong menu items were potentially displayed when using install option 2 (using templates to display mnu items) and menu items were in more than one category
* tweak: using more sensical “vertical-align: super” instead of -12px positioning for additives display to aid more consistency throughout different themes
* tweak: removed some legacy(v2.x) and now unused in v3.x localization strings
* tweak: added some more available info to error/admin email if email to shop fails
* added: wppizza_filter_gateways_payment_options introduced (see https://docs.wp-pizza.com/developers/?section=gateway-filter-frontend )
* in progress: several plugin development functions added – more to come. A skeleton plugin will be added to add-ons directory in due course.
31th January 2018

* added: convenience function “wppizza_telephone_country_codes” to get country phonenumbers prefixes
* tweak/fix: made guest/regsiter checkout radio inputs have distinct ids
* tweak: made sure fieldsets on order page are position:relative (as some themes might to globaly funny things)
* fix: delivery type (pickup/delivery) was not shown consistently in order history
16th January 2018

* fix: some more possible php notices eliminated
* removed: some old – and now wrong – v2 help documentation regarding print/email templates
* added: option to make javascript alerts stylable modal windows instead of browser native popups (wppizza->layout->miscellaneous)
3rd January 2018

* fix: typo fixed in 3.2.1 appeared 3 times actually so fixed the other 2 as well
19th December 2017

* fix: typo in wppizza_breadcrumbs() function introduced in 3.2 causing syntax error (with older versions of php)
19th December 2017

* fix: any closing times or custom opening times set in wppizza->opening times got lost on plugin update
* fix: “wppizza_filter_email_items_markup” filter was applied 2x so removed one of them
* fix: some more possible php notices eliminated
* tweak: orderhistory split action buttons array for more granulaity when using wppizza_filter_orderhistory_order_actions filters
* tweak: to account for display limitations of small screen devices, quantities of items in cart/orderpage were only shown for screensizes >420, this has now changed to be >300 as there still should be enough space available. Note: Instead of removing quantities below 300, the remove button is now being hidden instead however, as quantities can still be set to 0 – i.e removed – if required (always provided the theme accounts for responsiveness in the first place)
* tweak: made admin localization input fields a little bit bigger
* tweak: added js/ajax error identifiers to aid debugging in admin order history js
* tweak: access rights – allow admins to also delete menu items of other users
* tweak: access rights – only allow “admins” and “editors” to edit menu items created by other user roles – in line with standard wordpress behaviour. (Re-save “Wppizza-> Access rights -> Menu Items” for this to be applied for non-admin roles [1 time: off->save, on->save])
* tweak: more meaningful ajax error console.log entries (if any)
* tweak: stop and restart polling during changing order status in order history to decrease server load
* added: some more gateway helper functions
* added: make gateway objects filterable using wppizza_filter_gateway_object_{gw_ident} (to – for example – enable discounts instead of surcharges for a prepay gateway )
* added: dashboard widget, breakdown by gateways (if more than one)
* added: make admin dashboard widget filterable to only display selective parts of data if necessary
* added: wppizza_breadcrumbs() template function added to display breadcrumbs somewhere if required (for example in theme-wrapper.php if used – see there for arguments/usage)
17th December 2017

* fix: possible (ajax) race condition when refunding payments from within wppizza order history (if using this option in gateways that have this option available)
* tweak: refund notes automatically added to order notes when using refunds from within order history (if using payment gateways that have this option available)
* added: helper function wppizza_wpdate_formatted($timestamp) outputting passed timestamp according to date/timeformat set in WP -> Settings
25th November 2017

* fix: wrong documentation link in wppizza search widget notes
* added: helper functions that allow wppizza menu items to be displayed with clickable prices etc in search results (in combination with wppizza search widget). Note: appropriate templates must be created as per documentation
* tweak: credit card on delivery – allow to set surcharges too instead of just discount
* tweak/update: removed some redundant (v.2x leftover) localization strings
20th November 2017

* tweak: some css tweaks to prices li’s for better theme compatibility
* tweak: some help screens updated
* tweak: allow for tips to be set to 0 even if set to be required (but not empty if required)
* update: chosen.js library updated to 1.8.2 (from 1.4.2)
17th November 2017

* added: reports range for “today” and each day in the preceding week based on set opening times (omitting closed days)
16th November 2017
* tweak: some gateways (paypal for instance) utilise a payment processing page when returning to the site after payment which gets periodically reloaded to check if payment was received. Firefox – for unknown reasons – responded with a “data has to be resend …etc” on reloading this page when this is simply not the case. This update works around this FF issue.
15th November 2017
* updated: german (admin) language files
14th November 2017

* tested with forthcoming WP 4.9
* added/altered: ‘wppizza_filter_template_section_{$section_key}_styles’ in favour of just ‘wppizza_filter_template_section_styles’ to be able to filter html email/print styles if required and also passing on template id and order parameters
* tweak/fix: allow to set order status to REFUND in order history without refunding in payment gateway account (only applicable for gateway implementations that support refunding at gateway in the first place.)
9th November 2017

* fix: fixed (or at least narrowed down) longstanding issue of wppizza categories disappearing in the backend under certain circumstances
3rd November 2017

* fix: “Can’t use function return value in write context” for old php versions
3rd November 2017

* tweak: eliminated some more possible php notices
* tweak: update to floating point precision fix of 3.0.30
* tweak: do not display empty categories instead of “no results found” (can optionally be turned off in Items Sorting and Category Display)
* tweak: replaced some deprecated WPML functions
* tweak: minor css admin tweaks
* added: allow for other custom post types to be added to be searched from wppizza search widget
* added: wppizza_order_refund function and order_refund column to orders table (might be useful in some cases/gateways)
* added: layout option to NOT group opening times (widget) by days that have equal opening times
* fix: pre_get_posts filter -> set_search_query was erroneously applied/used in backend too as opposed to just the frontend search box
2nd November 2017

* fix/tweak: floating point precision could have caused tax rounding errors with some scenarios/settings
24th October 2017

* added: option to display tax total only , even if separate taxrates apply to different items (WPPizza -> Order Settings -> Taxes)
9th October 2017

* tweak: forcing monospaced / fixed-width font for (some) webmail clients when sending plaintext emails
5th October 2017

* FIX – IMPORTANT: capture of ip address in wppizza orders table did not account for ipv6 ip addresses and will have caused empty cart on order page for site visitors with ipv6 ip’s
2nd October 2017

* tweak/fix: minified js scripts again (were unminified in )
* tweak: loaded some admin localisation strings on init instead of (wrongly) in construct
* fix: tips were always rounded down for languages that use commas as decimal separators
* notice: removed all v3.x versions prior to 3.20 from wp repository
27th September 2017
* quickfix: could not change to delivery if “Pickup as default” (WPPizza->Order settings : pickup) was enabled
* added: introduced filter ‘wppizza_fltr_session’ to allow to filter cart/order sessions before any calculations take place
25th September 2017
* quickfix: fatal error (Can’t use function return value in write context) on older php versions when doing requirements check on install (since 3.0.25)
25th September 2017

* fix: pickup/delivery switching was broken in 3.0.24
* tweak: added check for db collation in tools screen to aid debugging
* tweak: added check for session save path in requirements check
* tweak: some more info added in tools screen to aid debugging
* tweak: renaming of a couple of lables (capitalization mostly)
* tweak: make sku inputs (if used) appear before additives in admin
* tweak: minor css tweaks in wppizza admin post pages
24th September 2017

* added: option to calculate delivery charges before taking into account any discounts (WPPizza-> Order Settings ->Discounts)
* tweak: eliminated some more possible php notices
* tweak: some more info in some help screens + slight re-arrangement of localization sections
* tweak: made order confirmation page (if used) scroll up on load to help with some themes
20th September 2017

* fix: setting “No delivery / Pickup only” in OrderSettings -> Delivery Type did not force order parameters to be pickup
* tweak: removed css declaration “display:table” for wppizza article in responsive layouts as it might cause layout issues with very long article names and/or lots of additives on small screen devices
* tweak: added space(s), decreasing margin-right to account for this, between span elements of additives list to aid wordwrap for small screen devices when using some themes that cause overflow issues
* tweak: set some admin info links in widget and install screens to point directly to the relevant pages instead of generic wordpress.org wppizza readme.txt
16th September 2017

* fix: eliminated some sku related php notices
* tweak: added wppizza-order-ispickup class to wrapper div on relevant pages if order is pickup
* tweak: more reliable handling of update status display in plugin screens (for any premium/third-party plugins/gateways that may use it)
15th September 2017

* fix: multiple recipients – if entered – were lost on update of plugin (WPPizza -> Order Settings -> Order Email Recipient(s))
* fix: sku’s – if used – not displayed properly in some places
* fix: print/email templates missing closing /tr element on some lines
05th September 2017

* fix – important: ipn notification for some payment gatewasy was broken (probably since v3.0.16)
* tweak: eliminated some more – possible – php notices
2nd September 2017

* tweak: elimiinated some more possible php notices
* tweak: added some more parameter output in any debug logs to aid debugging
* tweak: added table columns info to tools->system info to aid debugging
* tweak: added ‘CONFIRMED’ status to payment_status (might be useful for offline/offsite payments)
30th August 2017

* fix: ensure any saved customer details are being entered into the orderform directly after login (on orderpage) if they were still left empty until this point
26th August 2017

* fix: payment gateways were not displaying any instuctions (if any) in their admin pages
* tweak: removed superfluous (and for some themes interfereing) css word-wrap:nowrap on order page itemised cart names
* added: skeleton hosted paymant page payment gateway for developers
24th August 2017

* tweak: added a couple of css declarations when adding new templates to aid line-breaks for long text strings
* tweak: decoding entities and trimming values first before comparing selected options in dropdown fields on order page for more consistency across languages
* tweak: ensure order page gets reloaded when changing between pickup and delivery
* added: localization strings for gateways that first return an “unconfirmed” status before – after somewhere between several minutes and half an hour or so depending on gateway – confirm a payment

20th August 2017

* added: UNCONFIRMED status to payment_status in db
13th August 2017

* fix: issue displaying categories by shortcode when they were children of another parent category
* tweak: forcing wordprap in plaintext templates for long strings over 74 characters
* tweak: reverted – as in v2x – to display single menu items without wppizza formatting (as single.php would need to be set in theme) instead of simply displaying intructions. Typically these would not be used anyway as by default wppizza does not require or indeed link to single menu items anywhere
13th August 2017

* fix: pickup (if set to be default in admin) reverted to “delivery” for a customer after an initial order
* tweak: also force no display of [wppizza type=totals] shortcode (if used) on orderpage (only confuses the issue as the whole order is already displayed there)
13th August 2017

* added: allow for display in templates if customer is/was guest or registered user (with user id)
* fix: “Wppizza-> Layout -> Miscellaneous -> Hide size name and cart icon if item has only one size” did still display sizes in cart etc
* tweak: minor german translation improvements on initial install
10th August 2017

* tweak: did 3.0.9 improvements properly now
* fix: demo categories slugs used in shortcodes on demo pages might not always have been correctly sanitised for new, non-english installations
9th August 2017

* fix: reverted to 3.0.8 as 3.0.9 did more harm than good (sorry)
9th August 2017

* tweak: further minor impovement for some themes automatic supression of wppizza cart on orderpage
9th August 2017

* tweak: forcing reloading of order page when backpaging
* fix: any set bcc’s and/or attachments (WPPizza -> Order Settings) would get lost between v3.x -> v3.y updates
* fix: with some themes automatic supression of wppizza cart on orderpage caused layout issues on that page

non-english languages:

  • Note: The following will NOT affect any of your frontend settings/translations in WPPizza->Localization.
  • Re-added translation files keeping existin translations provided they were still the same.
  • As wppizza 3.x has many more new strings added as well as old and now obsolete strings deleted, you might find that strings in your ADMIN will be english in many places if you are using a non-english language that was translated before.
  • If you wish to contribute to the translation of the plugin into your particular language (may that be updateing the existing or adding a new one), please refer to the “readme.txt” in the /lang/directory of the plugin

9th August 2017

* fix: Bulk delete did not work for wppizza menu items
9th August 2017

* fix: With some themes that use their so-called advanced editor , the order page did not redirect to the thank you page after a successful order
* fix: could not publish new wppizza menu items (doh!)
8th August 2017

* fix: “Wppizza-> Layout -> Miscellaneous -> Hide cart icon next to prices” did not work anymore
* fix: “Wppizza-> Layout -> Miscellaneous -> Click title to add to cart” did not work anymore
* tweak: some minor css tweaks
* tweak: account for situations where “Layout -> group by categories” is enabled but menu item(s) have not been associated with any category (first available will be used in those situations)
6th August 2017

* added: option to also use “additives” as separate/additional element in loop shortcode attibutes
5th August 2017

* fix/tweak: removed some – quite inconsequentioal – javascripting that might have caused continuous order page reloading on some servers (possibly because server time is not synced accurately)
5th August 2017

* fix: with repurchising enabled html entities in product titles (apostrophies etc) might have caused repurchase for the product to not be available
* fix: new installs did not install capabilities for admin to access “access rights” page (should also fix updates to 3.x where access went missing )
* re-added: html/visual editor for html enabled localization strings
* tweak: updated info for repurchasing option
* tweak: removed some erroneously left over testing functions that will have caused php notices
* tweak: better handling of license status display for any premium plugins that may use it
* tweak: minor css tweak for cart
3rd August 2017

* tweak: some workaround to at least stop fatal errors if people auto-update to version 3.x from version 2.x without ever reading and following the upgrade instructions
2nd August 2017



WPPizza 3.0 is a major re-write of the plugin to aid further development alongside a multitude of added options as well as performance improvements and various tweaks.

  • UPGRADING FROM PREVIOUS RELEASE VERSIONS 2.x.x: Make sure you follow the upgrade instructions. Do NOT simply click on ‘update’ and hope that it works.
  • UPGRADING FROM v3.x beta versions: Simply apply the update as normal. No additional steps will be required.
  • MIGRATING YOUR CUSTOMISATIONS FROM v2.x to v3.x: As v3.x is a 90% re-write almost all action and filter hooks as well as template structures alongside some css have changed. Therefore, if you have made any kind of customisations to your pre version 3.x install – please refer to the developer documentation regarding details.


  • Added: Dedicated Customer Page in Admin (WPPizza->Customers)
  • Added: Additional formfields validation options (WPPizza->Order Form Settings)
  • Added: Admin new order notifications (audio and visual) now built in (WPPizza->Settings)
  • Added: Repurchasing option added (WPPizza->Order Settings)
  • Added: Many more shortcode options/attributes when displaying menu items (such as using different layouts , changing element order etc) – please refer to the shortcode documentation
  • Added: Dedicated input field (WPPizza->Layout) to customise/override css declarations as added alternative to using files
  • Added: Access rights (WPPizza->Access Rights) now includes settings for ‘Menu Items’ and ‘Categories’
  • Update: Admin settings are now sub-categorised somewhat more logically within their admin pages
  • Update: Any WPPizza templates edited must now reside in a wppizza sub-directory to be read (see developer docs regarding templates editing)
  • Update: More normalized info in the wppizza_orders table for easier 3rd party plugin development
  • Update: Tidy up of order history somewhat with added option (getting each customer details) and css improvements regarding responsiveness
  • Change: Itemised Order Details, Summary and Transaction Details now using table elements for consistency throughout
  • Tweaks: Various performance improvements
  • Tweaks: More consistency throughout
  • Removed: Retired old default templates (email/print) in favour of only using drag and drop templates for consistency
  • Removed: Removed sticky cart option in favour of minicart

1st August 2017

1.0 –
* changelogs for versions up to 3.0 can be found in /wppizza/changelogs/