通常、Welcart Basicでキーワード検索をすると、登録商品のみが対象となっています。これは簡単に全てのページを対象とすることができます。
目次
Welcartのキーワード検索
『生まれ年ワインショップ』である程度、商品をアップし、Welcart Basicでキーワード検索をすると、何もひっかかりません??試しに、「ワイン」と検索しても「該当する項目は見つかりませんでした。」と出て引っかからない・・・何故だ!?と思い、フォーラムで質問をしました。私の質問は次の通りです。
Welcart Basicをテーマにし、子テーマを作成してサイトを作成しています。ふと、キーワード検索をすると、どんなキーワードでも検索結果が「該当する項目は見つかりませんでした。」となりました。
子テーマでなく、親テーマをテーマにして、試してみてもダメだったのですが、Welcart Defaultテーマや他のテーマにすると、検索結果が正常に得られました。
そこで、プラグインを1つずつ停止して試してみたのですがダメで、一度、Welcart Basicを削除して、改めて最新盤のバージョン: 1.2.2にしてみたのですが、結果は変わらず・・・
システム設定の表示モードの部分にはチェックは入れていません。
同様の方はいらっしゃらないようなのですが、これは何か設定が必要なのでしょうか?
これに対して、ご親切にフォーラムさんが対応して下さいました。
ご報告いただいた内容ですと、「投稿記事」「固定ページ」などが検索結果に表示されないということでしょうか?
Welcart Basicでは、検索対象を「商品(スラッグ名:item)」に絞り込んでいます。
検索対象を広げたい場合は、Welcart Basicのよくあるお問い合わせに対処方法を記載していますので、そちらを参照してください。
うーん、商品も表示されないのだけどと思ったその瞬間、「商品(スラッグ名:item)」・・・あっ!そういえば、商品名のスラッグ名を変更していたのでした。原因が分かり、対処方法も教えて頂いたので、早速カスタマイズしたいと思います。
具体的なカスタマイズ方法
上記リンクのよくあるお問い合わせを参考に、子テーマのfunctions.phpに次を記載して、検索対象を限定しないようにしました。
/*検索ページでitem以外を除外をストップ*/
add_action( 'after_setup_theme', 'my_remove_search' );
function my_remove_search() {
remove_action( 'pre_get_posts', 'welcart_basic_query' );
}
/*検索ページでitem以外を除外をストップ(終了)*/
これで、ひとまずはキーワード検索で記事や固定ページも対象にすることができます。
さらに、
また、子テーマに「search.php」を設置して適宜修正する必要があります。
ループ内で、商品かどうかを判定する条件分岐タグ「usces_is_item()」を利用して表示わけを行ってください。
と「よくあるお問合せ」にあるように、子テーマに「search.php」を作成し、記載のあった2,6,10行目を挿入しました。
https://www.welcart.com/docs/themes/welcart_basic/faq.html 参照
記事部分のカスタマイズ方法
searc.phpの追加したコードで、上で6行目とかいた部分のあとは、welcart Defaultのserch.phpを参考にして、記事部分を表示させました(ページ下部にて、全てのコードを記載しています)
さて、実際に検索してみると、商品だけがひっかかった場合のデザインは問題ないのですが、記事ページや固定ページがひっかかると、それらの全文が表示され、読みにくいです。
なので、the_contents() をthe_excerpt() にしてみました(これも後ほど、ページ下部のコードでご確認ください)。こうすることによって、ページタイトルと最初の文章が表示されます。よくブログである「つづきを読む」みたいなアレです。Welcartの場合は[…]と表示されます。変更できるでしょうが、これはこのままにしています。あとは、タイトルをクリックしないと全文が読めないのが分かりにくいかなと思ったので、その注意書きを記載します。
すると、こんな感じ(↑)になります。
これでOKかな。とも思いましたが、記事ページは商品のように4カラム(4段組み)になると、ちょっと美しくない気がします^^;なので、記事部分の<article>をスタイルシートで調整します。width:100%で指定して、横幅一杯に文章が出るようにしました。
すると、今度は検索結果が多い時に、どこからどこまでが1つの記事か分からない!なので、ドット線で区切りが出るようにし、その線の下の予約も少し広くするように、スタイルシートの指定を追加しました。
こんな感じで完成です。それでは、最後に記事部分の実際のコードを載せておきます。これを記事部分、つまり、welcartの良くある質問のところの「~ 商品以外の投稿・固定ページ ~」と書いてある部分に入れるわけです。
<!--変更部分--><?php else: ?>
<!--変更部分--> <article style="width:100%; border-bottom: 3px dotted #4682B4; margin-bottom: 50px" <?php
post_class(); ?>>
<!--変更部分-->
<!--変更部分--> <div <?php post_class(); ?>>
<!--変更部分--> <h2 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" style="text-decoration:underline"><?php the_title(); ?></a></h2>
<!--変更部分--> <div class="entry clearfix" style="margin-left:10px">
<!--変更部分--> <?php the_excerpt() ?>
<!--変更部分--> </div>
<!--変更部分--> <p style="margin-left:10px;font-size:70%">タイトルをクリックで記事のつづきが読めます</p>
<!--変更部分-->
<!--変更部分--><?php endif; ?>
ちなみに、今回の記事で<pre><code>タグを知り、特殊文字を自動変換してくれるサイトも知りました。HTMLエスケープとアンエスケープ
お願い
検索でここにたどり着いた方は、自営業者さんでWelcartを導入しようと思っている方だと思います。役に立った方は、ビジネスでの贈り物に当店「生まれ年ワインショップ」もしくは、日本初のプレゼント専門ワインショップ「プレゼントワインショップ」をご利用いただけると嬉しいですm(__)m