Avisos
Vaciar todo

[Resuelto] Deshabilitar acción programada

6 Respuestas
2 Usuarios
0 Reactions
14 Visitas
Respuestas: 51
Trusted Member
Topic starter
 

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


 
Respondido : 31/10/2023 9:07 am
Tags del tema
Pepe
 Pepe
Respuestas: 41114
Illustrious Member Admin
 

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

 


 
Respondido : 31/10/2023 11:35 am
Respuestas: 51
Trusted Member
Topic starter
 

@pepesoler

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

 


 
Respondido : 31/10/2023 11:57 am
Pepe
 Pepe
Respuestas: 41114
Illustrious Member Admin
 

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

 


 
Respondido : 31/10/2023 12:16 pm
Respuestas: 51
Trusted Member
Topic starter
 

Perfecto, podéis cerrar el hilo.

Gracias por la ayuda


 
Respondido : 31/10/2023 12:24 pm
Pepe
 Pepe
Respuestas: 41114
Illustrious Member Admin
 

Hola Antonio.

Nada, Gracias a ti.

Cualquier consulta que tengas no dudes en comunicarlo.

 

Un saludo


 
Respondido : 31/10/2023 12:34 pm