is_local_attachment()WP 2.0.0

Является ли переданный URL страницей вложения (файла медиатеки WordPress) текущего сайта.

Работает на основе: url_to_postid()
1 раз — 0.001947 сек (очень медленно) | 50000 раз — 80.64 сек (очень медленно) | PHP 7.0.5, WP 4.4.2

Хуков нет.

Возвращает

true|false.

Использование

if( is_local_attachment( $url ) ){
	// это файл из медиатеки WordPress
}
$url(строка) (обязательный)
URL, который нужно проверить.

Примеры

0

#1 Проверим URL - вложение ли это

Допустим, у нас есть ссылка на файл который находится в медиатеке wordpress: http://example.com/wp-content/uploads/2016/03/import.png и у этого файл также есть своя страница во фронте: http://wp-kama.ru/import:

is_local_attachment('http://example.com/wp-content/uploads/2016/03/import.png'); //> false

is_local_attachment('http://example.com/import'); //> true

// несуществующий файл
is_local_attachment('http://example.com/fooo'); //> false

Список изменений

С версии 2.0.0 Введена.

Код is_local_attachment() WP 6.4.3

function is_local_attachment( $url ) {
	if ( ! str_contains( $url, home_url() ) ) {
		return false;
	}
	if ( str_contains( $url, home_url( '/?attachment_id=' ) ) ) {
		return true;
	}

	$id = url_to_postid( $url );
	if ( $id ) {
		$post = get_post( $id );
		if ( 'attachment' === $post->post_type ) {
			return true;
		}
	}
	return false;
}