Предупреждение: urlencode() ожидает строку, передан массив, и не получен желаемый результат
Warning: urlencode() ожидает параметр 1 в виде строки, передан массив в
D:\xamppp\htdocs\sample\wp-includes\formatting.phpна строке 3690
Когда я пытаюсь передать category_name в query_post,
<?php
$args=query_posts(
array(
'posts_per_page' => -1,
'category_name' =>array('Breaking News Stories', 'Call-out', 'Featured Story', 'Standard Stories')
));
?>
Я получаю указанное выше предупреждение в файле formatting.php.
Строка 3690 содержит следующий код:
<?php
function wp_basename( $path, $suffix = '' )
{
return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) );
}
?>
Прежде всего, никогда не используйте query_posts. Вместо этого используйте WP_Query для создания собственного запроса, что является предпочтительным способом.
Вы также неправильно используете параметр category_name. Если вы посмотрите документацию по WP_Query, там указано:
category_name (string) - используйте slug категории (НЕ название).
Ознакомьтесь с примерами в документации в разделе параметров категорий.
ОБНОВЛЕНИЕ
Вам нужно сделать что-то вроде этого:
'category_name' => 'SLUG-новостей, SLUG-анонсов, SLUG-избранных-историй, SLUG-стандартных-историй'
Очень полезный ответ от Pieter Goosen. У меня была похожая проблема, которая решилась с помощью объединения массива в строку.
'category_name' => $my_array ? implode( ',', $my_array ) : '',
- Это означает, что переменная
$pathявляется массивом array(). - Вам нужно извлечь только путь (строковое значение) из него.
- Вы можете использовать
print_r($path), чтобы увидеть, какие значения он содержит.
Например, если отображается что-то вроде этого Array([0] => путь/к/файлу), вам нужно использовать urlencode($path[0]) вместо urlencode($path).