Soporte » WordPress Avanzado » Migrar db desde web a medida a WordPress

  • Resuelto noglob

    (@noglob)


    Buenas, tengo un problema que no sé como resolver. Tengo una web hecha a medida dedicada a mostrar vídeos con su corresponiente thumbnail. Los vídeos están alojados en la misma web, por lo que tengo un archivo MP4 y otro con el mismo nombre pero JPG.

    Quiero pasar todo a una nueva web con WordPress pero no sé cómo migrar esos datos. Descarto hacer la migración a mano, porque son más de 9.000 vídeos.

    He pensado en hacer algún script para correr en local que genere los posts y los enlaces a los vídeos para luego importar la db, pero no tengo ni idea de cómo incorporar los thumbnails, ya que parece que WP los almacena como «medios» y hace varias versiones de las imágenes en distintos tamaños y proporciones. No sé como subirlos ni darlos de alta en la db, ni asociarlos para cada post.

    ¿Alguna idea de cómo hacerlo? Estoy usando el tema «VideoPro».

Viendo 15 respuestas - de la 1 a la 15 (de un total de 15)
  • Desde mi humilde nivel de WordPress, te digo que los medios son otro custom post type más. Así que no hay problema porque los subas directamente y los trates como tal en la base de datos. Una vez terminada la migración instalas el plugin Regenerate Thumbnails y te crea los thumbnails en base a los tamaños que hayas configurado en WordPress, más los que traiga el tema, a partir de los archivos originales sin problema.
    Espero haber ayudado. Sino espera a que te den una respuesta más técnica ;).

    Iniciador del debate noglob

    (@noglob)

    Gracias Luis. Entiendo que debería subir por ftp todas las imágenes en sus correspondientes directorios año / mes, y luego generar la db que añadiera un post por cada imagen.

    Después correr el plugin para regenerar las versiones.

    Y finalmente generar la db de los vídeos, enlazando cada uno con su correspondiente post de medios.

    Desde luego yo lo haría así, aunque mis conocimientos de migraciones son básicos. Pero si lo que te preocupaba eran las «versiones» de los medios de esa manera no habrá problema.
    Yo los medios no los ordenó nunca por mes y año. En una web activa puedes terminar con un árbol de directorios interminable. WordPress tiene la opción para decirle que no los ordene por fecha. Por si te es más fácil así.
    Puedes crearte un entorno de pruebas en Pilvia.com (gratis) y hacer tests con tantos WordPress cómo necesites. Con acceso a BD y FTP.

    Iniciador del debate noglob

    (@noglob)

    Gracias de nuevo. No sé si será muy práctico tener todas las imágenes en un sólo directorio. Son unas 9.000, y el tema está generando 12 versiones más, con lo que serían unas 117.000. Quizás sea mejor separarlas en directorios. En la actual web las tengo separadas por año, pero WP va a gastar bastante más espacio.

    Tengo una copia en local, usando Xampp, con lo que puedo probar ahí. Ahora la duda es cómo rellenar la db, tengo que ver como se organizan los campos de cada post.

    Si las miniaturas de WordPress no las necesitas para tu diseño, simplemente pon a cero los valores de la miniatura que no quieres que se cree. Incluso con una función puedes eliminar tamaños si no te sirven.
    remove_image_size($name)

    Suerte con la base de datos 😉

    Revisa esta respuesta.
    Seguro que encuentras algo útil.

    • Esta respuesta fue modificada hace 6 años, 1 mes por Luis Martin.
    Iniciador del debate noglob

    (@noglob)

    Gracias, me pierdo un poco con todo esto. He estado mirando funciones de WP y he conseguido añadir un post y asignarle una imagen (aunque luego el tema no la usa), con wp_insert_post() y media_handle_upload().

    El problema que veo es que media_handle_upload solo me permite usar un formulario con POST, al usar subidas de ficheros, y de esa forma tendría que hacerlo manualmente.

    ¿Hay alguna función que dándole la ruta de la imagen ya subida al directorio correspondiente, WP la registre como medio (sin subirla) y la asigne a un post?

    Edito, quizás sirva esto: https://codex.wordpress.org/Function_Reference/wp_insert_attachment

    • Esta respuesta fue modificada hace 6 años, 1 mes por noglob.

    Aquí lo tienes, crea primero el post y luego con la id del post y la url, insertas la imagen y añade el thumbnail.

    y para crear el post, wp_insert_post

    Iniciador del debate noglob

    (@noglob)

    Sí, gracias, he conseguido añadir el post y asociarle la imagen, y que salga correctamente en el tema.

    El siguiente problema es cómo añadir la dirección del vídeo. He visto en los datos que los vídeos van con «tm_video_file», pero no sé como colocar eso.

    En el WP, al añadir un vídeo hay que cambiar el formato del Post, de «estandar» a «video», y luego añadir la dirección del vídeo en un apartado que aparece al cambiar el formato.

    Para subir la el video, es la misma funcion con algunos retoques:

    function Subir_Video( $image_url ){
        $upload_dir = wp_upload_dir();
        $image_data = file_get_contents($image_url);
        $filename = basename($image_url);
        if(wp_mkdir_p($upload_dir['path']))     $file = $upload_dir['path'] . '/' . $filename;
        else                                    $file = $upload_dir['basedir'] . '/' . $filename;
        file_put_contents($file, $image_data);
    
        $wp_filetype = wp_check_filetype($filename, null );
        $attachment = array(
            'post_mime_type' => $wp_filetype['type'],
            'post_title' => sanitize_file_name($filename),
            'post_content' => '',
            'post_status' => 'inherit'
        );
        $attach_id = wp_insert_attachment( $attachment, $file );
        require_once(ABSPATH . 'wp-admin/includes/image.php');
        require_once( ABSPATH . 'wp-admin/includes/media.php' );
        $attach_data = wp_generate_attachment_metadata( $attach_id, $file );
        $res1= wp_update_attachment_metadata( $attach_id, $attach_data );
        return $attach_id;
    }

    Te retornará la id del video y con wp_get_attachment_url recuperas la url.
    Yo primero, subiría el video, crearía el post con el video en el contenido y al final, asignaría el thumbnail.

    • Esta respuesta fue modificada hace 6 años, 1 mes por Luis Martin.
    Iniciador del debate noglob

    (@noglob)

    Creo que no va así, el vídeo no se sube a WP, sólo se le proporciona el enlace. Se pueden poner vídeos de Youtube, Vimeo, y directamente archivos mp4 alojados en otro servidor, que es lo que necesito en este caso.

    Estaba mirando en la documentación del tema: http://videopro.cactusthemes.com/doc/docs/advanced-features/video-submission-contact-form-7/

    Tiene la etiqueta «video-url» para Vimeo/Youtube, etc, y «video-file» para los mp4.
    He probado a meterlos en el array para wp_insert_post pero no funciona. Además el post creado al mirarlo en el editor, aparece como «estandar», no como «video», por lo que puede que no pille la url del vídeo por esa razón.

    ¿Pero no querias subir los videos?
    Para enlazarlos en el contenido solo tienes que mirar esto

    • Esta respuesta fue modificada hace 6 años, 1 mes por Luis Martin.
    Iniciador del debate noglob

    (@noglob)

    Gracias de nuevo, pero no puedo añadirlos de esa manera. Quiero añadirlos al tema. VideoPro tiene un slider en la portada donde salen los últimos vídeos añadidos. Al pulsar en alguno se abre un poppup con el vídeo.
    Si se pulsa en otras partes fuera del slider, se abre el vídeo en una página específica para los vídeos, con los controles, botón de siguiente/anterior, etc.
    Puedes verlo aquí: http://videopro.cactusthemes.com/v1/home-page-v6/

    De la forma que dices se añade el vídeo en el cuerpo del mensaje. Al pulsar se abre como un post normal, saliendo el thumbnail arriba y debajo el vídeo.

    Por eso decía que con el VideoPro para añadir manualmente un post de vídeo, hay que seleccionar el formato «vídeo» en lugar de «estándar», y luego añadir la url del vídeo en un campo que aparece sólo si el formato es vídeo.

    Es lo que estoy tratando de conseguir, que el script coloque esos datos en… alguna parte.

    Edito: encontré como cambiar el formato: set_post_format($post, ‘video’ );
    Ahora me falta ver dónde se coloca el enlace del vídeo.

    • Esta respuesta fue modificada hace 6 años por noglob.
    Iniciador del debate noglob

    (@noglob)

    Bueno, encontré la solución para añadir el vídeo, buceando entre el código del tema.

    add_post_meta($id, ‘tm_video_file’, ‘url del video.mp4’);

    para añadir un vídeo de youtube sería con ‘tm_video_url’, y para un iframe personalizado, ‘tm_video_code’.

    Gracias a todos por vuestra ayuda, un saludo.

Viendo 15 respuestas - de la 1 a la 15 (de un total de 15)
  • El debate ‘Migrar db desde web a medida a WordPress’ está cerrado a nuevas respuestas.