Advertencia: urlencode() espera que el parámetro 1 sea string, se proporcionó un array y no se obtiene el resultado deseado

10 sept 2014, 08:48:55
Vistas: 15.6K
Votos: 2

Advertencia: urlencode() espera que el parámetro 1 sea string, se proporcionó un array en D:\xamppp\htdocs\sample\wp-includes\formatting.php en la línea 3690

Cuando intento proporcionar el parámetro category_name en query_post:

<?php
   $args=query_posts(
    array(
     'posts_per_page' => -1,
   'category_name' =>array('Breaking News Stories', 'Call-out', 'Featured Story', 'Standard Stories')
  ));
 ?>

Aparece la advertencia mencionada en el archivo formatting.php. La línea 3690 contiene el siguiente código:

<?php
   function wp_basename( $path, $suffix = '' )
     {
      return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) );
     }
?>
0
Todas las respuestas a la pregunta 3
0

En primer lugar, nunca uses query_posts. En su lugar, utiliza WP_Query para construir tu consulta personalizada, que es la forma preferida.

También estás usando incorrectamente el parámetro category_name. Si revisas la documentación de WP_Query, se indica:

category_name (string) - usa el slug de la categoría (NO el nombre).

Revisa los ejemplos proporcionados en la documentación bajo los parámetros de categoría.

EDITADO

Necesitas hacer algo como esto:

'category_name' => 'SLUG-DE-Noticias-Destacadas, SLUG-DE-Llamado, SLUG-DE-Historia-Destacada, SLUG-DE-Historias-Estandar'
10 sept 2014 09:14:26
0

Respuesta muy útil de Pieter Goosen. Tenía un problema similar que se solucionó al unir nuestro array.

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

ref: http://php.net/manual/en/function.implode.php

15 oct 2015 06:02:49
1
  • Esto significa que la variable $path es un array().
  • Debes extraer solo la ruta (un valor de tipo string) de ella.
  • Puedes hacer print_r($path) para ver qué valores contiene.

Por ejemplo, si muestra algo como esto Array([0] => ruta/al/archivo), necesitarás usar urlencode($path[0]) en lugar de urlencode($path).

10 sept 2014 09:16:52
Comentarios

Ese fragmento de código es una función central. El uso incorrecto de category_name está provocando el error. El error está "incorrectamente" referenciado a ese archivo específico que el OP ha mencionado

Pieter Goosen Pieter Goosen
10 sept 2014 09:21:47