
內容簡介
Travelmanager 外掛能將網站訪客轉化為您的下一位客人,透過 WordPress 提供旅遊、票券及活動的資訊,幫助客戶發現並預訂他們的下一個體驗。
【主要功能】
• 連接預訂系統至 WordPress
• 展示出發資訊及活動日曆
• 提供邀人的活動卡片
• 管理行程、產品及預訂
• 支援多種語言及設定選項
外掛標籤
開發者團隊
② 後台搜尋「Travelmanager – Tours, Tickets & Bookings」→ 直接安裝(推薦)
原文外掛簡介
Turn website visitors into your next guests. Travelmanager brings tours, tickets and events straight to WordPress, helping customers discover their next experience and start booking.
Connect your booking system to WordPress. Showcase departures, guide visitors with Tour finder and calendars, and present experiences with inviting event cards. Add products and gift vouchers, and combine shortcode blocks with your own page design.
Manage schedules, products and bookings in your existing Travelmanager account. Compatible Gastrozack services retain their integrations. This plugin connects to an external service; it is not a standalone booking engine. An account is required. Charges, availability, privacy terms and service conditions depend on your provider.
Settings and languages
Settings → Travelmanager offers an optional default account, language selection and connection test. Explicit shortcode accounts always override the saved account. Existing pages work without new settings or tokens. The test checks the Travelmanager endpoint over HTTPS without creating a booking.
WordPress token (optional): copy the value from Travelmanager. With no stored token, existing unauthenticated requests continue. A configured token is stored encrypted and sent only server-side to xwordpress_endpoint.php on the saved account: GET uses the wordpress_token query parameter; POST uses an application/x-www-form-urlencoded body field. Existing call parameters and the historical XML/shortcode token parameter remain unchanged.
Travelmanager requires this token only when set.wordpress_token is configured; tenant ent_tm is exempt on the server. The plugin does not infer or bypass tenant rules. Missing/invalid credentials produce a clear authentication error (HTTP 403, INVALID_WORDPRESS_TOKEN). There is no automatic retry without the token and errors are not cached as successful data. The connection test uses the same endpoint and token; success on an exempt account does not prove token enforcement.
The saved token is never displayed in the form, shortcodes or browser code. A blank password input keeps a saved token; use Remove the stored token to return to an empty setting. Replace or remove it before changing the saved account. Explicit shortcodes for other accounts never receive that account’s private token.
Keep existing behavior is the default. Opt into Automatic to follow the page/site language, or select a fixed language. Supported codes: de (German), en (English), pl (Polish), cs (Czech), fr (French), es (Spanish), it (Italian), da (Danish), nl (Dutch). A supported lang overrides the new mode; regional locales are normalized and cz maps to cs.
In the new mode, backend-generated eventcalendar content uses German for de and English for all other languages, including AJAX. Plugin controls retain the selected language. Other calls request their selected language. Backend descriptions and hosted interfaces need the provider’s translations.
Content Bridge (optional)
Share your saved website text with the Travelmanager chatbot. In Settings → Travelmanager → Settings → Content Bridge, select Enable Content Bridge and save its separate form. The feature is off by default, including after an upgrade; a plugin version containing Content Bridge is required.
After saving, copy the displayed Content Bridge URL into the corresponding website-source setting in your Travelmanager chatbot. No shortcode is needed. The public, read-only WordPress REST endpoint is travelmanager/v1/content-bridge; always use the displayed URL, which also supports subdirectory installations and plain permalinks.
The endpoint returns one complete UTF-8 JSON array with these fields for every eligible page or post:
url: full page/post permalink.
title: saved title as plain text.
description: manually saved excerpt as plain text, or an empty string.
inhalt: saved editorial body as plain text, with line and paragraph breaks.
Only published, publicly viewable WordPress pages and posts without a password are included. Drafts, private or scheduled content, attachments and custom post types are excluded. WordPress’s site-wide search-engine indexing restriction returns an empty array. Stored noindex settings from Yoast SEO, Rank Math and SEOPress are also respected, including supported post-type/global defaults. Custom SEO, theme-only robots rules or membership restrictions need a site-specific integration; actual search-engine indexing is not checked.
The export reads saved editorial content without rendering the page. It removes HTML markup, shortcodes and their enclosed content, plugin blocks, dynamic queries/embeds, synced-block references and bound block content. Saved core text blocks, headings, lists, tables and captions retain their text and order. TM-generated timetables, calendars, booking interfaces and other plugin results are not included. A shortcode-only page can therefore have an empty inhalt. Text stored only in pagebuilder custom fields or shortcode-based builder containers is not exported.
When enabled, the export is publicly accessible without a WordPress login or the private Travelmanager WordPress token. Enabling it does not automatically send text to Travelmanager or another service. The chatbot imports the URL when you explicitly update its knowledge there. Disabling the bridge immediately returns HTTP 404; it does not remove an earlier chatbot import. Refresh the chatbot’s knowledge separately after changing its sources.
The plugin does not cache export responses and sends no-store headers. Exclude this REST route from any page/CDN cache that overrides those headers. When the site has no eligible content, the response is [].
Shortcode basics
Use a WordPress Shortcode block. Replace example IDs with IDs from your account. Every call needs an explicit or saved account:
[travelmanager call="timetable" account="example.travelmanager.software" station_id="2" max="12"]
With a saved account, omit account. Empty/omitted call selects timetable; existing technical aliases remain supported. Do not translate attribute names: use linie_id and linie_typ_id.
Attribute reference
Most attributes default to empty. They affect only calls that implement them. Use literal true/false, not 1/0.
account: backend hostname; explicit value overrides settings.
call: view identifier; default timetable.
lang: language override in the opt-in mode; legacy precedence stays unchanged.
vermittler_id: numeric referral; existing URL/session referral handling remains.
cache: false bypasses the plugin’s API read cache, not page/CDN caches.
station_id: station filter; timetable accepts comma-separated IDs.
linie_id: timetable/route-calendar route ID; timetable also accepts ID lists.
linien_ids: Tour finder route IDs, comma-separated; not a universal filter.
linie_typ_id: route category/type IDs, comma-separated where supported.
category_id: shop category, distinct from route type.
product_id: catalog product ID or event relation key, depending on the call.
mandant_id, ressource_id: timetable tenant/resource filters.
start, stop: call-specific start date and duration; see each call below.
max: positive result limit; defaults differ by call.
upcoming_only: timetable/alias only; true excludes departures whose departure time has been reached or passed. Off by default.
only_available: timetable/alias only; true requests only online-bookable departures with available capacity and omits the visitor availability checkbox. Off by default.
newwindow: true opens supported booking links in a new window/tab.
show_station: event-calendar selector with true; finder hides departure with false.
show_category: event-calendar category selector with true.
current_date: finder true initializes today through noon, tomorrow after noon (server time).
signets: configured finder signet filter with automatic results.
view: call-specific presentation; see below.
target: call-specific destination/container; see below.
godirect: timetable direct-booking switch or finder destination URL; event calendar uses a URL query instead.
title: custom chatbot trigger text or flat-view heading; not automatically translated.
exact: accepted historical attribute with no implemented effect.
All calls below accept the shared account/language/referral/cache context where applicable. Only additional attributes are listed.
timetable / timetablev2
Upcoming departures; both names use the same dispatch. The timetablev2 alias is deprecated for new integrations; use timetable instead. Existing timetablev2 shortcodes remain fully supported. Its name is unrelated to the V2 stylesheet. Unlike Tour finder, this call displays a chronological departure list instead of a departure/destination/date search.
[travelmanager call="timetable" station_id="2" linie_id="146" start="today" stop="3 months" max="12"]
Filters: station_id, linie_id, linie_typ_id, mandant_id, ressource_id. A nonempty linie_typ_id takes precedence over linie_id. Optional: start, stop, max, upcoming_only, only_available, target, godirect, newwindow, view.
Start defaults to today; accepts DD.MM.YYYY or expressions such as next month. Starts older than one month are clamped to today. Stop is a duration from start, e.g. 3 months, without a leading plus; default three months. An invalid/earlier stop falls back to one month. Max defaults to 250; values above 500 also become 250.
Target changes the booking destination; nonempty godirect selects the direct-booking branch. newwindow="true" opens supported links separately. view="ldjson" outputs structured event data without the visible timetable.
Next three available departures today:
[travelmanager call="timetable" start="today" stop="1 day" max="3" upcoming_only="true" only_available="true" newwindow="true"]
Add this example in a WordPress Shortcode block, using straight quotation marks. It uses your saved account; retain an explicit account, station_id or linie_id if your existing integration needs one.
start="today": begin with today’s date.
stop="1 day": with start=”today”, end at the next local midnight. A departure exactly at midnight belongs to the next day and is excluded.
upcoming_only="true" (new): exclude departures whose departure time has already been reached or passed.
only_available="true" (new): show only departures the backend reports as online-bookable with available capacity. Visitors do not need to activate a checkbox. The plugin additionally excludes sold-out or unknown-availability rows from the returned data.
max="3": with either new filter enabled, show at most three departures after filtering and chronological sorting. Fewer are shown if fewer qualify.
newwindow="true": open supported external booking links in a new tab/window.
When no eligible departures remain today, no departure cards are displayed; the existing translated no-results message is shown. Tomorrow’s trips do not fill the list.
The two new options are independent and only the exact value true activates each one. For example, use upcoming_only="true" alone to show future departures while retaining sold-out entries. Use only_available="true" alone to filter availability without adding a current-time cutoff. Other periods still work: retain both filters and change stop="1 day" to stop="1 week" for upcoming available departures within the week starting today.
Both timetable names support the options; other calls ignore them. If neither option is enabled, the previous request, output and cache behavior are preserved. No existing shortcode needs to be changed. The new behavior requires updated plugin and backend versions; adding attributes to an older installation is not an update.
The backend timetablev3 endpoint must support these flags and filter/sort before applying max. The plugin cannot recover candidates omitted by an older backend’s early limit. Remove cancelled trips from online booking in Travelmanager so they are omitted by the endpoint. Opt-in API reads bypass the plugin cache, even with cache=true. Exclude the page from full-page/CDN caches separately. An open page updates on a new render, not continuously.
Tour finder (fahrtfinder2)
Tour finder with AJAX departure/destination/date results.
[travelmanager call="fahrtfinder2" station_id="2" linien_ids="146" current_date="true"]
Optional: station_id, linien_ids, linie_typ_id, signets, max, show_station, current_date, target, godirect. Target is the results element ID; godirect is the result-link destination URL. Max applies to signet results. Signets require backend configuration. Without signets, URL station_id/stop_station_id can preselect stations; URL linien_ids precedes its attribute. Shortcode linie_typ_id precedes URL category_id. No shortcode start-date attribute is implemented here.
calendar
Backend route calendar. Requires linie_id or linie_typ_id.
[travelmanager call="calendar" linie_id="146" station_id="2" start="next month"]
Optional: station_id, start (default this month), newwindow. Dates and booking links come from the backend.
eventcalendar
Event calendar with optional filters. Supply a valid linie_typ_id from your account and the desired station_id. The current backend requires a route type; a station alone can return HTTP 400 (missing route type). The example uses the sandbox IDs 23 and 1: replace them with your own account IDs. Existing plugin validation still accepts either attribute for compatibility with older backends.
[travelmanager call="eventcalendar" linie_typ_id="23" station_id="1" show_station="true" show_category="true"]
Optional: start, show_station, show_category, target, newwindow. Selectors require true; the category selector does not replace the initial linie_typ_id. target="internal" selects internal links. The page query ?godirect=true controls direct navigation. URL station_id/linie_typ_id can override filters. The DE/EN fallback described above applies in opt-in language mode.
eventinfo
Event details, availability and embedded ticket configuration. Requires product_id or a supported relation URL. Include basket on the same page:
[travelmanager call="basket"]
[travelmanager call="eventinfo" product_id="YOUR_RELATION_KEY" view="list" max="10"]
Optional: view, max. view="list" shows departures for one-way products when dated details exist and the number of available days is within max (default 10); otherwise a calendar appears. Route configuration determines return-trip options. The external service supplies ticket configuration and checkout.
eventcard
Compact event preview with image, teaser, location, optional duration and scheduled departures. Requires product_id as a relation key.
[travelmanager call="eventcard" product_id="YOUR_RELATION_KEY" max="3" newwindow="true"]
Optional: max (default 3, capped at 50), newwindow. Links directly to the account’s shop with language/referral context. Referral precedence: URL ref, shortcode vermittler_id, session referral. No prices, reservation or basket insertion. Scheduled dates do not guarantee remaining seats.
basket
Current session’s basket indicator and hosted basket link.
[travelmanager call="basket"]
Optional: target="blank" for the count link. Empty baskets have no count. Existing callbacks/session identifiers remain in use. Exclude session-dependent booking/basket pages from shared full-page caches.
shop
Catalog, vouchers and product details.
[travelmanager call="shop" category_id="7"]
Optional: category_id, view, target. Empty category uses the backend catalog. ?item=ID selects details and purchase controls; submitting continues to the hosted basket with the session reference. view="netto" selects net-price presentation. Page query ?view=csv exports the catalog feed; target supplies its link host. It is not a general shortcode CSV mode.
artikel
Single product details, images, amount and hosted shop link. Requires catalog product_id.
[travelmanager call="artikel" product_id="591"]
No additional functional attributes. For the catalog purchase form, use shop with its item URL.
contingent
Dated ticket quotas and booking links. Requires product_id and configured backend quota data.
[travelmanager call="contingent" product_id="YOUR_RELATION_KEY" start="today" stop="3 months" max="10"]
Optional: start, stop, max, view. Values use this endpoint’s existing pass-through behavior, not timetable defaults. view="calendar" is retained; its legacy month-navigation handler needs backend-specific validation. Prefer the standard list for a new integration until verified.
listcategories
AJAX category/month departure search. Requires station_id.
[travelmanager call="listcategories" station_id="2" linie_typ_id="1"]
Optional: linie_typ_id. Categories are provided by the backend.
V2 displays alternating departure rows with right-aligned arrow actions. The original booking/details action remains available to screen readers and as a tooltip. Month names follow the instance language. Navigation below the list shows the destination month and selects it in the same month filter.
list
Date/category search with AJAX results.
[travelmanager call="list" station_id="2"]
Optional: station_id. URL start (DD.MM.YYYY) initializes the date; otherwise today. URL linientyp_id preselects the category. These are query parameters, not equivalent shortcode filters.
find
Existing tabbed category/route search.
[travelmanager call="find"]
No additional functional attributes. URL linientyp_id can preselect a category. For departure/destination/date search, use fahrtfinder2.
sitemap
Route index and generated tm-sitemap.xml in WordPress uploads.
[travelmanager call="sitemap" linie_typ_id="1"]
Optional: linie_typ_id (comma-separated IDs). Requires writable uploads. Verify generated relation links against your permalink structure. The historical linien_ids branch is inconsistent and is not a reliable filter.
alert
Account-provided service notice; empty if none exists.
[travelmanager call="alert"]
Optional: view="none" suppresses notice text.
chatbot
Account-hosted travel assistant; requires that service.
[travelmanager call="chatbot" view="button" title="Plan your visit"]
Optional: view="flat" embeds the assistant directly in the page; omitted view and existing button/link values keep the hosted launcher. title sets the launcher text or the flat-view heading. Custom title translations belong to the page author.
[travelmanager call="chatbot" view="flat" title="Plan your visit"]
Flat view reuses the account-hosted chat client in a separate frame for each instance. V2 colors and the page font …
