Intereting Posts
Как отображать сообщение, на основании которого вызывается Форма, которая отправляет данные на панель администратора и может экспортировать ее Как получить идентификатор пользователя текущего профиля, который редактируется в WP-Admin? Понимание иерархии шаблонов Как удалить дату и категорию из моих портфолио страниц Разбиение на страницы для категории CSS в дочерней теме заменить! Важно в родительской теме Пользовательская таксономия с автором? Отображение списка определенных категорий по идентификатору Как редактировать содержимое wp-signup.php с помощью плагина Пользовательский таксономический шаблон Получить размер изображений вложений вложений и использовать их в коде для встраивания get_results на больших наборах данных Условно исключить пост из определенной категории на боковой панели на главной странице? Авторский код отслеживания!

Как вы можете определить, является ли изображение просто прикрепленным или фактически вставлено в сообщение?

Потерпите меня. Я обещаю, что есть вопрос, когда я закончу 🙂

В WordPress вы можете загружать изображения при редактировании сообщения и иметь возможность вставлять их в контент (или нет).

Несмотря на это, изображение, похоже, «прикреплено» к сообщению при просмотре медиа-менеджера.

Разместил ли WordPress какие-либо ссылки в базе данных, чтобы отличить изображение, которое было прикреплено, а также вставлено в сообщение? Или, наоборот, изображение, которое было прикреплено к сообщению, но НЕ было вставлено в сообщение?

Почему я хочу это знать?

Я хотел бы разрешить пользователю загружать изображения, которые будут написаны над сообщением (строка изображений), просто загрузив их через мастер прикрепления сообщения.

Но они также могут загружать некоторые изображения, которые они только хотят отображать в контенте, поэтому в этом случае они нажимают «вставить в сообщение». Если у меня есть какой-то способ дифференцировать изображения, которые были вставлены в образы, которые только что были прикреплены, они получат дубликаты изображений, один в столбце и один в верхней части сообщения.

Любые мысли о том, как это сделать?

Я предполагаю, что альтернативный подход состоял бы в том, чтобы добавить флажок в редактор вложений для отметки изображения для отображения в качестве вложения заголовка сообщения, а затем выполнить поиск изображений, прикрепленных к сообщению специальным флагом.

Я использовал nextgen gallery plugin, чтобы сделать что-то вроде этого. Фактически я использовал только половину этого: конечный пользователь загружает изображения через интерфейс плагина, но фактический дисплей внутри сообщения выполняется с помощью специального короткого кода.

Я не думаю, что есть способ узнать, было ли вложение добавлено в сообщение, не изучая источник содержимого сообщения.

** Обновленный фрагмент: был использован глобальный идентификатор $ post, а не идентификатор, переданный в ID, поэтому потребуется несколько обновлений, прежде чем метатег будет добавлен в контентные изображения. Теперь это работает.

Мне нужно было аналогичное решение, и, следуя предложениям Яна Фабри, я придумал функцию (по общему признанию, неэлегантную, но она работает):

/* Add meta value to distinguish inserted images from other attached images - lionassociates.com */ function insertedImage_save_meta($post_id) { $upPost = get_post($post_id); $rawPostDoc = new DOMDocument(); @$rawPostDoc->loadHTML($upPost->post_content); $imgs = $rawPostDoc->getElementsByTagName('img'); $i = 0; foreach($imgs as $img){ $imgIDStr = substr($img->getAttribute('class'), (stripos($img->getAttribute('class'),'wp-image-')+9), 6); $imgID = preg_replace("[^0-9]", '', $imgIDStr); if($imgID != '') { if(get_post_meta($imgID, '_inserted-image', false)) update_post_meta($imgID, '_inserted-image', 'yes'); else add_post_meta($imgID, '_inserted-image', 'yes'); } $i++; } } /* Do something with the data entered */ add_action('save_post', 'insertedImage_save_meta'); 

Так что вставляется в (functions.php). Затем я использую метаданные вложений в цикле, где бы я не выплескивал свои изображения (за Яна Фабри):

  $imgs = get_posts(array('post_parent'=>get_the_id(), 'numberposts'=>-1, 'post_type'=>'attachment', 'post_mime_type'=>'image')); if($imgs[0]) { foreach($imgs as $img) { if(!get_post_meta($img->ID, '_inserted-image', true)) echo wp_get_attachment_image($img->ID, 'sec-slide'); //'sec-slide' is just the name of a custom image size } } 

Это выплевывает все прикрепленные изображения, которые не вставляются в содержимое сообщения.

Как сказал Кемп, нет никакой разницы в базе данных между прикрепленным изображением и тем, который фактически вставлен в содержимое. Я сканирую содержимое (при сохранении сообщения, а не каждый раз, когда вы его показываете) и установите дополнительный атрибут метаданных для прикрепленных, но не отображаемых изображений. Не забудьте также проверить галереи: они вставляются с помощью короткого кода, поэтому это не всегда просто поиск тегов <img> .