Skip to content

Documentation

Installation


There are two ways to upload and activate the plugin:

A. The recommended way

  1. Extract the content of the plugin zip file
  2. Upload the created advanced-wishlist-for-woocommerce folder via FTP to your /wp-content/plugins/ directory
  3. Go to Plugins
  4. Activate the plugin

B. The normal way (make sure that the PHP upload limit is over 50MB and the PHP timeout limit is high enough depending on your internet connection speed)

  1. Extract the zip file you have downloaded.
  2. Login to your administration panel (ex. http://www.yourdomain.com/wp-admin).
  3. Go to PluginsAdd New.
  4. At the top of the page click the “Upload Plugin” link
  5. Click Choose File (or what your browser uses to navigate to your files)
  6. From the extracted files navigate to and select advanced-wishlist-for-woocommerce.zip and click “Install Now
  7. You may be asked to confirm your wish to install the plugin.
  8. If this is the first time you’ve installed a WordPress plugin, you may need to enter your FTP login credentials. This information is available through your web server host.
  9. Click Proceed to continue with the installation. The resulting installation screen will list the installation as successful or note any problems during the install.
  10. If successful, please click Activate Plugin to activate it.

After activation

The plugin automatically creates a page containing the [ aww_wishlist ] shortcode and a Wishlist settings page under WooCommerce → Wishlist. WooCommerce must be installed and active — the plugin will show an admin notice and stay dormant otherwise.

Features


  • Add to Wishlist button on single product pages and shop/archive loops
  • Configurable button position, text, “already added” label and icon (heart, bookmark, star or none)
  • Multiple named wishlists per logged-in user, with a configurable maximum
  • Guest wishlist support via a browser cookie — no account required
  • Guest wishlist automatically merges into the user’s account on login or registration
  • Wishlist page shortcode with tabs to switch between a user’s wishlists
  • “Add all to cart” and “add selected to cart” bulk actions from the wishlist page
  • Optional automatic removal of an item from the wishlist once it’s added to the cart
  • Sliding panel mini-widget showing the wishlist count and contents, with an AJAX-driven UI
  • Public, read-only wishlist sharing via a unique shareable link
  • Private wishlists, visible only to their owner
  • Share a wishlist directly by email with a customizable subject, body and headers
  • Social sharing buttons: Facebook, X (Twitter), Pinterest, WhatsApp and Telegram
  • Show/hide price, stock status and date-added columns on the wishlist page
  • Full AJAX interactions — no page reloads when adding, removing or moving items
  • WPML compatible, including default-language fallback for shared links
  • WooCommerce High-Performance Order Storage (HPOS) compatible
  • Theme-overridable templates, following the same convention as WooCommerce
  • Dozens of action and filter hooks for developers (see For Developers)
  • Translation ready via .po / .mo files
  • Available translations: English, German, Greek, Spanish, Italian

Requirements


  • WordPress 5.8+
  • WooCommerce 5.0+ (tested up to 9.0)
  • PHP 7.4+

Usage


Plugin Settings

Navigate from your WordPress administration panel to “WooCommerceWishlist“. Settings are split into four tabs.

General tab
  1. Guest Wishlist: Allow non-logged-in users to add items to a wishlist using a browser cookie.
  2. Multiple Wishlists: Let users create multiple named wishlists instead of a single default list.
  3. Max Wishlists per User: Maximum number of wishlists a single user can create.
  4. Remove on Add to Cart: Choose whether an item stays on the wishlist or is removed once added to the cart.
  5. Wishlist Page: The page containing the [ aww_wishlist ] shortcode (created automatically on activation).
Button tab
  1. Show on Product Page: Display the Add to Wishlist button on single product pages.
  2. Show on Shop/Archive: Display the button in product loops (shop, category, search pages).
  3. Loop Button Position: Place the button after the Add to Cart button, or overlaid on the product image.
  4. Button Text / Button Text (Added): Customize the default label and the label shown once a product is already wishlisted.
  5. Button Icon: Heart, bookmark, star, or no icon at all.
Wishlist Page tab
  1. Show Price, Show Stock Status, Show Date Added: Toggle each column on the wishlist table.
Sharing tab
  1. Enable Wishlist Sharing: Let users share a wishlist via a public, read-only link.
  2. Enable Email Sharing: Let users email their wishlist to someone else.
  3. Social Networks: Choose which social sharing buttons appear (Facebook, X/Twitter, Pinterest, WhatsApp, Telegram).

Frontend usage

Visitors add products to a wishlist from the button on the single product page or shop loop. Logged-in users keep their wishlists permanently; guests keep theirs for as long as the cookie lives (the cookie life can be adjusted with the aww_cookie_lifetime filter — see For Developers). On the wishlist page, users can rename or delete a wishlist, move items between wishlists, remove individual items, and add all or a selection of items straight to the cart.

Sharing a wishlist

If sharing is enabled, a shareable link is available on the wishlist page. Anyone opening that link sees a read-only view of the wishlist (private wishlists remain visible only to their owner, even via the link). Users may also email the wishlist directly to a friend’s address.

Shortcodes


[ aww_wishlist ]

Renders the full wishlist page: tabs for each of the user’s wishlists, the items table, and the share/email/bulk-action controls. This is the shortcode placed on the page selected in General → Wishlist Page.

[ aww_mini_wishlist show_count="yes" icon="heart" ]

Renders a small trigger (e.g. for a header/menu) that opens the sliding wishlist panel. Attributes:

  • show_count: yes/no — show the number of items next to the icon.
  • icon: icon to display.
[ aww_add_to_wishlist product_id="123" variation_id="0" ]

Renders a standalone Add to Wishlist button for a specific product, useful for custom templates or builder pages. product_id defaults to the current post/product if omitted.

For Developers


Templating

Any template file may be overridden from your theme, the same way WooCommerce templates are overridden. Copy the file into your-theme/advanced-wishlist/ keeping the same filename.

e.g. to override wishlist-page.php in a theme called “storefront-child”, create a folder named advanced-wishlist in /wp-content/themes/storefront-child/ and copy wishlist-page.php there.

Overridable templates: add-to-wishlist-button.php, wishlist-page.php, wishlist-panel.php, mini-widget.php, emails/share-wishlist.php.

Hooks

The plugin exposes the following action and filter hooks.

Actions
/includes/class-aww-install.php
	aww_activated                         fired on plugin activation
	aww_deactivated                       fired on plugin deactivation

/includes/class-aww-guest-session.php
	aww_guest_session_started( $session_key )                 new guest cookie/session created
	aww_guest_merged_on_login( $session_key, $user )           guest wishlist merged into account on login
	aww_guest_merged_on_register( $session_key, $customer_id ) guest wishlist merged into account on registration

/includes/class-aww-wishlist-manager.php
	aww_wishlist_created( $wishlist_id, $user_id, $session_key )
	aww_wishlist_deleted( $wishlist_id, $user_id, $session_key )
	aww_wishlist_renamed( $wishlist_id, $name, $user_id, $session_key )
	aww_wishlist_privacy_updated( $wishlist_id, $privacy, $user_id, $session_key )
	aww_item_added( $wishlist_id, $product_id, $variation_id, $quantity )
	aww_item_removed( $wishlist_id, $product_id, $variation_id )
	aww_item_moved( $item_id, $to_wishlist_id )
	aww_guest_wishlist_merged( $session_key, $user_id )

/includes/class-aww-email.php
	aww_before_share_email( $wishlist_id, $to_email )
	aww_after_share_email( $wishlist_id, $to_email, $result )

/templates/wishlist-page.php
	aww_before_wishlist_page( $wishlists, $active, $readonly )
	aww_after_wishlist_page( $wishlists, $active, $readonly )
	aww_wishlist_page_no_items( $active, $readonly )
	aww_before_wishlist_table( $active, $items, $readonly )
	aww_after_wishlist_table( $active, $items, $readonly )
	aww_wishlist_table_extra_column_headers( $readonly )
	aww_wishlist_table_extra_columns( $item, $product, $active, $readonly )

/templates/wishlist-panel.php
	aww_panel_before_items( $wl, $items )
	aww_panel_after_items( $wl, $items )
	aww_panel_footer_actions( $wl, $items )
Filters
/includes/class-aww-wishlist-manager.php
	aww_user_wishlists( $result, $user_id )
	aww_guest_wishlists( $result, $session_key )
	aww_wishlist_items( $result, $wishlist_id )
	aww_max_wishlists( $max, $user_id, $session_key )
	aww_wishlist_url( $url, $wishlist )

/includes/class-aww-guest-session.php
	aww_cookie_lifetime( $lifetime )                  guest wishlist cookie lifetime in seconds

/includes/class-aww-ajax.php
	aww_toggle_item_response( $data, ... )             AJAX response after add/remove toggle
	aww_add_to_cart_quantity( $quantity, $product_id, $variation_id )

/includes/class-aww-shortcodes.php
	aww_wishlist_page_template_args( $args, $wishlists, $active, $readonly )
	aww_mini_widget_template_args( $args )
	aww_button_html( $html, $product_id, $variation_id, $in_wishlist )

/includes/class-aww-install.php
	aww_wishlist_page_args( $page_args )               args used to create the wishlist page on activation
	aww_default_options( $defaults )                   default option values on activation

/includes/class-aww-assets.php
	aww_script_params( $params )                        data localized to the frontend script (window.aww_params)

/includes/class-aww-email.php
	aww_share_email_subject( $subject, $wishlist_id, $to_email )
	aww_share_email_body( $body, $wishlist_id, $items )
	aww_share_email_headers( $headers, $wishlist_id, $to_email )

/templates/add-to-wishlist-button.php
	aww_button_class( ... )
	aww_button_icon_svg( ... )

/templates/wishlist-page.php
	aww_wishlist_item_row_class( 'aww-item-row', $item, $product )

Frequently Asked Questions


  1. Does it work with guests who are not logged in?

    Yes. If “Guest Wishlist” is enabled, non-logged-in visitors get a wishlist stored against a browser cookie. It is automatically merged into their account the moment they log in or register.
  2. Can a customer have more than one wishlist?

    Yes, if “Multiple Wishlists” is enabled in the General settings tab. You can also cap the maximum number of wishlists per user.
  3. Can I let people see a wishlist without logging in?

    Yes, enable sharing in the Sharing tab. Each wishlist gets a unique shareable link that opens a read-only view. Wishlists marked private remain visible only to their owner, even via the link.
  4. Does it work with variable products?

    Yes, both the product page button and the wishlist’s add-to-cart actions are variation aware.
  5. Is it compatible with WooCommerce High-Performance Order Storage (HPOS)?

    Yes, HPOS compatibility is declared on plugin load.
  6. Can I change the wording or markup of the wishlist page?

    Yes. Copy any file from /templates/ into your-theme/advanced-wishlist/ to override it, or use one of the many action/filter hooks listed under For Developers.
  7. I need a change that isn’t covered by the settings or hooks. Will you do it for me? If it’s a change that benefits all buyers, we may consider it for a future update. Custom, site-specific changes are outside the scope of regular support.

Changelog


1.0.0 24 Jun 2026
  • Initial release