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.0.2

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

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *