Получить файл URL по имени изображения

Привет всем, у меня есть несколько изображений в моей медиа-папке в WordPress

когда сохранить новое изображение Wordpress сохранить как год / месяц / имя.png

/wp-content/uploads/2011/01/matt.png

Можно найти изображение по имени и вернуть файл URL, как это?

wp-content/uploads/2011/01/

Я использую это

    <?php $upload_dir = wp_upload_dir(); ?>
            <img src="<?php echo $upload_dir['baseurl']; ?>/<?php echo $precontent; ?>.png " class="attachment-post-thumbnail">

где $precontent это имя изображения и $upload_dir['baseurl'];

return /wp-content/uploads, но мне нужны год и месяц этого изображения, поэтому у меня есть /wp-content/uploads/matt.png

любая идея?

3 ответа

Решение

Если вы пытаетесь получить полный путь к вложению, подумайте, что вложение просто post_type = "вложение". Это означает, что вы можете запросить их по имени. Также обратите внимание, что у постов есть уникальные слизни. Так matt.png будет слизняк matt:)

function get_attachment_url_by_slug( $slug ) {
  $args = array(
    'post_type' => 'attachment',
    'name' => sanitize_title($slug),
    'posts_per_page' => 1,
    'post_status' => 'inherit',
  );
  $_header = get_posts( $args );
  $header = $_header ? array_pop($_header) : null;
  return $header ? wp_get_attachment_url($header->ID) : '';
}

И тогда вам просто нужно сделать следующее:

$header_url = get_attachment_url_by_slug('matt');

который вернет полный путь к вашему файлу.

Обратите внимание, что sanitize_title(); автоматически преобразует ваше имя в слизняк. Так что если вы загрузили файл с именем. Christmas is coming.pngWordPress обозначил бы это как слизняк christmas-is-coming, И если вы используете sanitize_title('Christmas is coming'); результат также будет christmas-is-coming и после этого вы можете получить полный URL.:)

Вы можете создать запрос к базе данных, взглянув на таблицу wp_posts, отфильтровав строки с помощью post_type = 'attachment', опционально post_mime_type, например, 'image/%' и guid, например, '%/$precontent'

Вам придется позаботиться о ситуациях, когда есть:

/wp-content/uploads/2011/01/matt.png
/wp-content/uploads/2011/02/matt.png

Полный URL-адрес изображения находится в столбце GUID. Вы можете разобрать это и получить то, что вам нужно.

      $args = array(
'post_type' => 'attachment', 
'post_status' => 'inherit',
'post_mime_type' => 'image',
's' => 'image_name.jpg'

); $ query_images = новый WP_Query($ args);

echo $query_images->post->guid;

Другие вопросы по тегам