WordPress仪表板,查看504中的CPT结果


10

我创建了具有自定义分类法的自定义帖子类型。我大约有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

FWIW,我确实将WordPress网站的内存增加到2Gb,这使我可以查看帖子,但是我遇到了很多错误(添加到原始问题中)。有什么办法可以使后端的查询不那么繁重?
NW Tech

当您提到从仪表板查看自定义帖子类型时,是指查看位于的帖子列表wp-admin/edit.php?post_type=services吗?
bosco

@bosco是正确的。
NW Tech

分配给Wordpress的内存很大。您在共享主机,VPS还是专用服务器上?这里可能存在更深层的潜在问题。您是否正在使用Apache或Nginx之类的其他网络服务器(也许两者都有)?
Dwayne Charrington

这是带有MediaTemple的新服务器(dv)。控制面板是Plesk,服务器正在使用Apache和Nginx运行CentOS。我不想分配这么多的内存,但这似乎是获得任何结果的唯一方法。
NW Tech

Answers:


4

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社区)提供了代码-也许它可以帮助其他人,或者其他人可以扩展它以提高效率。**

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.