Problema con plugin wordpress.

giulichajari

giulichajari

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenos dias colegas, desarrolle un codigo php para crear un plugin de insercion y actulizacion de propeidades de tokko a wordpress, es decir para sincronizar, el plugin funciona(se instala y carga las propeidades de maravilla), solo que no logro subir las imagenes.
es decir si comento las lineas que crean el attachment al post funciona al toque(estoy usando una tabla intermedia):

PHP:
function create_or_update_property_post($row) {
    global $wpdb;
    $tokko_id = $row->tokko_id;

    // Verificar si ya hay un post con ese _tokko_id
    $existing_post_id = new WP_Query([
        'post_type' => 'property',
        'meta_key' => '_tokko_id',
        'meta_value' => $tokko_id,
        'posts_per_page' => 1,
        'fields' => 'ids',
    ]);

    error_log("Procesando propiedad con toki_id: $tokko_id");

    $post_data = [
        'post_title' => $row->titulo,
        'post_content' => $row->descripcion,
        'post_status' => 'publish',
        'post_type' => 'property',
    ];

    // Verificar si el post ya existe
    if (!empty($existing_post_id->posts)) {
        // Ya existe el post
        $post_id = $existing_post_id->posts[0];
        $post_data['ID'] = $post_id;
        error_log("Actualizando post con ID: $post_id");
        wp_update_post($post_data);
    } else {
        // Nuevo post
        $post_id = wp_insert_post($post_data);
        error_log("Insertando nuevo post con ID: $post_id");
        add_post_meta($post_id, '_tokko_id', $tokko_id);
    }

    // Actualizar campos personalizados (ACF, RealHomes, etc.)
    update_post_meta($post_id, 'REAL_HOMES_property_price', $row->precio);
    update_post_meta($post_id, 'REAL_HOMES_property_location', $row->ubicacion);
    update_post_meta($post_id, 'REAL_HOMES_property_type', $row->tipo_propiedad);
    update_post_meta($post_id, 'REAL_HOMES_property_bedrooms', $row->dormitorios);
    update_post_meta($post_id, 'REAL_HOMES_property_bathrooms', $row->banos);
    update_post_meta($post_id, 'REAL_HOMES_property_area', $row->superficie);

    // Verificar si existe una imagen destacada
  /*  if (!empty($row->imagen_destacada)) {
        try {
            // Subir la imagen destacada desde la URL
            $attach_id = upload_image_from_url($row->imagen_destacada, $post_id, true);
            if ($attach_id) {
                set_post_thumbnail($post_id, $attach_id);
                error_log("Imagen destacada establecida para post $post_id (attachment ID: $attach_id)");
            } else {
                error_log("No se pudo subir imagen destacada para post $post_id desde URL: " . $row->imagen_destacada);
            }
        } catch (Exception $e) {
            error_log("Error al subir imagen destacada para post $post_id: " . $e->getMessage());
        }
    } else {
        error_log("No se encontró imagen destacada para la propiedad con toki_id: $tokko_id");
    }*/

    return $post_id; // Retornar el post_id para rastrear el éxito de la operación
}

Como veran el codigo lo ejecuto para cada fila de mi tabla intermedia donde la imagen destacada si existe y tiene valor. lo curioso es que si descomento esas lineas sube 3 o 4 propiedades con su imagen y luego se corta.
 
Parece que el problema podría estar relacionado con la memoria o el tiempo de ejecución de tu script. Al tratar de subir varias imágenes en un solo ciclo, podrías estar alcanzando los límites de PHP. Te recomiendo probar lo siguiente:

1. Aumenta el límite de memoria: Puedes añadir ini_set('memory_limit', '256M'); al inicio de tu script.

2. Aumenta el tiempo de ejecución: Agrega set_time_limit(300); para permitir que el script se ejecute por más tiempo.

3. Divide las inserciones: Si estás procesando muchas propiedades, considera procesarlas en lotes, en vez de todas a la vez.

4. Revisa los logs de errores: Asegúrate de chequear los logs de errores de tu servidor para ver si hay más información sobre por qué falla el upload.

5. Depura la función de upload: Revisa la implementación de upload_image_from_url para asegurarte de que está manejando correctamente todos los casos y errores.

Espero que esto te ayude a resolver el problema. ¡Buena suerte!
 
Como dice el bot usa set_time_limit(0); en 0 para que sea sin limite.

Como estas ejecutando tu script?
 
Como dice el bot usa set_time_limit(0); en 0 para que sea sin limite.

Como estas ejecutando tu script?
Gracias por responder. Uso el comando exec() para que corra en segundo plano y no se tilde pero carga 3 o 4 nada mas. Con exec llamo al script donde quiero subir las imagenes.
 
Gracias por responder. Uso el comando exec() para que corra en segundo plano y no se tilde pero carga 3 o 4 nada mas. Con exec llamo al script donde quiero subir las imagenes.

Que dice el error log?

Si tienes terminal puedes ejecutar el script y ver que pasa.
 
Última edición:
Atrás
Arriba