Предупреждение: 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)
.
