WooFrance Dépannage et support WordPress WooCommerce › Forums › Forum de Support WooCommerce › Tri woocommerce sur requête SQL custom
- Ce sujet contient 1 réponse, 2 participants et a été mis à jour pour la dernière fois par Mathieu, le il y a 6 années et 10 mois.
-
AuteurMessages
-
13 janvier 2018 à 3 h 31 min #49018
Bonjour,
Pour une première question j’espère ne pas vous assommer 🙂
Donc voila mon problème, j’ai une requête SQL dans un plugin custom qui me permet de trier mes produit suivant la distance de l’utilisateur, si le produit à une image etc…
Celle-ci fonctionne parfaitement et me retourne un Array d’id de produits, jusque la pas de souci…
voici la requête :if ($atts['is_category'] == 'yes' && (int)$atts['category_id']) { $arrayCategorie = array(); $arrayCategorie[] = (int)$atts['category_id']; $str_ArrayChild = implode(',',$arrayCategorie); $querystr = "SELECT productid as post_id,( 3959 * acos(cos(radians('%f')) * cos( radians(latitude))* cos( radians( longitude ) - radians('%f'))+ sin(radians('%f'))* sin( radians(latitude)))) AS distance, {$wpdb->postmeta}.meta_value FROM {$wpdb->geo_location} JOIN {$wpdb->term_relationships} ON {$wpdb->geo_location}.productid = {$wpdb->term_relationships}.object_id LEFT JOIN {$wpdb->postmeta} ON {$wpdb->geo_location}.productid = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_thumbnail_id' AND {$wpdb->postmeta}.meta_value != '' WHERE {$wpdb->term_relationships}.term_taxonomy_id IN ($str_ArrayChild) HAVING distance < '%d' ORDER BY distance, {$wpdb->postmeta}.meta_value DESC "; } else { $querystr = "SELECT productid as post_id,( 3959 * acos(cos(radians('%f')) * cos( radians(latitude))* cos( radians( longitude ) - radians('%f'))+ sin(radians('%f'))* sin( radians(latitude)))) AS distance FROM {$wpdb->geo_location} HAVING distance < '%d' ORDER BY distance "; } $querystr = sprintf($querystr, floatval($latitude), floatval($longitude), floatval($latitude), $distance);
Je passe le rest edu code car je fait encore un autre traitement dessus, qui élague un peu les produits. Le problème arrive maintenant, j’utilise le shortcode de woocommerce pour afficher mes produit :
if($productArray1 > 0) { // View list of product based on road distance of user position do_shortcode('[products ids="' . xxxx . '" per_page="8" columns="4" pagination="true"]'); }
Et la bien sur mais produit ne sont plus trié ! j’ai beau ajouter OrderBy= » » etc, rien ni fait je perds mon custom sorting…
Ma question, comment afficher mes produits dans le bon ordre sans passer par le shortcode ?
Merci pour vos lumières 🙂
13 janvier 2018 à 8 h 38 min #49022Le shortcode « products » est obligatoirement trié donc une autre solution serait de faire une boucle qui affiche chaque produit individuellement avec le shortcode « product ».
Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici. -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.