いつもお世話になっています。
Wordpressの記事をカスタムフィールドで絞り込む機能をつけたいと思っています。
こちらでご教示頂きながら、
php
1<?php 2 $args = array( 3 'meta_query' => array( 4 'relation' => 'AND', 5 array( 6 'key' => 'Wall', 7 'value' => $_GET["WallMin"], 8 'compare' => '>=', 9 'type' => 'NUMERIC', 10 ), 11 array( 12 'key' => 'Wall', 13 'value' => $_GET["WallMax"], 14 'compare' => '<=', 15 'type' => 'NUMERIC', 16 ), 17 18 array( 19 'key' => 'BT', 20 'value' => $_GET["BTMin"], 21 'compare' => '>=', 22 'type' => 'NUMERIC', 23 ), 24 array( 25 'key' => 'BT', 26 'value' => $_GET["BTMax"], 27 'compare' => '<=', 28 'type' => 'NUMERIC', 29 ), 30 array( 31 'key' => 'KT', 32 'value' => $_GET["KTMin"], 33 'compare' => '>=', 34 'type' => 'NUMERIC', 35 ), 36 array( 37 'key' => 'KT', 38 'value' => $_GET["KTMax"], 39 'compare' => '<=', 40 'type' => 'NUMERIC', 41 ), 42 43 ), 44); 45 46$my_query = new WP_Query($args); 47if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); 48?> 49 50<?php the_title(); ?><?php the_post_thumbnail(); ?><?php the_excerpt(); ?> 51 52<?php endwhile; endif; wp_reset_postdata(); ?>
という検索だとすぐに結果が出てくるようになったのですが、
php
1<?php 2 $args = array( 3 'meta_query' => array( 4 'relation' => 'AND', 5 array( 6 'key' => 'Year', 7 'value' => $_GET["YearMin"], 8 'compare' => '>=', 9 'type' => 'NUMERIC', 10 ), 11 array( 12 'key' => 'Year', 13 'value' => $_GET["YearMax"], 14 'compare' => '<=', 15 'type' => 'NUMERIC', 16 ), 17 array( 18 'key' => 'Wall', 19 'value' => $_GET["WallMin"], 20 'compare' => '>=', 21 'type' => 'NUMERIC', 22 ), 23 array( 24 'key' => 'Wall', 25 'value' => $_GET["WallMax"], 26 'compare' => '<=', 27 'type' => 'NUMERIC', 28 ), 29 30 array( 31 'key' => 'BT', 32 'value' => $_GET["BTMin"], 33 'compare' => '>=', 34 'type' => 'NUMERIC', 35 ), 36 array( 37 'key' => 'BT', 38 'value' => $_GET["BTMax"], 39 'compare' => '<=', 40 'type' => 'NUMERIC', 41 ), 42 array( 43 'key' => 'KT', 44 'value' => $_GET["KTMin"], 45 'compare' => '>=', 46 'type' => 'NUMERIC', 47 ), 48 array( 49 'key' => 'KT', 50 'value' => $_GET["KTMax"], 51 'compare' => '<=', 52 'type' => 'NUMERIC', 53 ), 54 55 ), 56); 57 58$my_query = new WP_Query($args); 59if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); 60?> 61 62<?php the_title(); ?><?php the_post_thumbnail(); ?><?php the_excerpt(); ?> 63 64<?php endwhile; endif; wp_reset_postdata(); ?>
のように
php
1array( 2 'key' => 'Year', 3 'value' => $_GET["YearMin"], 4 'compare' => '>=', 5 'type' => 'NUMERIC', 6 ), 7 array( 8 'key' => 'Year', 9 'value' => $_GET["YearMax"], 10 'compare' => '<=', 11 'type' => 'NUMERIC', 12),
を追加すると検索結果が表れるまで10秒程度かかってしまいます。
まだテスト段階で記事も2~3個の状況なのになぜこれを追加すると極端に時間が掛かるようになるのかわからず困っています。
カスタムフィールドの設定は「Advanced Custom Fields」というプラグインを利用しており、いずれのカスタムフィールドもタイプを数値にしてます。ラベル、名前、最小値、最大値が違うだけで、その他の設定は初期のままです。
php
1array( 2 'key' => 'Year', 3 'value' => $_GET["YearMin"], 4 'compare' => '>=', 5 'type' => 'NUMERIC', 6 ), 7 array( 8 'key' => 'Year', 9 'value' => $_GET["YearMax"], 10 'compare' => '<=', 11 'type' => 'NUMERIC', 12),
がない状態で
php
1echo $_GET["YearMin"];
を表示させて見ても表示に時間が掛かることはありません。
KazuhiroHatano様からご教示頂きましたQuery Monitorの計測結果は
Yearを追加してもしなくても
64Q遅いクエリー2重複クエリー4
PHPエラー(10notice,675deprected)
でした。
確認すべき場所、改善点、疑わしい点などご教示お願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/20 05:59
2022/05/20 06:15
2022/05/20 06:27
2022/05/20 07:04
2022/05/21 00:03
2022/05/21 05:10