Snelle tip Populaire berichten op aantal opmerkingen SQL-query in WordPress

Het is je misschien opgevallen dat de Tuts + -sites een sectie hebben op de startpagina waar we de populairste berichten van de maand weergeven, afhankelijk van het aantal reacties. Hoewel er talloze plug-ins beschikbaar zijn, is het altijd het beste om de code zelf te schrijven als je kunt. Te veel abstractie is nooit een goede zaak! Gelukkig, als we eenmaal leren hoe we de database van WordPress kunnen bevragen, worden taken zoals deze een makkie!


Abonneer u op onze YouTube-pagina om alle videozelfstudies te bekijken!

Bekijk deze video liever op Screenr?


De SQL-query

Om de database van WordPress te doorzoeken, kunnen we de $ Wpdb-> get_results () methode. Als parameter geven we eenvoudigweg een SQL-query door. Laten we in dit specifieke voorbeeld stellen dat we alleen een lijst met populaire berichten in onze zijbalk willen weergeven. We kunnen de volgende query gebruiken:

 $ pop = $ wpdb-> get_results ("SELECT ID, post_title, comment_count FROM $ wpdb-> prefix posts WHERE post_type =" post "ORDER BY comment_count DESC LIMIT 10");

id, post_title, en COMMENT_COUNT onze kolommen binnen de database.

Omdat WordPress u in staat stelt een aangepast voorvoegsel in te stellen voor uw databasetabellen, moeten we dat prefix dynamisch ophalen, door gebruik te maken van Wpdb-> prefix berichten. In dit geval resulteert dat in "Wp_posts". Vervolgens moeten we ervoor zorgen dat we alleen berichten weergeven, en niet iets anders, zoals bijlagen of pagina's. Eindelijk, we ORDER BY comment_count. Dat is het punt van dit alles toch? Toon de meest becommentarieerde berichten?

Nu onze SQL-query is uitgevoerd, kunnen we eenvoudig een foreach-instructie gebruiken om de resultaten te filteren en deze op de pagina weer te geven.

 $ pop = $ wpdb-> get_results ("SELECT ID, post_title, comment_count FROM $ wpdb-> prefix posts WHERE post_type =" post "ORDER BY comment_count DESC LIMIT 10"); foreach ($ pop als $ post):?> 
  • POST_TITLE; ?>
  • Houd er rekening mee dat de variabele $ post toegang heeft tot alle kolommen die we hebben opgehaald. In ons geval zouden we toegang hebben tot:

    • $ post-> id: De id van de post
    • $ post-> post_title: De titel van de post
    • $ post-> comment_count: Het aantal reacties voor dat specifieke bericht.

    Als je permalink nodig hebt, kun je ook SELECT in de kolom "guid" selecteren, of je kunt gewoon de get_permalink ($ post-> id) methode en geef de ID van het bericht dienovereenkomstig door.

    Als je eenmaal hebt geleerd hoe je rechtstreeks contact kunt maken met de WordPress-database, heb je dan veel macht tot je beschikking; dit is slechts het topje van de ijsberg!


    Nog een ding

    Deze zelfstudie is gemaakt om te demonstreren hoe specifiek de tabellen van WordPress in de database kunnen worden opgevraagd. Eerlijk gezegd, vanaf WordPress 2.9 kun je dit exacte effect bereiken door query_posts () en passing te gebruiken orderby = "COMMENT_COUNT'. Maar onthoud, het komt allemaal neer op hetzelfde: een SQL-query doorgeven aan de database.

    Nog vragen? Bedankt voor het bekijken of lezen!