get_post_meta всегда возвращает массив - PullRequest
0 голосов
/ 11 декабря 2011

Я использую следующий код для включения оператора if / else.

<?php
$types = array('.pdf', '.doc', '.xls');
$filename = array(get_post_meta($post->ID, 'mjwlink-url', TRUE));
if(0 < count(array_intersect(array_map('strtolower', $filename), $types))) {
   echo 'One';
} else {
   echo var_dump($filename);
}?>

Проблема, с которой я столкнулся, заключается в том, что get_post_meta всегда возвращает массив в формате, даже когда для $ single установлено значение true

array(1) { [0]=> string(34) "http://www.crimeandjustice.org.uk/" }

Любая помощь приветствуется.

1 Ответ

5 голосов
/ 11 декабря 2011

Он всегда возвращает массив, потому что вы выполняете функцию get_post_meta в языковой конструкции array. Согласно Wordpress Codex get_post_meta будет не возвращать массив, если третий параметр установлен в true. Поэтому поменяйте местами:

$filename = array(get_post_meta($post->ID, 'mjwlink-url', TRUE));

до

$filename = get_post_meta($post->ID, 'mjwlink-url', TRUE);

Просто из любопытства логика в операторе if будет работать только с массивом, если вы удалите конструкцию array, ваш оператор if завершится неудачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...