[RESOLU] comment convertir une requête wordpress en requête php

Mammouth du PHP | 506 Messages

05 déc. 2021, 12:16

bonjour a tous

est il possible de convertir cette requête de wordpress en requête php

Code : Tout sélectionner

global $wpdb; $ID_CATEGORY = 10; $query = $wpdb->prepare("SELECT {$wpdb->prefix}users.ID, {$wpdb->prefix}users.display_name as user_nicename, COUNT(*) as count FROM {$wpdb->prefix}posts, {$wpdb->prefix}users, {$wpdb->prefix}term_relationships WHERE {$wpdb->prefix}posts.post_type='post' AND {$wpdb->prefix}posts.post_status='publish' AND {$wpdb->prefix}posts.post_author = {$wpdb->prefix}users.ID AND {$wpdb->prefix}posts.ID = {$wpdb->prefix}term_relationships.object_id AND {$wpdb->prefix}term_relationships.term_taxonomy_id = %d GROUP BY post_author ORDER BY count DESC LIMIT 5 ;", $ID_CATEGORY); $results = $wpdb->get_results($query, OBJECT);

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 déc. 2021, 16:11

Cette requête est déjà en PHP (et SQL)
Qu'est-ce que tu cherches à faire exactement ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 506 Messages

05 déc. 2021, 16:37

bonjour
merci de l aide
pour l instant cette requête fonctionne sur mon site wordpress
Mais j aurais souhaiter copier coller le code et le mettre dans une page de mon site en php qui ne possède pas de base de donnée

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 déc. 2021, 16:54

Il faut que tu te connectes à la base de données utilisées par wordpress, et ensuite tu effectues la requête avec PDO (c'est la même requête mais il ne faut pas oublier de définir les variables comme $wpdb->prefix.


Sinon tu peux peut être regarder aussi du côté de l'API de Wordpress pour voir si il ne serait pas possible de récupérer facilement ce que tu veux via un simple appel REST
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 506 Messages

05 déc. 2021, 17:14

Merci @rthur pour ton aide
j'ai bien réussi a me connecter a la base de donnée de wordpress avec PDO
attention je suis nul ...donc c'est déjà un défit ...
j'ai également redéfini les variables

Code : Tout sélectionner

global $wpdb; $ID_CATEGORY = 10; $query = $wpdb->prepare("SELECT wp_users.ID, wp_users.display_name as user_nicename, COUNT(*) as count FROM wp_posts, wp_users, wp_term_relationships WHERE wp_posts.post_type='post' AND wp_posts.post_status='publish' AND wp_posts.post_author = wp_users.ID AND wp_posts.ID = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = 10 GROUP BY post_author ORDER BY count DESC LIMIT 5 ;", $ID_CATEGORY); $results = $wpdb->get_results($query, OBJECT);
et mon code complet est ceci mais la page refuse de s afficher

Code : Tout sélectionner

<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); try{ $bdd =new PDO("mysql:host=localhost;dbname=;charset=utf8", "", ""); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } global $bdd; $ID_CATEGORY = 10; $query = $bdd;->prepare("SELECT wp_users.ID, wp_users.display_name as user_nicename, COUNT(*) as count FROM wp_posts, wp_users, wp_term_relationships WHERE wp_posts.post_type='post' AND wp_posts.post_status='publish' AND wp_posts.post_author = wp_users.ID AND wp_posts.ID = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = 10 GROUP BY post_author ORDER BY count DESC LIMIT 5 ;", $ID_CATEGORY); $results = $bdd;->get_results($query, OBJECT);; if (!empty($results)) { //echo '<ul>'; echo'<div style="background-color: #ffffff;text-align:center;"><h2>Les sorties de pêche </h2></div>'; echo'<div style="width: 100%; height: 50px; overflow-y: scroll; scrollbar-color: rebeccapurple green; scrollbar-width: thin; background-color: #ffffff; margin-bottom: 0.25em; text-align:center; padding-left: 10px;">'; foreach ($results as $value) { //echo '<li>'; printf(_n('le membre <font color="#FF0527"><strong>%2$s </strong></font>a déjà posté <font color="#FF0527"><strong>%1$s </strong></font>journée de pêche', 'le membre <font color="#FF0527"><strong>%2$s</strong></font> a déjà posté <font color="#FF0527"><strong>%1$s </strong></font>journées de pêche', $value->count, 'text-domain'), number_format_i18n($value->count), $value->user_nicename); //echo '</li>'; echo'<br>'; } //echo '</ul>'; echo'</div>'; } ?>

Mammouth du PHP | 506 Messages

05 déc. 2021, 18:33

je viens a présent d essayer ceci
mais j ai cette erreur
Fatal error: Uncaught Error: Function name must be a string in /home/u434600775/domains/pecheperle.be/public_html/phil/afficher-journee-total-pecheur.php:16 Stack trace: #0 {main} thrown in /home/u434600775/domains/pecheperle.be/public_html/phil/afficher-journee-total-pecheur.php on line 16

Code : Tout sélectionner

<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); try{ $bdd =new PDO("mysql:host=localhost;dbname=;charset=utf8", "", ""); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } global $bdd; $ID_CATEGORY = 10; $query = $bdd("SELECT wp_users.ID, wp_users.display_name as user_nicename, COUNT(*) as count FROM wp_posts, wp_users, wp_term_relationships WHERE wp_posts.post_type='post' AND wp_posts.post_status='publish' AND wp_posts.post_author = wp_users.ID AND wp_posts.ID = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = %d GROUP BY post_author ORDER BY count DESC LIMIT 5 ;", $ID_CATEGORY); $results = $bdd->get_results($query, OBJECT); if (!empty($results)) { //echo '<ul>'; echo'<div style="background-color: #ffffff;text-align:center;"><h2>Les sorties de pêche </h2></div>'; echo'<div style="width: 100%; height: 50px; overflow-y: scroll; scrollbar-color: rebeccapurple green; scrollbar-width: thin; background-color: #ffffff; margin-bottom: 0.25em; text-align:center; padding-left: 10px;">'; foreach ($results as $value) { //echo '<li>'; printf(_n('le membre <font color="#FF0527"><strong>%2$s </strong></font>a déjà posté <font color="#FF0527"><strong>%1$s </strong></font>journée de pêche', 'le membre <font color="#FF0527"><strong>%2$s</strong></font> a déjà posté <font color="#FF0527"><strong>%1$s </strong></font>journées de pêche', $value->count, 'text-domain'), number_format_i18n($value->count), $value->user_nicename); //echo '</li>'; echo'<br>'; } //echo '</ul>'; echo'</div>'; } ?>

Mammouth du PHP | 506 Messages

06 déc. 2021, 06:01

voila c est réglé , j avais la requete devant les yeux