Предупреждение: 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 ) );
     }
?>
Author: Pieter Goosen, 2014-09-10

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'
 4
Author: Pieter Goosen, 2014-09-10 06:26:24

Очень полезный ответ Питера Гусена. Была аналогичная проблема, которая была устранена путем разрушения нашего массива.

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

Ссылка: http://php.net/manual/en/function.implode.php

 2
Author: dj.cowan, 2015-10-15 03:02:49
  • Это означает, что переменная $path является массивом().
  • Вам нужно извлечь из него только путь (строковое значение).
  • Вы можете сделать print_r($path), чтобы увидеть, какие значения он содержит.

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

 0
Author: Domain, 2014-09-10 06:16:52