サポート » 使い方全般 » 検索フォームが機能しない

  • 以下の検索フォームを設置しています。

    <form role="search" method="get" id="searchform" action="<?php echo $search_action; ?>">
    <label for="search"> </label>
    	<ul>
            <li><input type="text" value="" name="s" id="s" /></li>
    		<li><input type="image" src="<?php bloginfo('template_directory'); ?>/images/search01-06.png" id="submit" value="検索" /></li>
    	</ul>
    </form>

    「test」という文字を入力し検索ボタンをクリックすると、
    URLには、http://XXXXXXXX/blog/?s=test&x=6&y=7
    と検索文字列が表示されますが、検索はされず記事一覧が表示されてしまいます。

    怪しいかな、と思っているのは、
    ワードプレスをインストールした場所は、
    http://XXXXXXXX/
    ですが、
    ブログに関しては、パーマリンク設定で、
    /blog/%postname%/
    としています。

    対応策はないでしょうか?
    有識者の方々、どうかお力をお貸し下さい。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • $search_actionの中身は何が入っているのでしょうか?
    特に特別なことをしていないならactionの中身は
    <?php echo home_url( ‘/’ ); ?>
    に変更してみてください。

    トピック投稿者 junco08131013

    (@junco08131013)

    gogoweb さま

    ご返事ありがとうございます。
    検索フォームの内容は、ネットにのっていたものを貼り付けて使用しましたので、
    特に意味はありませんでした。

    教えて頂いた
    <?php echo home_url( ‘/’ ); ?>
    に変更してみましたが、現象は変わりませんでした。

    実は、ページングなどで悩んだ時に、
    loop.phpに、

    <?php if (!is_archive()) {
    	$paged = get_query_var('page');
    	query_posts('posts_per_page=3&paged='.$paged);
    }
     ?>

    を仕込んだのですが、これが原因でしょうか?

    <?php echo home_url(‘/’); ?>を何処か他の適当な場所に貼り付けてみた場合
    その場所にホームページのアドレスがちゃんと表示されますか?
    home_urlはそのWordpressのホームURLを返す関数なのでxxx/blogと表示されているのならホームの設定がおかしい可能性もあります。

    トピック投稿者 junco08131013

    (@junco08131013)

    gogoweb さま

    loop.phpに、
    <?php echo home_url(‘/’); ?>をはりつけましたら、

    http://XXXXXXXX/ と、
    ホームのURLを表示しました。

    ちなみに、一般設定で、
    ワードプレスアドレス:http://XXXXXXXXXX/wp
    サイトアドレス:http://XXXXXXXXXX/

    としています。

    form action の場所を実際に表示したソースから見た場合
    ホームのURLが表示されていますか?

    無いと思いますがformタグのその側に更にformタグがあって入れ子になっていませんか?

    トピック投稿者 junco08131013

    (@junco08131013)

    gogoweb さま

    実際の画面のソースを表示しましたが、
    <form role="search" method="get" id="searchform" action="http://XXXXXXXXXX/">
    となっていました。

    すみません、私の説明不足でしたが、
    actionを<?php echo home_url( ‘/’ ); ?>にしましたら、
    検索URLは、
    http://XXXXXXXX/?s=test&x=6&y=7
    となりましたが、検索機能は動いていませんでした。

    1.テーマの中にsearch.phpは存在しますか?
    2.search.phpが存在する場合ちゃんとsearch.phpの内容が表示されていますか?
    3.search.phpの内容が表示された上で検索結果がないと表示されるのでしょうか?

    1のsearch.phpが存在しない場合search.phpを作成してそこに検索結果を表示する処理を記述してください。
    2.のsearch.phpが存在するのに内容が読み込まれない場合はsearch.phpではなくindex.phpが読み込まれている可能性があります。原因としてはsearch.phpを読み込む処理周りあたりに何か不具合があります。
    3の検索結果が0件になる場合は検索条件に不具合がある可能性があります。

    トピック投稿者 junco08131013

    (@junco08131013)

    gogoweb さま

    ご連絡が遅くなりまして、申し訳ございません。

    1.テーマは自作で、「searchform.php」という形で存在します。
    2.以下、searchform.php の内容です。

    <form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
    <label for="search"> </label>
    	<ul>
            <li><input type="text" value="" name="s" id="s" /></li>
    		<li><input type="image" src="<?php bloginfo('template_directory'); ?>/images/search01-06.png" id="submit" value="検索" /></li>
    	</ul>
    </form>

    上記をサイドバーで、

    <div class="sss"><?php get_search_form(); ?></div>

    としてよんでいます。

    実際のサイドバーのソースが以下です。

    <div class="sss"><form role="search" method="get" id="searchform" action="http://XXXXXXXXXX/">
    <label for="search"> </label>
    	<ul>
            <li><input type="text" value="" name="s" id="s" /></li>
    		<li><input type="image" src="http://XXXXXXXXXX/wp/wp-content/themes/XXXXX_wp/images/search01-06.png" id="submit" value="検索" /></li>
    	</ul>
    </form></div>

    3.というわけで、ソースは読み込まれていると思われるのですが、
    コード自体がおかしいでしょうか?

    お時間ありましたら、お知恵をお貸し下さい。
    どうぞよろしくお願い致します。

    searchform.php ではなくて、search.php だと思うのですが… それはさておき、

    現在の状態は、

    「test」という文字を入力し検索ボタンをクリックすると

    http://XXXXXXXX/?s=test&x=6&y=7

    というスラッグになり、

    検索はされず記事一覧が表示されてしまいます

    ということですよね。

    何か特別なプラグインを使っていますか? あるいは、デフォルトとは違う特別なテーマを使っていますか? プラグインを全て無効化し、テーマ、パーマリンク、rewrite_rule をデフォルトに戻しても同じ結果になりますか? あるいは、ブラウザのアドレスバーに、

    http://example.com/?s=test

    と、じかに打ち込んでリターンするとどうでしょう(画像の座標は関係ないので必要ありません)? あるいは、index.php に、

    echo 'is_search => ' . ($wp_query->is_search() ? 'true' : 'false');

    を書き込むとどんな表示になるでしょう(search.php が使われているなら、true が返るので、必要ありません)? あるいは、

    echo $wp_query->request;

    を書き込むと、どんなものが表示されるでしょうか?

    これらで、解決できるという保証はまったくありませんが、少なくとも、判断するための材料を増やすことができます。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「検索フォームが機能しない」には新たに返信することはできません。