【WordPress】WP Booking SystemのSerch Widgetの設定方法|日付検索とカレンダーの連携とレイアウト調整と日本語化

wordpress-prograshi(プロぐらし)-kv WordPress
記事内に広告が含まれていることがあります。

WP Booking Systemでは、基本のカレンダーを埋め込む以外に日付検索をして対象の部屋(カレンダー)を表示させることができます。


Search Widgetのデモページ

ここではSearch Widgetの使い方や日本語化の方法を解説しています。


「Search」アドオンのインストール

日付検索を使用するには有料版にして、「Search」アドオンをインストールする必要があります。

管理画面に入って「WP Booking System > Add-ons」に進みます。


「Search」があるので「Install」をクリックします。


これで使用する準備は完了です。


ページの準備

検索結果として画像やリンク先を表示させるためには、カレンダーとリンク先ページをリンクさせる必要があります。

そのため、まずは各部屋ごとの専用の予約ページを作成します。

検索結果で表示される画像はリンクさせたページのアイキャッチ画像が自動で適用されるため、必ずアイキャッチ画像を設定します。


カレンダーとリンクさせる

続いて、作成したページとカレンダーをリンクします。

管理画面で「WP Booking System > Calendars」をクリックします。


対象のカレンダーをクリックします。

下の方に「Link Calendar」という項目があります。Select Internal Linkのプルダウンから先ほど作成したページを選択します。


「Save Calendar」をクリックして保存します。


Search Widgetの埋め込み

準備ができたらSearch Widgetを埋め込みます。

「WP Booking System Search Widget 」のブロックを選択してページの中に埋め込みます。


設定画面で、検索結果に表示するカレンダーを選択することができます。ここではすべてのカレンダーを対象とします。


Widget Optionsでその他の細かい設定を指定することができます。

オプション内容
Week Start DayAll Calendarsまたは1,2,3検索するカレンダー。すべてのカレンダー、またはコンマで区切られたカレンダー ID のリストを指定できます。
LanguageAutoまたはlanguage code検索ウィジェットを表示する言語。autoプラグインを使用すると、Web サイトの言語を自動的に検出できます。
Week Start DayMonday to Sunday週の開始曜日。
Widget TitleYes/No検索ウィジェットのタイトルをウィジェットの上の見出しとして表示します
Automatically Mark SelectionYes/No検索結果をクリックすると、カレンダーがあるページが開き、カレンダー内の日付が自動的に選択されます。カレンダーがページにリンクされている場合にのみ機能します。
Selection TypeDate Range/Single Day日付選択タイプ。「1 日」を選択した場合、ウィジェットには日付ピッカーが 1 つだけ表示されます。
Minimum Staynumber日付ピッカーで選択できる最小日数。
Show Featured ImageYes/Noカレンダーにリンクされた投稿またはページの注目画像を表示します。
Show Starting PriceYes/No検索結果に基本カレンダー価格を表示します。
Show results on loadYes/Noデフォルトの状態(日付検索していない状態)で検索フォームの下にすべてのカレンダーを表示するかどうかです。
Results LayoutList/Grid検索結果のレイアウト。結果が上下に表示されるリスト、または行ごとに複数のボックスとして表示されるグリッドになります。
Results per pagenumberページごとに表示される結果の数。
Redirecturlデフォルトでは、結果は検索ウィジェットの下に読み込まれます。「検索」ボタンをクリックした後にリダイレクトするページへのリンクを入力できます。このページにも検索ウィジェットが埋め込まれている必要があり、「リダイレクト」オプションは空である必要があります。
https://www.wpbookingsystem.com/documentation/search-widget/



ここまでの設定が終わると、ページに以下のように結果が表示されます。


日付検索したときに、対象の部屋(カレンダー)がない場合は検索結果から非表示になります。



日本語化

デフォルトでは英語のままになっているので、日本語に翻訳します。

管理画面で「WP Booking System > Settings」に進みます。


上部の「Strings & Translations」タブを選択して「Search Widget Strings」を選択します。


英語に対して対応する日本語を手動で入力していきます。


下部の「Save Settings」をクリックして保存します。


以上で日本語化は完了です。



レイアウトをカスタマイズする

Search Widgetはページとカレンダーをリンクさせることで、アイキャッチ画像やリンクを表示させることができます。

レイアウトはデフォルトのものが適用されます。

functions.phpを使うとこれを自由にカスタマイズすることができます。

<?php 
/**
 * 
 * Customize the search results for the WP Booking System Search Add-on
 * 
 * @param string $output
 * @param array $data - contains some basic information used to display the search results
 *              $data['calendar_name'] (string) - The name of the calendar
 *              $data['link'] (string) - The link set in the calendar page. Can be empty, the permalink to a page/post or an external link
 *              $data['post_id] (int) - The post id if the calendar link is set to Internal Link
 *              $data['button_label'] (string) - The label for the view button
 *              $data['price'] (array) - An array containing the total price and the price per night for the current date selection
 * 
 * @return string
 * 
 */
add_filter('wpbs_search_resuts_html', function($output, $data){

    // Build your custom HTML here

    return $output;
}, 10, 2);

Search Add-on: Customize search results layout


カスタマイズの一例としては、例えば以下のような形で記述します。

//予約検索ウィジェットのレイアウト設定
add_filter('wpbs_search_resuts_html', function($output, $data){
	

	// $data['calendar_name']が"オープンサイト"の場合
	if ($data['calendar_name'] === 'オープンサイト') {
		$image_url = "https://www.wpbookingsystem.com/wp-content/uploads/2022/02/mountain-cottage.jpg"; // 画像のパス
		$text = 'こちらはオープンサイトです。';
		$link = site_url('/reservation');

		// カスタムHTMLを生成
		$custom_html = '<div>';
		$custom_html .= '<img src="' . esc_url($image_url) . '" alt="オープンサイト画像">';
		$custom_html .= '<p>' . esc_html($text) . '</p>';
		$custom_html .= '<a href="' . esc_url($link) . '" class="btn btn-primary">予約する</a>';
		$custom_html .= '</div>';

		// 元の出力にカスタムHTMLを追加
		$output .= $custom_html;
	}

	return $output;
}, 10, 2);


タイトルとURLをコピーしました