Я работаю над функцией галереи изображений, где я беру изображения, прикрепленные к страницам, и отображаю их в разных местах с помощью этой get_posts()
функции. Однако я обнаружил, что когда я удаляю изображения со страницы, на которой они были размещены, они по-прежнему кажутся вложениями. Мне просто интересно, есть ли что-то, что я неправильно понимаю о вложениях, или это ошибочное поведение?
Возможно, стоит добавить, что я получаю изображения в виде вложений страниц, потому что мне нужно иметь возможность классифицировать изображения и отображать их по категориям в разных местах сайта. Если бы я мог напрямую классифицировать изображения, я понимаю, что мне не нужно было бы беспокоиться об этой проблеме, с которой я сталкиваюсь!
Пример вашего вызова get_posts() был бы ДЕЙСТВИТЕЛЬНО полезен здесь
Я не включил пример вызова get_posts(), так как проблема, которую я, кажется, вижу, больше связана с обработкой WordPress присоединения/удаления изображений в виде вложений. Дело не столько в неправильном поведении get_posts(), сколько в обработке изображений внутри Admin.
Как вы «удаляете изображения со страницы, на которой они были размещены?» Если вы просто удаляете изображение из содержимого поста/страницы, это не удалит его.
@EAMann: Означает ли это, что нет возможности удалить изображение как вложение на странице после того, как оно было вставлено и удалено? Кажется странным поведением, если это так. Я знаю, что могу отредактировать базу данных, чтобы удалить ссылку на post_parent, но это явно бесполезно для конечных пользователей.
Есть средство для удаления изображения… см. мой полный ответ ниже…
@EAMann: Спасибо за это объяснение. Однако может показаться, что невозможно удалить изображение со страницы и удалить его как вложение, если вы действительно не удалите это изображение? Я искал способ хранить изображения в медиатеке WordPress и иметь возможность добавлять/удалять их в качестве вложений на страницы.
@Rick: Если бы она была доступна, помогла бы в вашем случае функция «переместить изображение»? То есть, если бы вы могли иметь удерживающую страницу/публикацию для всех изображений, которые вы хотите иметь, но не быть связанными с «настоящей» страницей/публикацией.
@EAMann: Интересно, знаете ли вы, что произойдет, если вы вручную установите для post_parent значение 0 (или NULL, или что-то в этом роде)?
@Bobby: может помочь функция «переместить изображение», хотя я думаю, что потенциально функция «удалить изображение» была бы более полезной!
@Bobby: установка post_parent на 0 удаляет вложение со страницы, основная проблема заключается в том, что единственный способ, которым WP обычно делает это, — это удаление изображения из медиатеки.
Спасибо за это. Я вижу, что это позволяет использовать простое текстовое поле для ввода категорий на изображениях, надеюсь, я смогу использовать это и заставить его делать то, что я хочу. Плагин File Gallery выглядит хорошо, но, как вы говорите, делает гораздо больше, чем мне действительно интересно. Но если я не могу получить то, что хочу, это может быть хорошим запасным решением.
Еще раз спасибо за упоминание
register_taxonomy_for_object_type()
, я вижу, как он может делать то, что мне нужно, но я все еще сталкиваюсь с парой проблем. Я собираюсь опубликовать новый вопрос вместо того, чтобы разбавлять этот.Сначала я подумал, что вы, возможно, правы, но я вижу в списке изображений в библиотеке мультимедиа, что изображение отображается как прикрепленное к странице, хотя я удалил его с этой страницы. Это показалось бы мне глючным.
Хммм… Интересно, зависит ли это от того, как вы удалили это со страницы. Вы видите значение post_parent для этого вложения в базе данных?
Я удалил изображение со страницы, просто наведя курсор на изображение и щелкнув значок удаления. Я вижу, что post_parent по-прежнему установлен на идентификатор страницы, с которой я только что удалил его. Я не понимаю, как это не ошибка, я бы подумал, что желаемое поведение будет заключаться в том, что идентификатор parent_page должен сбрасываться для изображения при удалении изображения или сохранении страницы.
Это не баг… это важная фича. Поле post_parent по-прежнему установлено, потому что изображение по-прежнему прикреплено к галерее сообщения, даже если оно не используется в содержании сообщения. Некоторые сайты (например, мои) используют эту функцию для добавления изображений на страницу архива сообщений, фактически не встраивая изображения в содержимое сообщения… См. мой полный ответ для получения инструкций о том, как полностью удалить изображение.
@EAMann: Спасибо, я вижу логику / ценность в том, как это работает, но поскольку нет возможности удалить изображение как вложение, не удаляя его, мне это кажется ошибочным.
Удаление изображения из поста или страницы — запутанный процесс. Когда вы загружаете изображение в сообщение/страницу, оно добавляется в галерею этого сообщения/страницы. Затем вы можете вставить изображение в содержимое поста/страницы и отредактировать контент по своему усмотрению. Когда вы нажимаете на изображение в wysiwyg-редакторе, вы увидите два значка — один для редактирования настроек изображения и один для его удаления из редактора — этот второй значок не удаляет изображение, хотя он выглядит как типичный «удалить». » значок.
Когда вы нажимаете эту кнопку «удалить», она удаляет изображение из визуального редактора , но сохраняет его в галерее поста/страницы.
Чтобы действительно удалить/удалить изображение, вам нужно сделать следующее
Вам будет предложено подтвердить удаление, затем изображение будет отсоединено от записи/страницы и полностью удалено из WordPress.
Я никогда не играл с этим, но вы можете прикреплять таксономии к вложениям (встроенным или пользовательским) следующим образом:
Подключите это,
'init'
чтобы иметь возможность классифицировать вложения в соответствии с категорией.Я не знаю, как вы «удаляете» изображение, но если вы удаляете его из WordPress, оно больше не должно быть прикреплено к этой странице. Другой способ отключить изображение как вложение — войти в базу данных и удалить идентификатор страницы из
'post_parent'
столбца вложения.Вы также можете заглянуть в плагин File Gallery. Он делает намного больше, чем вам может быть интересно, но позволяет отсоединять изображения от постов.
Просто смутное предположение, но может быть вы получаете вложения со всех ревизий/статусов страниц? Если вы ограничите
get_posts()
вызов только опубликованными сообщениями/страницами, вы можете увидеть, что рассматриваемое изображение исчезнет.