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

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

ただいまの
回答率

87.49%

[WordPress] サイト内検索で一覧に出てくる記事の出方を変えたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,287

score 186

 検索時のクエリ

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts 
WHERE 1=1 
AND ( wp_posts.ID NOT IN ( 
SELECT object_id 
FROM wp_term_relationships 
WHERE term_taxonomy_id IN (233,234,1578,9875,9876,16573,16574) ) )
AND (((wp_posts.post_title LIKE '%ペット%')
OR (wp_posts.post_excerpt LIKE '%ペット%')
OR (wp_posts.post_content LIKE '%ペット%'))) 
AND wp_posts.post_type IN ('post', 'page', 'attachment')
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_author = 25
AND wp_posts.post_status = 'private')
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_title LIKE '%ペット%' DESC, wp_posts.post_date DESC
LIMIT 0, 20

%ペット% => 'ペット' に変更したいです。

 環境

  • WordPress : 4.8.3
  • PHP : 5.6.20
  • Theme : Travelify

 やりたいこと

  • 検索結果で表示される記事一覧を変えたい
  • つまり、検索した結果、取得される記事一覧の情報を変えたい
  • 例えば、現状だと、「ペット」で検索すると、「っと」や「ペッ」で始まる単語を含んでいる記事も、必要ないのに取得され、記事一覧に表示される
  • 検索クエリーを修正したいが、Travelifyの構造が分かりにくいため、分からなかった。
  • 検索クエリーを修正する方法を教えて欲しいです。
# search.php
<?php
/**
 * Displays the search results of the theme.
 *
 */
?>

<?php get_header(); ?>

<?php
    /**
     * travelify_before_main_container hook
     */
    do_action( 'travelify_before_main_container' );
?>

<div id="container" class="clearfix">
    <?php
        /**
         * travelify_main_container hook
         *
         * HOOKED_FUNCTION_NAME PRIORITY
         *
         * travelify_content 10
         */
        do_action( 'travelify_main_container' );
    ?>
</div><!-- #container -->

<?php
    /**
     * travelify_after_main_container hook
     */
    do_action( 'travelify_after_main_container' );
?>

<?php get_footer(); ?>
<?php
/**
 * Displays the searchform of the theme.
 */
?>
    <form action="<?php echo esc_url( home_url( '/' ) ); ?>" class="searchform clearfix" method="get" role="search">
        <label class="assistive-text" for="s"><?php _e( 'Search', 'travelify' ); ?></label>
        <input type="text" placeholder="<?php esc_attr_e( '気になるキーワードを入力', 'travelify' ); ?>" class="s field" name="s">
        <input type="submit" value="&#xe905;" />
    </form>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

テーマはこれでしょうか?
https://ja.wordpress.org/themes/travelify/

例えば、現状だと、「ペット」で検索すると、「っと」や「ペッ」で始まる単語を含んでいる記事も、必要ないのに取得され、記事一覧に表示される

そのテーマのデフォルトの状態だとそうはならないようです。
他のテーマでもそうはならないようです。
テーマのカスタマイズした部分か、何らかのプラグインが原因だと思います。
一度試しに手を加えていないテーマで試してみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/17 16:44

    parse_search_order

    この関数が基本的なSQLを作っていそうです。

    キャンセル

  • 2017/11/17 17:07

    検索結果を出力するのはtravelify_theloop_for_search()という関数のようですが、検索結果を変にしてしまうカスタマイズした内容から問題を見つけて改善するのが最善だと思いますが。

    キャンセル

  • 2017/11/17 17:08

    ありがとうございます!

    キャンセル

check解決した方法

0

 照合順序を変える必要があるそうです。

utf8mb4_unicode_ciからutf8mb4_general_ciに変更すると直りそうです。

参考URL : https://www.slideshare.net/tmtm/mysql-62004569

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る