Carpeta de carga de limpieza, estructura de base de datos de la biblioteca de medios

10

Estoy haciendo una actualización y limpieza de un viejo blog que comenzó en Blogger.com, luego se mudó a WordPress 2.1, 2.3 y ahora 3.0. Las imágenes en las publicaciones están dispersas: la mayoría de ellas están en /wp-content/, pero no todas en /wp-content/uploads/o /wp-content/uploads/year/month/. Otros todavía hacen referencia a los servidores de imágenes blogger.com. Quiero consolidarlos a todos /wp-content/uploads/year/month/, ¿cuál es el lugar "correcto"? Esto debería facilitar las actualizaciones posteriores.

¿Cuál es la mejor manera de hacer esto? También me gustaría actualizar los metadatos, para que la Biblioteca de Medios pueda administrarlos a todos. No pude encontrar ninguna documentación sobre esto, así que lo siento si me la perdí, por favor indíquemela.

Por supuesto, proporcionaría redirecciones de las ubicaciones antiguas a las nuevas. ¿Cuál es la mejor manera de hacer esto? ¿Una plantilla 404.php, de un complemento? Me gustaría agregar algunos registros, para que podamos encontrar las páginas de referencia y tal vez corregirlas.

(Esta pregunta se hizo originalmente en los foros de soporte de WordPress , pero no obtuvo una respuesta útil allí).

Jan Fabry
fuente
¿Estás buscando un complemento que haga el trabajo?
Hakre
¿Ene? ¿Algún comentario sobre tu problema? ¿No te agrada la respuesta? No hay comentarios útiles?
Hakre
Estoy de acuerdo en que algún tipo de editor masivo de medios sería útil. Algo que le permite importar medios de diferentes carpetas y moverlos rápidamente de acuerdo con algunas reglas. Podría trabajar en esto en realidad.
noio

Respuestas:

7

W3-Total Cache tiene una función que escaneará todas sus publicaciones e importará cualquier imagen externa a la biblioteca de medios y cambiará las rutas a la nueva ubicación.

Ver captura de pantalla

texto alternativo

Chris_O
fuente
2

El lugar correcto es la configuración actual, diría. Entonces, si ahora usa una carpeta de carga (en lugar de las subcarpetas de años / mes), vaya con esa (puede estar muy llena, pero es más fácil de ordenar. Así que simplemente mueva todos los archivos de los subdirectorios de año / mes al directorio de cargas y cambie la URL -Paths en la base de datos normalmente debería hacer el trabajo.

Después de que todo esté en una carpeta (y ordenado), puede cambiar el diseño de la carpeta nuevamente y mover los archivos al directorio correcto con un script PHP que lea la fecha de la base de datos. El mismo script exacto necesita adoptar nuevamente las rutas URL.

Es algo así como el mismo guión que sugirió Mike.

En este momento, la interfaz de usuario de WP no admite mover o cambiar el nombre de los archivos manualmente, por lo que está vinculado a algún código propio. Lo que tendría sentido para un lote de todos modos.

Complementos existentes y relacionados

hakre
fuente
1

@ Jan Fabry: Probablemente deba abordar cada caso por separado, es decir, las imágenes alojadas en Blogger y las que están fuera de wp-content, etc.

Aquí hay un complemento para importar desde Blogger; no se ha actualizado en mucho tiempo, pero aún puede funcionar o al menos tener un código que puede usar:

También hay un complemento antiguo que puede o no funcionar:

Más allá de eso, creo que solo necesitará escribir un script PHP que escanee sus archivos y escanee sus publicaciones buscando URL de imágenes incrustadas, desarrolle una lista intersectada y luego mueva los archivos y actualice la referencia en la publicación. ¡O tal vez tengas suerte y ese complemento seguirá funcionando y lo hará por ti!

Buena suerte.

MikeSchinkel
fuente
0

Tal vez (y eso es solo para futuros lectores, es una Q anterior) puede enumerar todos 'post_type' => 'adjunto' y comenzar a separarse de allí. Me refiero a buscar las publicaciones y guardar las diferentes ubicaciones en una matriz. Luego, resuelva esto para obtener una visión general de dónde se encuentran sus imágenes ...

emperador
fuente
1
@kaiser: Puede ser una vieja pregunta, pero todavía estoy trabajando en partes, ¡así que todas las sugerencias son bienvenidas! Espero escribir lo que terminé como respuesta pronto.
Jan Fabry
@ Jan: supongo que llamaría a todos 'post_type' => 'adjunto' y luego llamaría a la ubicación (si está almacenada en algún lugar en query_vars) y si no existe en una matriz predefinida (primero vacía), empújala ahí. Con el resultado, probaría algo con array_intersect o similar para devolver las diferentes ubicaciones. Esos son solo algunos primeros y rápidos pensamientos sucios sobre cómo averiguar dónde se propagan las cosas. Hasta ahora no tengo idea de lo que haría con el resultado o la redirección ...
kaiser
... Supongo que es posible obtener las diferentes ubicaciones de los archivos adjuntos y luego moverlos y actualizar la ubicación en la base de datos. No me importaría mucho las redirecciones. La publicación lo sabe, cuando la base de datos lo sabe y quién se preocupa realmente por la indexación de los adjuntos posteriores. Preferiría que nadie vincule directamente / en caliente sus imágenes (o plantillas de archivos adjuntos) y en su lugar se vincule a la publicación que lo contiene. Personalmente, nunca utilicé una plantilla de archivo adjunto ni establecí un enlace (aparte de las cajas de luz y similares) a un archivo adjunto dentro de una publicación.
kaiser
@kaiser: Actualmente, primero creé redirecciones y moví todas las imágenes "perdidas" en el /wp-content/uploads/moved/directorio. De esta manera, todas las publicaciones, incluso aquellas que hacen referencia a ubicaciones antiguas, seguirán funcionando, y mis otros directorios están claros (lo cual fue el mayor problema para mí: no estaba muy claro qué pertenecía a WordPress y qué no). Ahora estoy actualizando los archivos adjuntos existentes y agregando imágenes que aún no se agregaron como archivos adjuntos.
Jan Fabry
@ Jan: "Ahora estoy actualizando los archivos adjuntos existentes y agregando imágenes que aún no se agregaron como archivos adjuntos". ¿Por mano, poco a poco? No lo sé exactamente, pero supongo que solo necesita las redirecciones siempre que los motores de búsqueda no conozcan la nueva ubicación. El resto debería basarse en las entradas db. ¿Incorrecto?
kaiser