Author Archive

License activation rules


According to Envato’s License Terms, each license you purchase allows you to create one unique end product. For example, a website theme like Listeo can be customized to create one specific website. If you want to create a second website from the same theme, you’ll need to purchase another license.

Click For more informations

You can activate the Listeo License on one domain, but as we understand how web development works and it’s crucial to have a test/dev/staging website, these domains below can be activated without any restriction. Just need a valid license key.

  • localhost
  • *.dev
  • *.test
  • *.local
  • local.*
  • *.staging
  • staging.*
  • *.example
  • *.invalid
  • *.dev.css (DesktopServer)
  • *.myftpupload.com (GoDaddy)
  • *.cloudwaysapps.com (Cloudways)
  • *.wpsandbox.pro (WPSandbox)
  • *.ngrok.io (tunneling)

 

If you want to change your main domain, you can deactivate license in Listeo Core -> License -> Deactivate (you need to have access to website that license is active on)

 

How to Customize User Registration Forms

Remember there are settings in Listeo Core -> Registration regarding the form, this instruction below is only for custom fields.

If you want to change names or Owner/Guest role, use this method: How to change some texts/words?

In Listeo you can add custom fields to user registration.

First you have to define those fields. Go to Listeo Editor -> User Fields. There are two tabs for Guest and Owner as you can set those fields separately for each role.

Click the green button Add field, type a name and click OK, you will see box with new field and options for that field

you can switch Type of this field to select, radio, checkbox or even file upload field.

Those fields will be now added also to My profile page in Listeo Dashboard.

When you are ready click Save Changes and  go to Listeo Editor -> Registration Fields

 

Here you will see the field you’ve just created in the Available Fields section in the right side, you can simply drag&drop it to the fields area, and save.

 

That way this field will be now added to your registration form. You can change the label or set a new icon for that field.

 

SMS Notification & OTP verification

Listeo SMS Notification plugins add capabilities to your registration process that can enhance the security and user experience of your application. It also allows you to send notification to users about upcoming bookings, expiring listings or new bookings or reviews.This guide walks you through the steps to configure it.

Step 1: Sign Up for Twilio

  1. Create a Twilio Account: Go to the Twilio website and sign up for an account if you don’t already have one.
  2. Verify Your Email and Phone Number: Complete the verification process for your email and phone number.
  3. Get Twilio API Credentials: Once your account is set up, navigate to the Console Dashboard to find your Account SID and Auth Token. These credentials are required to authenticate API requests.
  4. Copy those information to Listeo Core -> SMS Settings -> Providers, there are settings for Twilio Account SID, Twilio Auth Token and Twilio phone number
  5. And that’s all, now you can turn on which SMS you want to send and configure their content

If you want to test it first without actually spending money on Twilio, you can enable Debug Mode in Listeo Core -> SMS Settings, with that enabled you will see the messages sent in Listeo Core -> View Debug log

To enable debugging mode, add the following line to the wp-config.php file in your WordPress installation directory:

define('WP_DEBUG', true);
define( 'WP_DEBUG_DISPLAY', false );
define('WP_DEBUG_LOG', true);

Shortcodes

[login_form]

  1. [listeo_login_form]
  2. [listeo_login]
  3. [listeo_registration]

[listings]

The [listings] shortcode is used to display listings on a page. It has several attributes that you can use to customize the output. Here’s a brief documentation for each attribute:

  1. style: Determines the style of the listings. Can be ‘list’, ‘grid’, or ‘grid-compact’. Default is ‘list’.
  2. layout_switch: If set to ‘on’, it allows users to switch between different layout styles. Default is ‘off’.
  3. list_top_buttons: Determines which buttons to display at the top of the listings. Options are ‘filters’, ‘order’, ‘layout’, and ‘radius’. You can use a pipe ‘|’ to separate multiple options. Default is ‘filters|order|layout|radius’.
  4. per_page: The number of listings to display per page. Default is the value of ‘listeo_listings_per_page’ option, or 10 if that option is not set.
  5. orderby: Determines how to sort the listings. Default is empty.
  6. order: Determines the order of the listings. Can be ‘ASC’ for ascending order or ‘DESC’ for descending order. Default is empty.
  7. keyword: A keyword to filter the listings. Default is empty.
  8. location: A location to filter the listings. Default is empty.
  9. tax-listing_category: Provide a slug of category you want to display, you can set more than one, separate it by coma.
  10. tax-region: Provide a slug of region you want to display, you can set more than one, separate it by coma.
  11. tax-service_category: Provide a slug of service category you want to display, you can set more than one, separate it by coma. The same works for event_category, rental_category, etc
  12. search_radius: The radius to use for location-based searches. Default is empty.
  13. radius_type: The unit of measurement for the search radius. Default is empty.
  14. featured: If set to ‘true’, only featured listings are shown. If set to ‘false’, featured listings are hidden. If null, both featured and non-featured listings are shown. Default is null.
  15. custom_class: A custom CSS class to add to the listings. Default is empty.
  16. grid_columns: The number of columns to use in grid style. Default is ‘2’.
  17. in_rows: Determines whether to display the listings in rows. Default is empty.
  18. ajax_browsing: If set to ‘on’, enables AJAX browsing for the listings. Default is the value of ‘listeo_ajax_browsing’ option.
  19. from_vs: This attribute is used internally and should not be set manually.

Here’s an example of how to use the shortcode with some of these attributes:


[listeo_search_form]

The [listeo_search_form] shortcode is used to display a search form on a page. This form allows users to search through listings. Here’s a brief documentation for how to use this shortcode based on the output_search_form function:

The [listeo_search_form] shortcode accepts several attributes:

  1. source: Determines the source of the search form. Can be ‘sidebar’, ‘home’, or ‘split’. Default is ‘sidebar’. You can define custom sources by creating new forms in Listeo Editor -> SearchForms
  2. wrap_with_form: If set to ‘yes’, the search form is wrapped with a <form> tag. Default is ‘yes’.
  3. custom_class: A custom CSS class to add to the search form. Default is empty.
  4. action: The action attribute for the form. Default is empty.
  5. more_trigger: If set to ‘yes’, a button for additional features is displayed. Default is ‘yes’.
  6. more_text_open: The text for the ‘open’ state of the additional features button. Default is ‘Additional Features’.
  7. more_text_close: The text for the ‘close’ state of the additional features button. Default is ‘Additional Features’.
  8. more_custom_class: A custom CSS class to add to the additional features button. Default is ‘margin-bottom-10 margin-top-30’.
  9. more_trigger_style: The style of the additional features button. Default is ‘relative’.
  10. ajax_browsing: If set to ‘on’, enables AJAX browsing for the search form. Default is the value of ‘listeo_ajax_browsing’ option.
  11. dynamic_filters: If set to ‘on’, enables dynamic filters for the search form. Default is ‘off’ if ‘listeo_dynamic_features’ option is not set to ‘on’.
  12. dynamic_taxonomies: If set to ‘on’, enables dynamic taxonomies for the search form. Default is ‘off’ if ‘listeo_dynamic_taxonomies’ option is not set to ‘on’.

Here’s an example of how to use the shortcode with some of these attributes:

How to fix the ” [custom-post-author-email-shortcode]”

Are you worried about this message appearing in the form?

Don’t be. This message is displayed because we use a custom shortcode to dynamically replace the “To” address with the email of the listing owner on which the contact form is displayed. Without this, we could only set one email for all the forms, meaning only you, as the site owner, would receive the emails instead of the owners of the listings.

This solution requires the Dynamic Field add-on for Contact Form 7. The custom shortcode added via this plugin is not recognized by CF7 as valid code, which is why it shows this error.

But it’s perfectly fine; ignore that error. The form will work.

If it doesn’t, it simply means you need an external SMTP. More about this can be found here:

Having problems with your WordPress site not sending emails?

How to troubleshoot Stripe Split Payments

Setting up Stripe Connect in Listeo can be a challenging process, and we frequently receive support tickets from users seeking assistance with troubleshooting. Here are a few steps you can take before reaching out to us.


Step 1

Go to Overview of your Stripe Connect dashboard,
Ensure that there are no tasks on the list tagged as “Required” and that all necessary steps are completed.

This is example of not fully configured account, the platform profile is not completed. That will cause troubles with Connect button on wallet page. The onboarding process won’t be correctly completed.


Step 2

Go to your WordPress admin -> WooCommerce -> Settings -> Payments -> Stripe -> Manage -> Settings

Make sure the payment options are correctly configured and you have green checkmark  in all options

it’s especially important for Webhooks as that what we mainly use in Listeo to work with Stripe API. Make sure it works both in test mode and live mode.

While we’re here you enable log, that will help us debug any issues, it’s below in Advanced Settings.


Step 3

Double check if all keys are set correctly, and they match the settings in your Stripe Dashboard, both for Live and Test mode


Step 4

If you made sure everything above is set and it still doesn’t work, we need admin access to your site.

You can create temporary admin account and delete it later or you can install this plugin https://wordpress.org/plugins/temporary-login-without-password/ and generate for us the link for 1 week admin access (make you’re creating user with ADMIN ROLE as by default it will be regular user).

Please also make sure that:

  1. You’ve set your Stripe payment gateway in Test mode
  2. You have one user with Owner role who has at least 1 published listings, and is connected to your Stripe Platform in the Wallet page. We most likely won’t be able to do that as it usually requires some address/contact data
  3. Please install this plugin https://wordpress.org/plugins/wp-user-switch/ to allow us easy change between users for tests
  4. And if you haven’t already, please contact us via Support Tab

 

How to edit single listing layout using Elementor

Editing Custom post type with Elementor Theme Builder requires having Elementor Pro

If you bought the theme after version 1.9.20, your single listing template for Theme Builder will be imported with the Setup Wizard.
If you’re upgrading from previous versions, you need to import the file as shown in the video below. You can find the file here: https://listeo.pro/elementor-single-listing-template.json or in your ‘extras’ folder when you download ‘All Files & Documentation’ from https://themeforest.net/downloads.

Here’s a short video guide on how to use it:

Please note that you need to use one of your listings as a preview (around 00:28 in the video). Otherwise, Elementor will use the standard post view to load the template preview, which won’t make much sense for listing content.
This functionality will be expanded with new options and more control for widgets based on your feedback and theme development.”

Add a phone number to the listing url

This snippet will alter the listing URL to include phone number of the listing:  www.site.com/listings/3331542847/listing-name/

In your child theme functions.php file add this code.

function listing_post_type_link($permalink, $post)
{
	// Abort if post is not a listing
	if ($post->post_type !== 'listing')
		return $permalink;

	// Abort early if the placeholder rewrite tag isn't in the generated URL
	if (false === strpos($permalink, '%'))
		return $permalink;

	$find = array(
		'%phone%'
	);
$phone = get_post_meta($post->ID,'_phone',true);
	$replace = array(
		$phone
	);

	$replace = array_map('sanitize_title', $replace);

	$permalink = str_replace($find, $replace, $permalink);

	return $permalink;
}
add_filter('post_type_link', 'listing_post_type_link', 10, 2);

function change_listing_slug($args)
{
	$args['rewrite']['slug'] = 'listing/%phone%';
	return $args;
}
add_filter('register_post_type_listing', 'change_listing_slug');

After that go to Settings -> Permalinks, and click Save to renew new permalinks

Stripe Split Payments Support

Feature available since Listeo version 1.9

Listeo offers support for Stripe Connect that allows you to automatically split the payment for a booking and send part of the payment to the listing’s Owner and part to you as a site owner. Stripe Connect is a service provider for marketplace payment solutions.

This requires having the official WooCommerce Stripe Payment Gateway installed and configured, only the payments made by this gateway will be split.

With Stripe you can accept Visa, MasterCard, American Express, Discover, JCB, and Diners Club cards, and even Bitcoin and is supported in 47 countries

With a Stripe Connect, you create a platform to which Listing Owners can signup and “connect” and that helps you automate payments and simplifies the usage of your site.

 

How it works


You have to enable your Connect Platform in Stripe dashboard. After properly configuring both Stripe and WordPress according to instructions below, the Wallet page will have an option “Connect to Stripe“.

Any Listing Owner who will click this button will be going through the “onboarding” process where he will set his own Stripe account and connect it to your platform. From now on every booking that will be made using Listeo that will be paid with Stripe gateway will be automatically splitted and you as platform owner will get the commission and the Owner will get his earning directly to his Stripe account. The money is then payout automatically by Stripe based on the settings or rules (it’s different based on the country)

 

How to configure Stripe Connect in Listeo


Let’s get started

  • Create a stripe account by visiting https://stripe.com/. You’ll be viewing a page that asks you to Activate Payments, click that button to fill out your business profile to accept payments
  • Go through the whole process of onboarding https://dashboard.stripe.com/account/onboarding – make sure you haven’t skipped any field there. It’s very important to have all the items checked, you even need to set your own branding color or upload logo as without it it won’t let you set Connect accounts.
  • After successful registration login to Stripe Dashboard go to Connect, then go to “Get started with Connect“, where you will be able to complete your platform profile and add required informations to enable payments on your account
  • It’s very important to have all the items checked, you even need to set your own branding color or upload logo as without it it won’t let you set Connect accounts.
  • Enable Test Mode
  • Get Client ID. For that go to Settings (the cog icon next the “Test mode”), scroll down to Product Settings -> Connect box,
  • Navigate to Onboarding Options -> OAuth tab
  • Copy your Test mode client ID and paste it in Listeo Core -> Stripe Connect -> Stripe Connect Test mode Client ID.
  • Turn on both OAuth Settings
  • in Redirects section click +Add URL, and add there a link to your wallet page with /?stripe-setup=yes at the end, so the whole link would be
    https://www.yourdomain.com/wallet/?stripe-setup=yes
  • Now Switch to Live mode and repeat those steps, get the Live Client ID to set it in Listeo Core, enable OAuth settings and add Redirect.
  • Review all other options

 

  • Setting up WooCommerce payment gateway:
  • Install WooCommerce Stripe Payment Gateway
  • Go to wp-admin -> WooCommerce -> Settings -> Payments, find Stripe on the list, go to Manage and connect to your Stripe account you’ve just created in step before.
    It’s VERY important to not create a new account from that link in plugin, it has to be the one you already have and already has Connect enabled.
  • It should automatically get all required API keys, but to be sure go to Settings, click Edit Account Keys and make sure both test and live keys are set.
  • Set the webhook in your Stripe Account Settings as it’s explained in the popup. It’s important as this webhook is what is used to get data about payment. Make sure the webhook type is set to Account, not Connect.
  • It’s important to know that this feature in Listeo is in its early stage and although we did a lot of testing we strongly encourage to run it in Test mode first to make sure everything works as expected. To do that go to wp-admin -> WooCommerce -> Settings -> Payments -> Stripe -> Manage -> Settings and check the “Enable test mode” checkbox

After Connecting to Stripe, users will have a new box in Wallet page with few informations about his account and option to login directly to Stripe Dashboard to see all details about the payments to his account.

Example view of Stripe Dashboard for Listing Owner

Listing Types Explanation

This is one of most common questions we get on the support – “how/where can I change listing types”

Listeo has 4 listing types – Service, Rental, Event and Classifieds. Those listing types exist to have different booking options, so you won’t offer for example tickets for renting out apartments. If you want to disable the ones you don’t need you can do it in Listeo Core -> Submit listing.

If you want to rename them, you can use this method.

There’s currently no option to add more types without modifying code, remember, those types do not exist for classification purpose, for that you have Taxonomies.