Script para obtener una lista de todas las imágenes que no están adjuntas

10 nov 2010, 20:44:38
Vistas: 1.03K
Votos: 2

En mi archivo functions.php, necesito listar todas las imágenes en la carpeta de uploads que no están actualmente adjuntas a una entrada en la base de datos de WordPress.

Parece que cada vez que se sube una imagen a la carpeta de uploads de WP (ya sea por FTP o mediante el Gestor de Medios), se inserta un registro en la base de datos de WP, ¿correcto?

¿Cómo puedo obtener una lista de todas las imágenes que no están actualmente adjuntas a ninguna entrada?

2
Comentarios

Solo por curiosidad, ¿esto está de alguna manera relacionado con tu otra pregunta? Si es así, creo que hay algún plugin que inserta todos los archivos no asociados en wp-uploads a la biblioteca como entradas no adjuntadas / separadas en la base de datos.

hakre hakre
11 nov 2010 02:14:19

Hakre, ¿te refieres a.. http://wordpress.org/extend/plugins/add-from-server/

t31os t31os
11 nov 2010 16:19:01
Todas las respuestas a la pregunta 2
10

Esto debería funcionar:

$args = array(
    'post_type' => 'attachment', // Tipo de publicación: adjuntos
    'numberposts' => -1, // Número de publicaciones a recuperar (-1 para todas)
    'post_status' => null, // Estado de la publicación (null para cualquier estado)
    'post_parent' => 0 // Solo adjuntos sin elementos padre
); 
$attachments = get_posts($args); // Obtener las publicaciones según los argumentos

if ($attachments) { // Si hay adjuntos
    foreach ($attachments as $post) { // Recorrer cada adjunto
        setup_postdata($post); // Configurar los datos del post
        the_attachment_link($post->ID); // Mostrar el enlace del adjunto
    }
}
10 nov 2010 23:36:16
Comentarios

@sorich: Muchas gracias. Esto definitivamente me acerca mucho más. Sin embargo, está devolviendo un poco más de datos de los que necesito. Por ejemplo, parece que la imagen en sí está contenida en ["guid"]=> string(59) "http://localhost/mysite/wp-content/uploads/theImage.png" así que esa es la parte que estoy buscando. ¿Hay alguna manera de llamar a get_posts y que solo devuelva el valor "guid"?

Scott B Scott B
14 nov 2010 01:45:03

No recomendaría usar el guid ya que no fue diseñado para usarse como enlace. El formato del guid puede cambiar en el futuro (http://core.trac.wordpress.org/ticket/6492). Deberías usar the_attachment_link($post->ID, false), por ejemplo, para obtener el enlace a la imagen.

sorich87 sorich87
14 nov 2010 12:51:49

En WP 3.1, podrás obtener solo un campo con get_posts: http://core.trac.wordpress.org/ticket/14777. Mientras tanto, puedes usar el filtro posts_fields.

sorich87 sorich87
14 nov 2010 12:54:29

No es cierto, el parche no especifica que solo se pueda devolver un campo, está extendiendo get_posts para permitir la selección de campos determinados, en lugar de simplemente devolver todos, esto alinea get_posts con otras funciones que admiten lo mismo (un ejemplo sería get_terms).

t31os t31os
14 nov 2010 14:23:56

@t31os: basado en tu explicación, no veo cómo lo que dije no es cierto. No dije que siempre se devolverá solo un campo. ¿Cuál es la diferencia entre "solo se puede devolver un campo" y "permitir la selección de campos determinados" (si puedo seleccionar solo un campo, por ejemplo)? ¿Me estoy perdiendo algo?

sorich87 sorich87
14 nov 2010 17:29:24

@sorich - Dijiste: "podrás obtener solo un campo con get_posts"... puedes obtener varios campos si lo deseas, no hay restricción.. (¿quizás redactaste mal el comentario?)

t31os t31os
14 nov 2010 20:15:47

@sorich: ¿Cómo puedo integrar the_attachment_link($post->ID, false) en el código de tu respuesta? Solo estoy usando ['guid'] porque así es como se devuelve el enlace de la imagen adjunta al hacer get_posts().

Scott B Scott B
14 nov 2010 20:19:45

@t31os: Lo siento, no sabía que "be able to" podía interpretarse como "siempre". No soy hablante nativo de inglés. :)

sorich87 sorich87
15 nov 2010 08:32:24

@Scott B: He editado mi respuesta.

sorich87 sorich87
15 nov 2010 08:37:24

@sorich - Como dije, creo que es solo cómo redactaste tu respuesta, no hay problema amigo, no hubo daño... ;)

t31os t31os
15 nov 2010 11:06:27
Mostrar los 5 comentarios restantes
0

Si necesitas gestionar estos elementos en tu interfaz de usuario:

/wp-admin/upload.php?detached=1

Añade la dirección de tu blog al principio.

O de forma más descriptiva:

Inicia sesión en tu administrador y luego usa el menú: Medios -> Biblioteca. Selecciona el enlace No adjuntos que está encima del menú desplegable de filtros de la lista.

11 nov 2010 02:10:31