Avertizare: urlencode() așteaptă parametrul 1 să fie string, dar a primit array și nu obțin rezultatul dorit

10 sept. 2014, 08:48:55
Vizualizări: 15.6K
Voturi: 2

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 ) );
     }
?>
0
Toate răspunsurile la întrebare 3
0

Î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'
10 sept. 2014 09:14:26
0

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

referință: http://php.net/manual/en/function.implode.php

15 oct. 2015 06:02:49
1
  • 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).

10 sept. 2014 09:16:52
Comentarii

Această bucată de cod este o funcție principală. Utilizarea incorectă a category_name declanșează eroarea. Eroarea este "incorect" referită la acel fișier specific pe care OP l-a menționat

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