Advertencia: urlencode() espera que el parámetro 1 sea string, se proporcionó un array y no se obtiene el resultado deseado
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 ) );
}
?>

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'

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 ) : '',

- 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)
.
