Hola
Hace poco que creé esta página y por lo visto he creado una acción programada sin ser consciente de ello.
Me hace una acción con nombre woocommerce_cleanup_draft_orders , configurada para hacerlo de forma diaria.
Tiene pienta de ser un borrado de los pedidos no ultimados, he buscado en los ajustes de woocommerce, pero no he encontrado de donde desactivarlo.
Me podéis echar una mano ?
Gracias
Contenido solo visible a usuarios registrados
Hola Antonio.
Puedes añadir lo siguiente al final del archivo functions.php que se encuentra en wp-content -> themes -> tu_plantilla o si utilizar algún plugin para añadir código como puede ser Code Snippets
add_filter( 'pre_update_option_woocommerce_cleanup_draft_orders_interval', '__return_false' );
El código evitará que se ejecute la acción programado woocommerce_cleanup_draft_orders al deshabilitar la opción de intervalo para este trabajo.
Tene en cuenta que no se eliminará automáticamente los borradores de pedidos y con el tiempo puedes tener tablas en base de datos con muchos registros de borradores de pedidos.
Un Saludo
Hola
Entiendo entonces que es una acción que se encuentra por defecto en la instalación de woocommerce y que no se puede modificar en los ajustes del plugin.
Perjudica en algo a la web la realización de esa limpieza ? , ocupa espacio o recursos ?
Si no perjudica y no ocupa nada no me importa que se ejecute, lo que me tenía mosca era el no saber porqué se ejecutaba.
Gracias por la respuesta
Hola Antonio:
que no se puede modificar en los ajustes del plugin.
Exacto, hay que bloquear esa acción.
Perjudica en algo a la web la realización de esa limpieza ? , ocupa espacio o recursos ?
Si lo desactivas lo que tienes que hacer es limpiar los borradores desde Woocommerce, si no se borran siguen creando entradas en la base de datos que pueden ralentizar la carga de web.
Esta función eliminará los pedidos borrados de más de un dia:
public function delete_expired_draft_orders() {
$count = 0;
$batch_size = 20;
$this->ensure_draft_status_registered();
$orders = wc_get_orders(
[
'date_modified' => '<=' . strtotime( '-1 DAY' ),
'limit' => $batch_size,
'status' => self::DB_STATUS,
'type' => 'shop_order',
]
);
// do we bail because the query results are unexpected?
try {
$this->assert_order_results( $orders, $batch_size );
if ( $orders ) {
foreach ( $orders as $order ) {
$order->delete( true );
$count ++;
}
}
if ( $batch_size === $count && function_exists( 'as_enqueue_async_action' ) ) {
as_enqueue_async_action( 'woocommerce_cleanup_draft_orders' );
}
} catch ( Exception $error ) {
wc_caught_exception( $error, __METHOD__ );
}
}
El código anterior desactiva el Cron de WordPress para esa acción y con este otro código eliminará los pedidos en borrador que tenga más de un dia.
Un Saludo
Perfecto, podéis cerrar el hilo.
Gracias por la ayuda
Hola Antonio.
Nada, Gracias a ti.
Cualquier consulta que tengas no dudes en comunicarlo.
Un saludo