Скрипт для получения списка всех открепленных изображений?
В моем файле functions.php мне нужно получить список всех изображений в папке uploads, которые в данный момент не прикреплены к записям в базе данных WordPress.
Похоже, что каждый раз, когда изображение загружается в папку uploads WordPress (через FTP или через Медиабиблиотеку), в базе данных WP создается запись, верно?
Как я могу получить список всех изображений, которые в данный момент не прикреплены ни к одной записи?

Это должно работать:
$args = array(
'post_type' => 'attachment', // Тип записи - вложение
'numberposts' => -1, // Количество постов (-1 - все)
'post_status' => null, // Статус поста
'post_parent' => 0 // Родительский пост (0 - без родителя)
);
$attachments = get_posts($args); // Получаем все вложения
if ($attachments) {
foreach ($attachments as $post) {
setup_postdata($post);
the_attachment_link($post->ID); // Выводим ссылку на вложение
}
}

@sorich: Большое спасибо. Это определенно приближает меня к решению. Однако возвращается немного больше данных, чем мне нужно. Например, кажется, что само изображение содержится в ["guid"]=> string(59) "http://localhost/mysite/wp-content/uploads/theImage.png", и это именно та часть, которая мне нужна. Есть ли способ вызвать get_posts и получить только значение "guid"?

Я бы не рекомендовал использовать guid, так как он не предназначен для использования в качестве ссылки. Формат guid может измениться в будущем (http://core.trac.wordpress.org/ticket/6492). Вместо этого следует использовать the_attachment_link($post->ID, false)
, например, чтобы получить ссылку на изображение.

В WordPress 3.1 появится возможность получать только одно поле с помощью get_posts: http://core.trac.wordpress.org/ticket/14777. Пока же можно использовать фильтр posts_fields
.

Это не так, патч не указывает, что можно вернуть только одно поле, он расширяет get_posts, позволяя выбирать указанные поля, а не просто возвращать все. Это приводит get_posts в соответствие с другими функциями, которые поддерживают такую возможность (одним из примеров может быть get_terms).

@t31os: исходя из вашего объяснения, я не понимаю, почему то, что я сказал, неверно. Я не говорил, что всегда будет возвращаться только одно поле. В чем разница между "может быть возвращено только одно поле" и "позволяет выбирать указанные поля" (если я могу выбрать, например, только одно поле)? Я что-то упускаю?

@sorich - Вы сказали: "вы сможете получить только одно поле с помощью get_posts" ... но вы можете получить несколько полей, если захотите, никаких ограничений нет.. (может быть, вы просто неудачно сформулировали комментарий?)

@sorich: Как я могу интегрировать the_attachment_link($post->ID, false) в ваш код ответа? Я просто использую ['guid'], потому что именно так возвращается ссылка на изображение вложения при использовании get_posts().

@t31os: Извините, я не знал, что фраза 'be able to' может интерпретироваться как 'всегда'. Я не носитель английского языка. :)

Если вам нужно управлять ими в интерфейсе:
/wp-admin/upload.php?detached=1
Добавьте адрес вашего блога в начале.
Или более описательно:
Войдите в админку, затем используйте меню: Медиафайлы -> Библиотека. Выберите ссылку Неприкрепленные над выпадающим списком фильтров.
