Errore: urlencode() si aspetta una stringa come parametro 1, ma viene fornito un array e non si ottiene l'output desiderato
Warning: urlencode() expects parameter 1 to be string, array given in
D:\xamppp\htdocs\sample\wp-includes\formatting.php
on line 3690
Quando provo a passare category_name
in query_post
,
<?php
$args=query_posts(
array(
'posts_per_page' => -1,
'category_name' =>array('Breaking News Stories', 'Call-out', 'Featured Story', 'Standard Stories')
));
?>
Ottengo l'errore sopra nel file formatting.php
.
La riga 3690 contiene questo codice:
<?php
function wp_basename( $path, $suffix = '' )
{
return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) );
}
?>

Prima di tutto, non usare mai query_posts
. Piuttosto utilizza WP_Query
per costruire la tua query personalizzata, che è il metodo preferito
Stai anche usando il parametro category_name
in modo sbagliato. Se guardi la documentazione di WP_Query
, dice:
category_name (string) - usa lo slug della categoria (NON il nome).
Vai a vedere gli esempi forniti nella documentazione sotto i parametri delle categorie
MODIFICA
Devi fare qualcosa del genere
'category_name' => 'SLUG-DI Breaking News Stories, SLUG-DI Call-out, SLUG-DI Featured Story, SLUG-DI Standard Stories'

Risposta molto utile di Pieter Goosen. Avevo un problema simile che è stato risolto concatenando il nostro array.
'category_name' => $my_array ? implode( ',', $my_array ) : '',

- Questo significa che la variabile
$path
è un array(). - Devi estrarre solo il percorso (un valore stringa) da esso.
- Puoi usare
print_r($path)
per vedere quali valori contiene.
Ad esempio, se mostra qualcosa come Array([0] => percorso/al/file)
, dovrai usare urlencode($path[0])
invece di urlencode($path)
.
