Script para obtener una lista de todas las imágenes que no están adjuntas
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?

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
}
}

@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"?

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.

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
.

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: 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?

@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?)

@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().

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

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.
