WordPress : Attention : count() : problème de syntaxe de la fonction count()
J’essaie de réparer une fonction qui fonctionnait correctement avant de passer à php 7.2. L’erreur vient de la fonction count() mais je ne sais pas comment la réécrire. Pouvez-vous m’aider ?
Voici le message d’erreur : Attention : count() : Le paramètre doit être un tableau ou un objet qui implémente Countable in…
Cette fonction fait partie du code pour afficher une page au-dessus d’une catégorie.
- is_category : si la page actuelle est une catégorie
- id : identifiant de la catégorie
- title : Titre de la catégorie
private function get_category($id_cat = false){
$Category = new stdClass();
$Category->is_category = false;
$Category->id = 0;
$Category->title = '';
if (( is_category())||(is_tax('portfolio_categories'))) {
$Category->is_category = true;
}
if ($id_cat === false) {
$cat = single_cat_title("",false);
}
else{
if ( (int) $id_cat > 0) {
$cat = get_cat_name($id_cat);
}
else{
return $Category;
}
}
$page_id = false;
$titre_page = sanitize_title($cat);
global $wpdb;
$req = $wpdb->prepare("SELECT ID FROM {$wpdb->prefix}posts WHERE post_name=%s AND post_content != '' AND post_type = 'page' AND post_status = 'publish'", $titre_page);
$page = $wpdb->get_row($req);
$Category->id = (count($page) > 0) ? $page->ID : 0;
$Category->title = $titre_page;
return $Category;
}
Je ne suis pas un développeur php, alors merci pour votre indulgence
Solution n°1 trouvée
Essayez de remplacer ceci dans le code d’origine :
$page = $wpdb->get_row($req);
avec ça:
$page = $wpdb->get_row($req, ARRAY_A);
Cela lui fera retourner un tableau au lieu d’un objet.
Ensuite, vous pouvez suivre ceci:
if ($page && isset($page['ID'])) {
$category->id = $page['ID'];
} else {$category->id = 0;}
Solution n°2 trouvée
J’ai remplacé la ligne incriminée
$Catégorie->id = (count($page) > 0) ? $page->ID : 0;
avec
si (asset($page)){ $Catégorie->id = $page->ID ; } autre { $Catégorie->id = 0 ; }
Je ne suis pas sûr de la syntaxe, mais ça marche
Documentation : [https://www.php.net/manual/fr/function.count.php][1]
0 commentaire