如何在WordPress中支持15000个词条?

时间:2020-11-29 作者:Dwayne Charrington

我正在与WordPress网站合作,该网站将支持创建列表。这些列表可以与地理区域相关联,特别是澳大利亚郊区的地址。我创建了一个简单的PHP脚本,从命令行运行该脚本,以将我的术语添加到我的自定义分类中。

然而,当我试图查看我正在添加到站点中的位置时,我得到一个关于内存耗尽的错误。

enter image description here

尝试查看位置列表时出现此错误。总而言之,我试图在分类法中加入15280个澳大利亚郊区。

我当前的内存限制为wp-config.php 文件设置为512MB,我不想增加它,因为它感觉像是一个黑客。这里肯定还有其他原因,因为我认为分页将意味着查询实际上没有为每个页面返回多少数据。

1 个回复
最合适的回答,由SO网友:Dwayne Charrington 整理而成

我在Rup之后解决了这个问题,在其中一条评论中指出,父类别下拉列表很可能是罪魁祸首。果然,这就是问题所在。WordPress似乎试图在下拉列表中填充15000个项目,这导致为检索这些项目而进行的查询过多。

我的实例中的简单修复方法是使我的自定义分类法成为非层次的。我的位置没有使用任何父/子关系,因此结构可以是平面的,而只是独立的位置术语。

$args = [
        "label" => __( "Locations", "propertynet" ),
        "labels" => $labels,
        "public" => true,
        "publicly_queryable" => true,
        "hierarchical" => false,
        "show_ui" => true,
        "show_in_menu" => true,
        "show_in_nav_menus" => true,
        "query_var" => true,
        "rewrite" => [ \'slug\' => \'location\', \'with_front\' => true, ],
        "show_admin_column" => false,
        "show_in_rest" => true,
        "rest_base" => "location",
        "rest_controller_class" => "WP_REST_Terms_Controller",
        "show_in_quick_edit" => false,
];
将taxonomy参数的configuration属性设置为false 是什么让WordPress能够处理我的大量术语:"hierarchical" => false - 如果您希望术语具有层次结构,那么这会带来一个更大的问题,这似乎需要重新实现父类别下拉列表以支持AJAX加载,并与此屏幕上分页的正常工作方式类似。

希望这能帮助其他遇到同样问题的人。

相关推荐

如何使用Get_the_Terms()显示多个术语?

我使用以下代码在单个帖子的元数据中显示自定义分类法,但现在我需要显示多个用逗号分隔的术语,而不是只显示一个术语。只是不知道怎么做。有没有一种方法可以使用wp_sprintf_l 结合get_the_terms() 要做到这一点?或者其他方式?以下是我当前的功能:$sources = get_the_terms( $post->ID, \'source\' ); if ( ! empty( $sources ) && ! is_wp_error( $sources ) ){&#