Предупреждение: urlencode() ожидает, что параметр 1 будет строкой, массивом, заданным в и не получающим предпочтительный вывод
Предупреждение: 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 ) );
}
?>
3 answers
Прежде всего, никогда не используйте query_posts
. Скорее используйте WP_Query
чтобы создать свой пользовательский запрос, который является предпочтительным способом
Вы также неправильно используете параметр category_name
. Если вы посмотрите на документацию WP_Query
, в ней говорится
Имя_категории (строка) - используйте слиток категории (НЕ имя).
Перейдите и посмотрите на примеры, приведенные в документации в разделе параметры категории
РЕДАКТИРОВАТЬ
Вам необходимо сделайте что-нибудь подобное
'category_name' => 'SLUG OF Breaking News Stories, SLUG OF Call-out, SLUG OF Featured Story, SLUG OF Standard Stories'
Очень полезный ответ Питера Гусена. Была аналогичная проблема, которая была устранена путем разрушения нашего массива.
'category_name' => $my_array ? implode( ',', $my_array ) : '',
- Это означает, что переменная
$path
является массивом(). - Вам нужно извлечь из него только путь (строковое значение).
- Вы можете сделать
print_r($path)
, чтобы увидеть, какие значения он содержит.
Например, если он показывает что-то вроде этого Array([0] => path/to/file)
, вам нужно будет использовать urlencode($path[0])
вместо urlencode($path)
.