我在这里搜索了这个问题,有很多关于内存问题和WordPress的查询。常见的建议修复方法是更改WORDPRESS\\u内存常量。我有一个类似的问题,我想避免重新定义这个常数。这是我在WordPress上发布的问题。组织机构:
我正在开发一个插件,它有许多自定义查询。
我正在寻找一些关于插件运行时如何最好地处理问题的指导。
激活后,我需要一个方法来遍历所有帖子、页面和自定义帖子类型(CPT),并为每个帖子、页面和CPT添加4个自定义字段。
以下是我使用的代码:
$internal = array( \'page\', \'post\' );
$cpt_args = array(
\'public\' => true,
\'_builtin\' => false
);
$custom = get_post_types( $cpt_args, \'objects\' );
foreach ($custom as $name => $data) {
$internal[] = $name;
}
$avail_posttypes = $internal;
$args = array(
\'post_type\' => $avail_posttypes,
\'post_status\' => \'any\',
\'numberposts\' => -1,
\'cache_results\' => false,
\'no_found_rows\' => true,
\'fields\' => \'ids\',
);
$all_posts = get_posts($args);
foreach ($all_posts as $post) {
if( !update_post_meta( $post->ID, \'_cf_one\', \'ok\', true ) ){
add_post_meta( $post->ID, \'_cf_one\', \'ok\', true );
}
if( !update_post_meta( $post->ID, \'_cf_two\', \'ok\', true ) ){
add_post_meta( $post->ID, \'_cf_two\', \'ok\', true );
}
if( !update_post_meta( $post->ID, \'_cf_three\', \'ok\', true ) ){
add_post_meta( $post->ID, \'_cf_three\', \'ok\', true );
}
if( !update_post_meta( $post->ID, \'_cf_four\', \'ok\', true ) ){
add_post_meta( $post->ID, \'_cf_four\', \'ok\', true );
}
}
$img_args = array(
\'post_type\' => \'attachment\',
\'numberposts\' => -1,
\'cache_results\' => false,
\'no_found_rows\' => true,
\'fields\' => \'ids\',
);
$img_posts = get_posts($img_args);
foreach ($img_posts as $post) {
if( !update_post_meta( $post->ID, \'_cf_one\', \'ok\', true ) ){
add_post_meta( $post->ID, \'_cf_one\', \'ok\', true );
}
if( !update_post_meta( $post->ID, \'_cf_two\', \'ok\', true ) ){
add_post_meta( $post->ID, \'_cf_two\', \'ok\', true );
}
if( !update_post_meta( $post->ID, \'_cf_three\', \'ok\', true ) ){
add_post_meta( $post->ID, \'_cf_three\', \'ok\', true );
}
if( !update_post_meta( $post->ID, \'_cf_four\', \'ok\', true ) ){
add_post_meta( $post->ID, \'_cf_four\', \'ok\', true );
}
}
我试图优化我的查询,以避免消耗任何不必要的资源。但它似乎在进入查询以处理图像之前运行了我们的内存。我正在测试的特定网站有600多篇帖子、页面和自定义帖子类型(组合)。
我在wp config中更改了内存设置。php为128M。但是我想找到一种方法来做到这一点,这样普通用户就不需要修改这个值或php中的任何内容。ini文件。
我还可以做更多的事情来优化这个请求吗?有关于WordPress如何管理与查询相关的内存的文档吗?
查询监视器插件还显示,当插件激活大约59个查询时,我会消耗大约37M内存。当我的插件被停用时,内存会下降到20M,因此我想大大减少这个数量。
我希望能够根据需要分配内存,或者以不消耗太多内存的方式重新构造查询。如有任何建议,将不胜感激。