質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

3回答

2600閲覧

キーワード検索で新しく作ったページに検索結果を表示しようとすると、お探しのページが見つかりません。と出る。

destrudo

総合スコア143

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/06/01 08:38

編集2017/06/01 12:20

キーワード検索結果を自分の作った任意のページで表示したく、search.php,searchform.phpのコードをコピーして同様のコードになったはずなのですが、検索結果が一件以上出てくるキーワードを入れたはずにもかかわらず、
「こちらには何もありません。検索をお試しください。」と表示されてしまいます。何故なのでしょうか。

//フォームを入力するページ(form action先は、my-search.php) <?php $unique_id = esc_attr( uniqid( 'search-form-' ) ); ?> <form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/my-search' ) ); ?>"> <label for="<?php echo $unique_id; ?>"> <span class="screen-reader-text"><?php echo _x( 'Search for:', 'label', 'twentyseventeen' ); ?></span> </label> <input type="search" id="<?php echo $unique_id; ?>" class="search-field" placeholder="<?php echo esc_attr_x( 'Search &hellip;', 'placeholder', 'twentyseventeen' ); ?>" value="<?php echo get_search_query(); ?>" name="s" /> <button type="submit" class="search-submit"><?php echo twentyseventeen_get_svg( array( 'icon' => 'search' ) ); ?><span class="screen-reader-text"><?php echo _x( 'Search', 'submit button', 'twentyseventeen' ); ?></span></button> </form>
//my-search.php(search.phpと同じコード) <?php /** * The template for displaying search results pages * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#search-result * * @package WordPress * @subpackage Twenty_Seventeen * @since 1.0 * @version 1.0 */ get_header(); ?> <div class="wrap"> <header class="page-header"> <?php if ( have_posts() ) : ?> <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentyseventeen' ), '<span>' . get_search_query() . '</span>' ); ?></h1> <?php else : ?> <h1 class="page-title"><?php _e( 'Nothing Found', 'twentyseventeen' ); ?></h1> <?php endif; ?> </header><!-- .page-header --> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if ( have_posts() ) : /* Start the Loop */ while ( have_posts() ) : the_post(); /** * Run the loop for the search to output the results. * If you want to overload this in a child theme then include a file * called content-search.php and that will be used instead. */ get_template_part( 'template-parts/post/content', 'excerpt' ); endwhile; // End of the loop. the_posts_pagination( array( 'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>', ) ); else : ?> <p><?php _e( 'Sorry, but nothing matched your search terms. Please try again with some different keywords.', 'twentyseventeen' ); ?></p> <?php get_search_form(); endif; ?> </main><!-- #main --> </div><!-- #primary --> </div><!-- .wrap --> <?php get_footer();

my-search.phpはテンプレートで固定ページにしました。(テンプレートにするのは忘れていました。)スラッグは分かりやすくするために、my-searchにしました。これでも同じですが記事が表示されないです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rok6

2017/06/01 09:22

テンプレートページではなく、独自のファイル名でやりたい様ですので、可能であればその辺りの理由など頂ければと思います。search.php 以外に実装するという意味でも、他テンプレートで表示するのか独自テンプレートを実装するのかでは大分難易度が違います。
destrudo

2017/06/01 12:13

単に検索結果を表示するだけでなく、自分が作った、年月やタクソノミーで記事の条件を指定する機能を追加したいからです。つまり、キーワードで検索してそのキーワードで検索された記事を条件として、さらにその記事の中からセレクトボックスで月の指定をしたりしたいからです。
destrudo

2017/06/01 13:58

検索結果が一つのページだけで表示ならばわざわざ新しいファイルは必要ないですが、複数のページに検索結果を表示する必要があるので、どうしても規定テンプレートだけでは解決できないということです。先ほどの追記です。
guest

回答3

0

ベストアンサー

無理やりですが

PHP

1// 固定ページ [スラッグ:search] に表示する場合 2 3// 検索フォーム 4<form role="search" method="get" class="search-form" action="<?=esc_url( home_url('/search/') )?>"> 5 <input class="search-field" type="search" name="s_key" /> // s 以外の使用できる name 6 <button type="submit" class="button search-submit"><span>検索</span></button> 7 <input type="hidden" name="pagename" value="search" /> // value はページスラッグ 8</form> 9 10// 検索結果表示ページ 11$keyword = $_GET['s_key']; 12$search = new WP_Query(['s' => $keyword]); 13 14var_dump($search); 15

このままですとセキュリティ的に脆弱ですが
一応固定ページでキーワード検索結果を取得できます。

投稿2017/06/01 13:05

rok6

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

destrudo

2017/06/01 14:42

ありがとうございます。参考になりました。セキュリティ的に脆弱というのはどういうことを想定しているのでしょうか?
guest

0

my-search.phpを開いたときにメインクエリが存在しない状態(表示する記事が設定されていない状態)なのでしょう。

my-search.phpではなく、規定のテンプレートファイルsearch.phpを使用した方がいいと思います。

また、Wordpressの仕組みを理解するために以下のようなドキュメントを参照されることをおすすめします。

https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E9%9A%8E%E5%B1%A4

投稿2017/06/01 12:40

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

my-searchというスラッグで表示できるページが無ければ「表示できない」と出ます。my_search.phpをどこに置いているか知りませんが、my-searchというスラッグがきたときにそのphpファイルをテンプレートに使うように記述する必要があり、それなりに難しいです。

投稿2017/06/01 09:07

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問