検索機能が使えるようになりました

2016年3月26日WordPress

実はつい最近まで、このブログで検索機能が使えませんでした。例えば、"netatalk"を検索すると、たくさんの記事が引っかかります。その時、より前の記事に移るリンクが次の様になってしまっていました。

http://oichinote.com/plus/plus/page/2?s=netatalk&searchsubmit=Search

“plus"の部分が2回出てきます。その為、404エラーになります。WordPressその物のバグかとも思ったのですが、WordPress標準のthemeの、"Twenty Eleven"だと正常に検索できるのです。

そうなると、今私が使っているthemeの"Orange and Black"が怪しいと言う事になります。この原因を突き止めるのに、2ヶ月以上もかかってしまいました。

“Orange and Black"中のsearch.phpでは、次のページへのリンクは、"next_posts_link()"で呼んでいます。この関数は、"wp-includes/link-template.php"の中にあります。そこから順にたどって行くと、次の様になりました。

“next_posts_link()"→"get_next_posts_link()"→"next_posts()"→"get_next_posts_page_link→"get_pagenum_link()"

この"get_pagenum_link()"にデバッグポイントを入れ、"Twenty Eleven"と"Orange and Black"の挙動の違いを調べました。そしてわかったのが、"/"の有無。

検索する時、検索フォームの"searchform.php"が呼ばれます。これについて、"Twenty Eleven"と"Orange and Black"をよぉ〜く比較すると…。ありました! form中のactionの記述が違う!

ここを修正した所、無事検索できる様になりました。ふぅ〜。

--- orange-and-black.org/searchform.php    2012-03-19 01:15:48.000000000 +0900
+++ orange-and-black/searchform.php    2012-06-16 10:15:00.000000000 +0900
@@ -1,5 +1,5 @@
-<form method="get" action="<?php echo home_url(); ?>">
+<form method="get" action="<?php echo esc_url( home_url( '/' ) ); ?>">
 <fieldset>
         <input type="text" value="<?php the_search_query(); ?>" name="s" /><button type="submit" name="searchsubmit" value="<?php _e('Search', 'orange_and_black') ?>"></button>
 </fieldset>

なお、作者に連絡してありますが、まだ返事はありません。

アクセスログを見ると、それなりの方が検索を使われていたんですよ。申し訳なし。

Posted by お市のかた