Avertizare: urlencode() așteaptă parametrul 1 să fie string, dar a primit array și nu obțin rezultatul dorit
Avertizare: urlencode() așteaptă parametrul 1 să fie string, dar a primit array în
D:\xamppp\htdocs\sample\wp-includes\formatting.php
la linia 3690
Când încerc să transmit category_name
în query_post
,
<?php
$args=query_posts(
array(
'posts_per_page' => -1,
'category_name' =>array('Breaking News Stories', 'Call-out', 'Featured Story', 'Standard Stories')
));
?>
Primesc avertizarea de mai sus în fișierul formatting.php
.
Linia 3690 conține următorul cod:
<?php
function wp_basename( $path, $suffix = '' )
{
return urldecode( basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) );
}
?>

În primul rând, nu utilizați niciodată query_posts
. În schimb, folosiți WP_Query
pentru a construi interogarea personalizată, aceasta fiind metoda recomandată.
De asemenea, utilizați parametrul category_name
incorect. Dacă consultați documentația WP_Query
, aceasta precizează:
category_name (string) - utilizează slug-ul categoriei (NU numele).
Consultați exemplele din documentație, în secțiunea parametrilor categoriei.
EDITARE
Trebuie să faceți ceva de genul:
'category_name' => 'SLUG-UL Breaking News Stories, SLUG-UL Call-out, SLUG-UL Featured Story, SLUG-UL Standard Stories'

Răspuns foarte util de la Pieter Goosen. Am avut o problemă similară care a fost rezolvată prin utilizarea funcției implode pe array-ul nostru.
'category_name' => $my_array ? implode( ',', $my_array ) : '',

- Aceasta înseamnă că variabila
$path
este un array(). - Trebuie să extragi doar calea (o valoare de tip string) din ea.
- Poți folosi
print_r($path)
pentru a vedea ce valori conține.
De exemplu, dacă afișează ceva de genul Array([0] => calea/catre/fisier)
, va trebui să folosești urlencode($path[0])
în loc de urlencode($path)
.
