Exécuter une requête SQL avec LIKE
Lyro-Pac
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
Lyro-Pac Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Lyro-Pac Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je suis un super débutant en PHP et Wordpress du coup je n'arrive pas à exécuter une seul requête(d'ailleurs c'est ma toute première sur Wordpress) oO . J'ai recherché sur les moteurs de recherche et j 'ai trouvé sur un site, un shortcode qui permet d'afficher une liste des article associent d'un même tag:
Le problème c'est que, je veux recuperer le titre de l' article active et afficher une liste des titres des articles comportent au moins le titre du post active + autre chose à l' aide d'un shortcode non pas une liste des article associent d'un même tag .
Exemple : Je veux afficher les tires(xxx 1, xxx 2, 3 xxx , 4 xxx, ... ,xxx N) quand je suis l'article xxx .
Et pour ça j' ai pu faire cette syntaxe SQl mais elle marche que sur MySql( et je ne sais pas comment la traduire correctement en wp_query ou autres chose)
et sur Wordpress j' ai pas pu faire grand chose car j 'ai tout simplement modifier la fonction précédente mais j'ai comme même fais une fonction qui ne retourne rien et le site plante complément :(
Si quelqu'un a déjà eu ce soucis ou connais le moyen de le regeler, je lui en serait vraiment très reconnaissant!
Merci en avance
Je suis un super débutant en PHP et Wordpress du coup je n'arrive pas à exécuter une seul requête(d'ailleurs c'est ma toute première sur Wordpress) oO . J'ai recherché sur les moteurs de recherche et j 'ai trouvé sur un site, un shortcode qui permet d'afficher une liste des article associent d'un même tag:
function related_posts_shortcode( $atts ) { extract(shortcode_atts(array( 'limit' => '1000', ), $atts)); global $wpdb, $post, $table_prefix; if ($post->ID) { $retval = '<ul>'; // Get tags $tags = wp_get_post_tags($post->ID); $tagsarray = array(); foreach ($tags as $tag) { $tagsarray[] = $tag->term_id; } $tagslist = implode(',', $tagsarray); // Do the query $q = "SELECT p.*, count(tr.object_id) as count FROM $wpdb->term_taxonomy AS tt, $wpdb->term_relationships AS tr, $wpdb->posts AS p WHERE tt.taxonomy ='post_tag' AND tt.term_taxonomy_id = tr.term_taxonomy_id AND tr.object_id = p.ID AND tt.term_id IN ($tagslist) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < NOW() GROUP BY tr.object_id ORDER BY count ASC, p.post_title ASC LIMIT $limit;"; $related = $wpdb->get_results($q); if ( $related ) { foreach($related as $r) { $retval .= ' <li position="centre"><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li> '; } } else { $retval .= ' <li>No related posts found</li> '; } $retval .= '</ul> '; return $retval; } return; } add_shortcode('related_posts', 'related_posts_shortcode');
Le problème c'est que, je veux recuperer le titre de l' article active et afficher une liste des titres des articles comportent au moins le titre du post active + autre chose à l' aide d'un shortcode non pas une liste des article associent d'un même tag .
Exemple : Je veux afficher les tires(xxx 1, xxx 2, 3 xxx , 4 xxx, ... ,xxx N) quand je suis l'article xxx .
Et pour ça j' ai pu faire cette syntaxe SQl mais elle marche que sur MySql( et je ne sais pas comment la traduire correctement en wp_query ou autres chose)
SELECT 'tt_posts'.'post_title' FROM 'tt_posts' WHERE 'tt_posts'.'post_title' LIKE '%xxx%' AND 'tt_posts'.'post_status' = 'publish'
et sur Wordpress j' ai pas pu faire grand chose car j 'ai tout simplement modifier la fonction précédente mais j'ai comme même fais une fonction qui ne retourne rien et le site plante complément :(
function asso_shortcode($atts) { extract(shortcode_atts(array( 'limit' => '1000', ), $atts)); global $wpdb, $post, $table_prefix; if ($post->ID) { $retval = '<ul>'; $ptitre= get_the_title(); $q = "SELECT COUNT(p.ID) FROM $wpdb->post AS p where p.post_title like '%$ptitre%' AND p.post_status = 'publish' , ORDER BY p.post_title ASC, LIMIT $limit;"; $related = $wpdb->get_results($q); if ( $related ) { foreach($related as $r) { $retval .= ' <li position="centre"><a title="'.wptexturize($r->post_title).'" href="'.get_permalink($r->ID).'">'.wptexturize($r->post_title).'</a></li> '; } } else { $retval .= ' <li>No related posts found</li> '; } $retval .= '</ul> '; return $retval; } return; } add_shortcode('asso', 'asso_shortcode');
Si quelqu'un a déjà eu ce soucis ou connais le moyen de le regeler, je lui en serait vraiment très reconnaissant!
Merci en avance
A voir également:
- Exécuter une requête SQL avec LIKE
- Voir like instagram - Guide
- Coco like - Accueil - Réseaux sociaux
- Logiciel sql - Télécharger - Bases de données
- Wawacity like - Accueil - Outils
- Comment supprimer un like sur facebook - Forum Facebook
6 réponses
j'ai du mal a comprendre ce que tu veux faire, les articles xxx, xxx1, xxx2 sont un seul et même article que tu as découpé en plusieurs a cause de sa longueur ?
D'abord merci d'avoir répondu et les article sont tous différents, peut-être si je vous donnes un autre exemple vous pourriez mieux comprendre:
Si je publie un article portant comme titre One Piece et que je l'insère un shortcode du genre [episode titre="one piece"] je veux qu'il me donne tout les épisodes de One Piece -> One Piece 1 vostfr, One Piece 2 vf , One Piece 3 vostfr,... et si de suite.
Si je publie un article portant comme titre One Piece et que je l'insère un shortcode du genre [episode titre="one piece"] je veux qu'il me donne tout les épisodes de One Piece -> One Piece 1 vostfr, One Piece 2 vf , One Piece 3 vostfr,... et si de suite.
Ce que tu décris revient a afficher une liste des articles en relation comme n'importe quel plugin related posts peut le faire
Salut, je sais que je peux utiliser un plugin mais la plus part des plugin utiliser les tags, les catégories et je veux pas ça c'est je veux, c'est de faire ma propre fonction que je peux la modifier. D'ailleurs si c'est possible de la créer :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question