Erreur avec un plugin wordpress
lou9
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'aimerai trouver la solution à un problème que je rencontre dans mon site wordpress local, on me signal:
Warning: in_array() expects parameter 2 to be array, string given in C:\wamp64\www\resrvation\wp-content\plugins\wc-multi-vendor-platform-lite\public\wcmvp-class-multivendor-platform-public.php on line 1994
voici la ligne de code :
EDIT : AJout des balises de code.
j'aimerai trouver la solution à un problème que je rencontre dans mon site wordpress local, on me signal:
Warning: in_array() expects parameter 2 to be array, string given in C:\wamp64\www\resrvation\wp-content\plugins\wc-multi-vendor-platform-lite\public\wcmvp-class-multivendor-platform-public.php on line 1994
voici la ligne de code :
function wcmvp_views_update() { if (is_single()) { $wcmvp_post_id = get_the_ID(); $wcmvp_id = [$wcmvp_post_id]; $wcmvp_cookie = (isset($_COOKIE['wcmvp_single_prod_view']) && !empty($_COOKIE['wcmvp_single_prod_view'])) ? sanitize_text_field(json_decode($_COOKIE['wcmvp_single_prod_view'])) : array(); if (isset($wcmvp_cookie) && !in_array($wcmvp_post_id, $wcmvp_cookie)) { $wcmvp_merged = array_merge($wcmvp_id, $wcmvp_cookie); array_unique($wcmvp_merged); setcookie("wcmvp_single_prod_view", json_encode($wcmvp_merged), time() + (86400 * 30)); $wcmvp_prod_meta = get_post_meta($wcmvp_post_id, 'wcmvp_product_view_count', true); if (!empty($wcmvp_prod_meta)) { $wcmvp_count_update = $wcmvp_prod_meta + 1; } else { $wcmvp_count_update = 1; } update_post_meta($wcmvp_post_id, 'wcmvp_product_view_count', $wcmvp_count_update); } } if (isset($_GET["wcmvp_order_id_csv"])) { $wcmvp_csv_orders = explode(",", sanitize_text_field($_GET["wcmvp_order_id_csv"])); } if (isset($wcmvp_csv_orders) && !empty($wcmvp_csv_orders)) { $this->wcmvp_create_csv($wcmvp_csv_orders); } }
EDIT : AJout des balises de code.
Configuration: Windows / Opera 77.0.4054.277
A voir également:
- Erreur avec un plugin wordpress
- Wordpress download - Télécharger - Blog & CMS
- Erreur 0x80070643 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Iptv erreur de lecture - Forum TV & Vidéo
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
2 réponses
Bonjour,
Ca serait sympa d'indiquer quelle est la ligne 1994 dans ton code plutôt que de nous laisser deviner où est l'erreur ;)
A priori, l'erreur semble venir de la ligne suivante :
-> la fonction array_merge() attends des tableaux en paramètres, or le 2e paramètre $wcmvp_cookie n'est pas un tableau si la variable $_COOKIE['wcmvp_single_prod_view'] est vide.
En effet lorsque tu initialises la variable $wcmvp_cookie avec ce code :
-> la variable $wcmvp_cookie sera bien un tableau si la variable $_COOKIE['wcmvp_single_prod_view'] est vide, dans le cas contraire cette variable va récupérer le retour de la fonction sanitize_text_field(), or cette dernière fonction retourne une chaine de caractère et non un tableau.
https://developer.wordpress.org/reference/functions/sanitize_text_field/
Au passage, ton code serait tellement plus lisible sur le forum avec les balises de code : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Bonne journée,
Ca serait sympa d'indiquer quelle est la ligne 1994 dans ton code plutôt que de nous laisser deviner où est l'erreur ;)
A priori, l'erreur semble venir de la ligne suivante :
$wcmvp_merged = array_merge($wcmvp_id, $wcmvp_cookie);
-> la fonction array_merge() attends des tableaux en paramètres, or le 2e paramètre $wcmvp_cookie n'est pas un tableau si la variable $_COOKIE['wcmvp_single_prod_view'] est vide.
En effet lorsque tu initialises la variable $wcmvp_cookie avec ce code :
$wcmvp_cookie = (isset($_COOKIE['wcmvp_single_prod_view']) && !empty($_COOKIE['wcmvp_single_prod_view'])) ? sanitize_text_field(json_decode($_COOKIE['wcmvp_single_prod_view'])) : array();
-> la variable $wcmvp_cookie sera bien un tableau si la variable $_COOKIE['wcmvp_single_prod_view'] est vide, dans le cas contraire cette variable va récupérer le retour de la fonction sanitize_text_field(), or cette dernière fonction retourne une chaine de caractère et non un tableau.
https://developer.wordpress.org/reference/functions/sanitize_text_field/
Au passage, ton code serait tellement plus lisible sur le forum avec les balises de code : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Bonne journée,
lou9
merci encore pitet, mais j'ai pas trop compris je suis pas très doué en code, donc si je comprends bien je dois ajouter ou remplacer avec ce code :
jordane45
Messages postés
38486
Date d'inscription
Statut
Modérateur
Dernière intervention
4 752
>
lou9
A noter que le message d'erreur indique un souci sur l'instruction in_array() et non sur array_merge()
Bonjour,
Déjà, merci d'utiliser les balise de code pour poster du code sur le forum.
Explications à lire entièrement, disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite :
Le !empty fait déjà un ISSET .. ce n'est donc pas utile de mettre les deux.
Et enfin, le message t'indique que tu ne retournes pas un array...
faudrait voir ce que fait ta fonction sanitize_text_field .. mais vu le nom .. je doute qu'elle retourne un array
n'aurais tu pas inversé l'ordre des fonctions ?
De plus, pour que le json_decode retourne un array, il faut lui passer un second paramètre à true
Déjà, merci d'utiliser les balise de code pour poster du code sur le forum.
Explications à lire entièrement, disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite :
Le !empty fait déjà un ISSET .. ce n'est donc pas utile de mettre les deux.
Et enfin, le message t'indique que tu ne retournes pas un array...
faudrait voir ce que fait ta fonction sanitize_text_field .. mais vu le nom .. je doute qu'elle retourne un array
n'aurais tu pas inversé l'ordre des fonctions ?
De plus, pour que le json_decode retourne un array, il faut lui passer un second paramètre à true
$wcmvp_cookie = !empty($_COOKIE['wcmvp_single_prod_view'])) ? json_decode(sanitize_text_field($_COOKIE['wcmvp_single_prod_view']),true) : array(); if (isset($wcmvp_cookie) && !in_array($wcmvp_post_id, $wcmvp_cookie)) {