Предупреждение: urlencode() ожидает строку, передан массив, и не получен желаемый результат

10 сент. 2014 г., 08:48:55
Просмотры: 15.6K
Голосов: 2

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 ) );
     }
?>
0
Все ответы на вопрос 3
0

Прежде всего, никогда не используйте query_posts. Вместо этого используйте WP_Query для создания собственного запроса, что является предпочтительным способом.

Вы также неправильно используете параметр category_name. Если вы посмотрите документацию по WP_Query, там указано:

category_name (string) - используйте slug категории (НЕ название).

Ознакомьтесь с примерами в документации в разделе параметров категорий.

ОБНОВЛЕНИЕ

Вам нужно сделать что-то вроде этого:

'category_name' => 'SLUG-новостей, SLUG-анонсов, SLUG-избранных-историй, SLUG-стандартных-историй'
10 сент. 2014 г. 09:14:26
0

Очень полезный ответ от Pieter Goosen. У меня была похожая проблема, которая решилась с помощью объединения массива в строку.

'category_name' => $my_array ? implode( ',', $my_array ) : '',

источник: http://php.net/manual/en/function.implode.php

15 окт. 2015 г. 06:02:49
1
  • Это означает, что переменная $path является массивом array().
  • Вам нужно извлечь только путь (строковое значение) из него.
  • Вы можете использовать print_r($path), чтобы увидеть, какие значения он содержит.

Например, если отображается что-то вроде этого Array([0] => путь/к/файлу), вам нужно использовать urlencode($path[0]) вместо urlencode($path).

10 сент. 2014 г. 09:16:52
Комментарии

Этот фрагмент кода является основной функцией. Неправильное использование category_name вызывает ошибку. Ошибка "некорректно" относится к конкретному файлу, который указал автор вопроса

Pieter Goosen Pieter Goosen
10 сент. 2014 г. 09:21:47