web-dev-qa-db-ja.com

WordPressのダッシュボード、CPTの結果を504で表示

カスタム分類法を使用してカスタム投稿タイプを作成しました。私は約1500の投稿を持っています。それらのすべてはある種の分類学用語に割り当てられています...いくつかは200以上の用語に割り当てられています。

ダッシュボードから、カスタム投稿タイプを表示するには非常に長い時間がかかることに気付きました。ほとんどの場合、504のゲートウェイタイムアウトが発生します。

フロントエンドからこれらの投稿を照会するのは問題ありません。私は問題ありません。

私が理解しているのは、ダッシュボードがこれらのカスタム投稿タイプを表示しようとしているとき、すべての投稿が表示される前に、各投稿に割り当てられているすべての情報を取得しようとしているということです。

私が調べていたように、私はこのWPインストールセットに必要なだけのメモリを使うことができるように設定しました(memory_limit = -1)。

このクエリのパフォーマンスを向上させるためにできることはありますか?投稿を編集するまでは、投稿の分類用語の関係をすべて読み込まないでください。

WP_MEMORY_LIMITを1Gbから2Gbに増やした後のエラー:

WordPress database error: [MySQL client ran out of memory]
SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('locations') AND tr.object_id IN

WordPress database error: [Lost connection to MySQL server during query]
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN

WordPress database error: [MySQL server has gone away]
SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM wp_posts WHERE post_type = 'services' ORDER BY post_date DESC
10
NW Tech

CPTと分類法の用語はプラグインを介して作成されます。私のプラグインに以下を追加することでクエリを減らすことができました。

add_action( 'pre_get_posts', 'nwtd_lpfs_custom_admin_query' );
function nwtd_lpfs_custom_admin_query( $query ) {
    if( !is_admin() && !$query->is_main_query() ) {
         return;
     }
     if( is_post_type_archive( 'services' ) ) {
          $query->set('no_found_rows', 1 );
          $query->set('update_post_meta_cache', 0 );
          $query->set('update_post_term_cache', 0 );
     }
}

現在のところ、私は700以上の投稿を1500以上の分類用語に結び付けており、すべてうまく機能しています。投稿はほぼ瞬時に表示されます。

**私はこのコードを書きませんでした。 WordPress Answersコミュニティの一員ではない、私が直接作業している誰かがコードを提供しました。 **

4
NW Tech