versusbassz/wp-batcher

此包已被弃用,不再维护。未建议替代包。

在WordPress中迭代成千上万的帖子/用户等,无需内存溢出和编写样板代码

0.1.0 2022-01-13 09:40 UTC

This package is auto-updated.

Last update: 2023-03-03 21:51:01 UTC


README

如果您需要在WordPress中更改相同类型的大量项目(帖子、用户等)(可能导致内存不足),此库可以帮助您编写更少的代码并避免内存不足。

安装

composer require versusbassz/wp-batcher 0.1.*

如何使用

假设您有一个数据库中有100000篇帖子,您需要遍历它们并更改它们。

当然,您不能直接使用 get_posts( [ 'nopaging' => true ] ),因为您将得到 致命错误:内存限制已超过 bla bla bla...

所以为了完成这项工作,您需要分批次连续处理您的帖子(例如,每次100篇帖子)。

不使用库的代码示例

$paged = 1;

wp_suspend_cache_addition( true );

while ( true ) {
	$items = get_posts( [
		'posts_per_page' => 100,
		'paged' => $paged,
		'orderby' => 'ID',
		'order' => 'ASC',
	] );

	if ( ! count( $items ) ) {
		break;
	}

	foreach ( $items as $item ) {
		// Payload
	}

	++$paged;
}

wp_suspend_cache_addition( false );

使用库后,上述代码变为

use \Versusbassz\WpBatcher\WpBatcher;

$iterator = WpBatcher::get_posts();

foreach ( $iterator as $item ) {
	// Payload
}

并且该库在幕后不仅执行了 wp_suspend_cache_addition()

文档

请参阅 Wiki

兼容性

版本和稳定性

项目遵循 https://semver.org/

许可证

项目的许可证是GPL v2(或更高版本)