{"id":27510,"date":"2019-10-23T06:29:58","date_gmt":"2019-10-23T04:29:58","guid":{"rendered":"https:\/\/kinsta.com\/?p=54548"},"modified":"2023-05-22T14:06:16","modified_gmt":"2023-05-22T12:06:16","slug":"wordpress-get_posts","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/","title":{"rendered":"WordPress get_posts: hoe je deze nuttige PHP-functie gebruikt om berichtenlijsten te maken"},"content":{"rendered":"<p>WordPress <code>get_posts<\/code> is een handige functie waarmee <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-ontwikkelaar-huren\/\" target=\"_blank\" rel=\"noopener noreferrer\">ontwikkelaars<\/a> content uit de <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-database\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress-database<\/a> kunnen ophalen. Je kunt op gedetailleerd niveau aangeven naar welke berichten, pagina&#8217;s en <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-custom-post-types\/\" target=\"_blank\" rel=\"noopener noreferrer\">aangepaste berichtentypes<\/a> je op zoek bent, je eigen set aan resultaten krijgen en vervolgens de items filteren en ordenen zoals een echte PHP\/MySQL-expert.<\/p>\n<p>Maar laat dit je niet afschrikken als je geen PHP professional bent. Er zijn honderden <a href=\"https:\/\/kinsta.com\/nl\/blog\/php-tutorials\/\">PHP tutorials die je kan kijken of lezen<\/a> om de taal te leren. Het enige wat je nodig hebt is basale <a href=\"https:\/\/kinsta.com\/nl\/blog\/is-php-dood\/\" target=\"_blank\" rel=\"noopener noreferrer\">kennis van PHP<\/a> om op maat gemaakte lijsten met berichten te maken die op je website worden weergegeven. De functie <code>get_posts<\/code> houdt namelijk een reeks parameters bij die het mogelijk maken om eenvoudige of geavanceerde zoekopdrachten te bouwen.<\/p>\n<p>Het gebruik van WordPress <code>get_posts<\/code> is een proces bestande uit twee stappen:<\/p>\n<ul>\n<li>Je moet eerst je eigen zoekopdracht bouwen. Deze zal er trouwens niet uitzien als een MySQL-query en je hoeft geen <code>SELECT<\/code>-verklaring te gebruiken. Je moet alleen een reeks parameters defini\u00ebren en deze doorgeven aan de <code>get_posts<\/code>-functie. WordPress zet die reeks om in een echte en <strong>veilige<\/strong> MySQL-query, vergelijkt deze met de database en stuurt een reeks berichten terug.<\/li>\n<li>Ten tweede moet je het resultaat doorkruisen (in het Engels: traverse) dat door <code>get_posts<\/code> in een <em>foreach cycle<\/em> wordt teruggestuurd.<\/li>\n<\/ul>\n<p>Dat gezegd hebbende, zullen we in dit artikel eerst de belangrijkste onderdelen van deze functie bekijken, in het bijzonder hoe <code>get_posts<\/code> werkt, hoe we een aangepaste zoekopdracht kunnen bouwen en hoe we de gegevens op de front-end van de site kunnen laten zien.<br \/>\nVervolgens zal ik een voorbeeld uit de praktijk geven met code die je kunt kopi\u00ebren, bewerken en gebruiken in je testomgeving voor tests en ontwikkeling.<\/p>\n<p>Opmerking: We maken meestal onderscheid tussen berichten, pagina&#8217;s en aangepaste berichttypes. In dit artikel <strong>gebruiken we de term <em>&#8216;berichten&#8217;<\/em> voor reguliere blogberichten, maar ook voor pagina&#8217;s en aangepaste berichttypes<\/strong>. Al deze soorten berichten worden opgeslagen in de tabel <em>&#8216;wp_posts&#8217;<\/em> van de database. Het belangrijkste verschil tussen de berichttypes zit in de waarde van het veld <em>&#8216;post_type&#8217;<\/em>. <strong>Vanuit het perspectief van een ontwikkelaar zijn berichten, pagina&#8217;s en aangepaste berichttypes allemaal berichten<\/strong>.<\/p>\n<ul>\n<li><a href=\"#get-posts\">Inleiding tot de get_posts-functie in WordPress<\/a><\/li>\n<li><a href=\"#parameters\">Hoe je Reeksen bouwt met get_posts-parameters<\/a><\/li>\n<li><a href=\"#display\">Hoe je get_posts-gegevens weergeeft<\/a><\/li>\n<li><a href=\"#example\">Voorbeeld uit de Praktijk: een Aangepaste Berichtenlijst met een shortcode weergeven<\/a><\/li>\n<\/ul>\n<h2 id=\"get-posts\">Inleiding tot de get_posts-functie in WordPress<\/h2>\n<p>De Codex beschrijft <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_posts\/\">de <code>get_posts<\/code> functie<\/a> als volgt:<\/p>\n<blockquote><p>Haalt een reeks van de meest recente berichten op of berichten die aan de opgegeven criteria voldoen.<\/p><\/blockquote>\n<p>We kunnen <code>get_posts<\/code> deze manier gebruiken:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'numberposts'\t=&gt; 20,\n\t'category'\t\t=&gt; 4\n);\n$my_posts = get_posts( $args );\n\nif( ! empty( $my_posts ) ){\n\t$output = '&lt;ul&gt;';\n\tforeach ( $my_posts as $p ){\n\t\t$output .= '&lt;li&gt;&lt;a href=\"' . get_permalink( $p-&gt;ID ) . '\"&gt;' \n\t\t. $p-&gt;post_title . '&lt;\/a&gt;&lt;\/li&gt;';\n\t}\n\t$output .= '&lt;ul&gt;';\n}<\/code><\/pre>\n<p>De functie hierboven haalt de laatste 20 blogberichten op in de specifieke categorie (standaard is <code>'post'<\/code> het <code>'post_type'<\/code>) en geeft een reeks van <code>$post<\/code>-objecten terug. Je kan de reeks itereren om de berichten op het scherm weer te geven. Vrij simpel toch?<\/p>\n<p><code>get_posts<\/code> <a href=\"https:\/\/kinsta.com\/blog\/wp-query\/\">gebruikt <code>WP_Query<\/code><\/a> om berichtenitems op te halen en houdt een reeks van dezelfde parameters beschikbaar in <code>WP_Query<\/code> (op enkele uitzonderingen na). We hebben dus een enorme lijst van variabelen tot onze beschikking om onze op maat gemaakte query\u2019s op te stellen. Deze parameters zijn gegroepeerd in de volgende <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/#parameters\">15 categorie\u00ebn<\/a>:<\/p>\n<ul>\n<li>Auteurparameters<\/li>\n<li>Categorieparameters<\/li>\n<li>Tag-parameters<\/li>\n<li>Taxonomieparameters<\/li>\n<li>Zoekparameters<\/li>\n<li>Bericht- &#038; paginaparameters<\/li>\n<li>Wachtwoordparameters<\/li>\n<li>Berichttype-parameters<\/li>\n<li>Sorteer- &#038; sorteer op-parameters<\/li>\n<li>Datumparameters<\/li>\n<li>Aangepast veld (post meta)-parameters<\/li>\n<li>Toestemmingparameters<\/li>\n<li>Mimetype-parameters<\/li>\n<li>Caching-parameters<\/li>\n<li>Retourvelden-parameter<\/li>\n<\/ul>\n<p>Als je deze bovenstaande lijst zo bekijkt, krijg je een idee van de verscheidenheid van aangepaste reeksen die je kunt bouwen en draaien in de WordPress-database. Laten we dieper in deze zoekparameters duiken en onze berichtenlijsten gaan bouwen.<\/p>\n<h2 id=\"parameters\">Hoe je Reeksen Bouwt met get_posts-parameters<\/h2>\n<p>Elke categorie van parameters heeft betrekking tot dezelfde informatie. We kunnen bijvoorbeeld een zoekopdracht bouwen om berichten van een specifieke auteur(s) op te halen of om specifieke auteur(s) uit te sluiten, waarbij we de auteur defini\u00ebren op ID of nicename. Op dezelfde manier kunnen we reeksen bouwen die berichten ophalen per categorie, tag, taxonomie, datum, aangepaste velden en nog meer.<\/p>\n<h3>Hoe je Parameters Gebruikt om Eenvoudige Zoekopdrachten te bouwen<\/h3>\n<p>Veel parameters kunnen op een vergelijkbare manier worden gebruikt, ongeacht de categorie waartoe ze behoren. Zo vragen de volgende parameters de database om een zoekopdracht van auteur(s) van de post:<\/p>\n<ul>\n<li><code>author<\/code> (<em>int<\/em>) \u2013 auteur ID<\/li>\n<li><code>author_name<\/code> (<em>string<\/em>) \u2013 <code>user_nicename<\/code> van de auteur<\/li>\n<li><code>author__in<\/code> (<em>array<\/em>) \u2013 een reeks van meerdere auteurs-ID&#8217;s<\/li>\n<li><code>author__not_in<\/code> (<em>array<\/em>) \u2013 een reeks van meerdere auteurs-ID&#8217;s die moeten worden uitgesloten van het resultaat.<\/li>\n<\/ul>\n<p>Hoe kunnen we deze parameters gebruiken?<\/p>\n<p>In het volgende voorbeeld geeft de parameter <code>'author'<\/code>\u00a0aan dat we de meest recente blogberichten van de auteur met ID = 1 willen hebben:<\/p>\n<pre><code class=\"language-php\">$my_posts = get_posts( array( 'author' =&gt; 1 ) );<\/code><\/pre>\n<p>Dezelfde <em>&#8216;auteur&#8217;<\/em>-parameter maakt het mogelijk om de database te laten zoeken op verschillende manieren:<\/p>\n<pre><code class=\"language-php\">\/\/ return an array of posts from specific authors\n$my_posts = get_posts( array( 'author' =&gt; '1,5,12' ) );<\/code><\/pre>\n<pre><code class=\"language-php\">\/\/ return an array of posts excluding the specified author\n$my_posts = get_posts( array( 'author' =&gt; -1 ) );<\/code><\/pre>\n<p>Dus, afhankelijk van de waarde van de parameter, heb je een resultaat dat is ingesteld met berichten van \u00e9\u00e9n enkele auteur (integer\/geheel getal), van meerdere auteurs (een lijst van komma-gescheiden waarden) of exclusief een auteur (negatieve waarden).<\/p>\n<p>Andere parameters zorgen voor extra flexibiliteit. Zo geeft de volgende query voor <code>get_posts<\/code> een reeks van de laatste blogberichten van meerdere auteurs:<\/p>\n<pre><code class=\"language-php\">\/\/ return an array of posts from multiple authors\n$my_posts = get_posts( array( 'author__in' =&gt; array( 1, 5, 12 ) ) );<\/code><\/pre>\n<p>En we kunnen ook meerdere auteurs uitsluiten:<\/p>\n<pre><code class=\"language-php\">\/\/ return an array of posts from multiple authors\n$my_posts = get_posts( array( 'author__not_in' =&gt; array( 1, 5, 12 ) ) );<\/code><\/pre>\n<p>Ook kunnen we de categorie params, tag params, posttype params, met specifieke verschillen gebruiken. Zie, als voorbeeld, categorie params:<\/p>\n<ul>\n<li><code>cat<\/code> (<em>int<\/em>)<\/li>\n<li><code>category_name<\/code> (<em>string<\/em>)<\/li>\n<li><code>category__and<\/code> (<em>array<\/em>)<\/li>\n<li><code>category__in<\/code> (<em>array<\/em>)<\/li>\n<li><code>category__not_in<\/code> (<em>array<\/em>)<\/li>\n<\/ul>\n<p>Niet alle parameters zijn zo eenvoudig te gebruiken als deze parameters. Verder kunnen we params van categorie, posttype, mime-type, etc. allemaal gebruiken in \u00e9\u00e9n zoekopdracht. Dit betekent dat we de items in de set resultaten op gedetailleerd niveau kunnen beheren en dat we meer geavanceerde reeksen kunnen bouwen op basis van berichttypes, aangepaste taxonomie\u00ebn en aangepaste velden in zijn geheel.<\/p>\n<p>Duidelijk? Laten we eens kijken naar geavanceerde reeksen.<\/p>\n<h3>Hoe je Geavanceerde Reeksen Bouwt in WordPress<\/h3>\n<p>Laten we een stap verder gaan met meer geavanceerde zoekopdrachten op basis van aangepaste berichttypen en aangepaste taxonomie\u00ebn. We hebben bijvoorbeeld het volgende berichttype:<\/p>\n<p><strong>name<\/strong>: book<br \/>\n<strong>taxonomy name<\/strong>: book_category, book_author<br \/>\n<strong>support for<\/strong>: title, editor, thumbnail, excerpt, custom-fields<\/p>\n<h4>Aangepaste Berichttypen en Taxonomie\u00ebn<\/h4>\n<p>Stel dat je een lijst wilt van de meest recente boeken in de gespecificeerde aangepaste taxonomie <code>book_category<\/code>. Hier is de reeks van argumenten:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'post_type'\t\t=&gt; 'book',\n\t'tax_query'\t\t=&gt; array(\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t'field'\t\t=&gt; 'slug',\n\t\t\t'terms'\t\t=&gt; 'sci-fi'\n\t\t)\n\t),\n);<\/code><\/pre>\n<p>Bovenstaande argumenten vragen WordPress om alle boeken in <code>'sci-fi'<\/code> <code>'book_category'<\/code> op te halen.<\/p>\n<p>De <code>'tax_query'<\/code>-parameter neemt een reeks van argumentreeksen (d.w.z. een reeks van reeksen). Deze genestelde reeksen maken het mogelijk om zeer complexe reeksen te bouwen op basis van meerdere taxonomie\u00ebn, zoals bijvoorbeeld hieronder is te zien:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'numberposts'\t=&gt; 10,\n\t'post_type'\t\t=&gt; 'book',\n\t'relation'\t\t=&gt; 'AND',\n\t'tax_query'\t\t=&gt; array(\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t'field'\t\t=&gt; 'slug',\n\t\t\t'terms'\t\t=&gt; 'sci-fi'\n\t\t),\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_author',\n\t\t\t'field'\t\t=&gt; 'term_id',\n\t\t\t'terms'\t\t=&gt; 22\n\t\t)\n\t)\n);<\/code><\/pre>\n<p>Deze parameters stellen ons in staat om een lijst op te halen van de laatste 10 <code>'book'<\/code>-berichtttypes in de <code>'sci-fi'<\/code> <code>'book_category'<\/code>, geschreven door de <code>'book_author'<\/code> met ID #22.<br \/>\nDe <code>'relation'<\/code>-parameter bepaalt de logische relatie tussen elke taxonomie die in <code>'tax_query'<\/code> staat. We zetten hierboven de waarde ervan op AND omdat we alle boeken moeten terugvinden die behoren tot de <code>'sci-fi'<\/code>-categorie EN geschreven door auteur #22.<\/p>\n<h4>Hoe je Metazoekopdrachten Bouwt met Aangepaste Veldparameters<\/h4>\n<p>Soms kan het nodig zijn om lijsten met berichten te maken op basis van een aangepaste sleutel en\/of waarde in het veld.<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'meta_key'\t\t=&gt; 'cover',\n\t'meta_value'\t=&gt; 'paperback',\n\t'meta_compare'\t=&gt; '='\n);<\/code><\/pre>\n<p>Deze parameters stellen ons in staat om alle berichten op te halen op basis van de sleutel en waarde van het veld. <code>'meta_compare'<\/code> stelt de operator in die nodig is om de waarde van de parameter <code>'meta_value'<\/code> te testen. Hier is <code>'meta_value'<\/code> dus <code>'='<\/code>, wat ook de standaardwaarde is.<\/p>\n<p>De beschikbare waarden zijn <code>'='<\/code>, <code>'!='<\/code>, <code>'&gt;'<\/code>, <code>'&gt;='<\/code>, <code>'&lt;'<\/code>, <code>'&lt;='<\/code>, <code>'LIKE'<\/code>, <code>'NOT LIKE'<\/code>, <code>'IN'<\/code>, <code>'NOT IN'<\/code>, <code>'BETWEEN'<\/code>, <code>'NOT BETWEEN'<\/code>, <code>'NOT EXISTS'<\/code>, <code>'REGEXP'<\/code>, <code>'NOT REGEXP'<\/code> or <code>'RLIKE'<\/code>.<\/p>\n<p>Dit is een vrij eenvoudig voorbeeld, maar we kunnen meer geavanceerde reeksen bouwen. In het volgende voorbeeld vragen we de database om reeksen van fantasieboeken gepubliceerd na 2010:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'post_type'\t\t=&gt; 'book',\n\t'meta_key'\t\t=&gt; 'year_published',\n\t'meta_value_num'\t=&gt; 2010,\n\t'meta_compare'\t=&gt; '&gt;',\n\t'tax_query'\t\t=&gt; array(\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t'field'\t\t=&gt; 'slug'\n\t\t\t'terms'\t\t=&gt; 'fantasy'\n\t\t)\n\t)\n);<\/code><\/pre>\n<p>En we kunnen nog verder gaan. In dit voorbeeld combineren we een berichttype met een aangepaste taxonomie en twee aangepaste velden:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'post_type'\t\t=&gt; 'book',\n\t'tax_query'\t\t=&gt; array(\n\t\tarray(\n\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t'field'\t\t=&gt; 'slug'\n\t\t\t'terms'\t\t=&gt; array( 'fantasy' )\n\t\t)\n\t),\n\t'meta_query'\t=&gt; array(\n\t\t'relation'\t\t=&gt; 'AND',\n\t\tarray(\n\t\t\t'key'\t\t=&gt; 'year_published',\n\t\t\t'value'\t\t=&gt; 2010,\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; '&gt;',\n\t\t),\n\t\tarray(\n\t\t\t'key'\t\t=&gt; 'price',\n\t\t\t'value'\t\t=&gt; array( 10, 25 ),\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; 'BETWEEN',\n\t\t)\n\t)\n);<\/code><\/pre>\n<p>Hier stellen we een reeks van parameters in om een lijst van fantasieboeken op te halen die na 2010 gepubliceerd zijn en die <code>BETWEEN<\/code> (tussen) $10 en $25 kosten.<\/p>\n<p>Je ziet dat de <code>'meta_query'<\/code>-parameter werkt zoals de <code>'tax_query'<\/code>-parameter. Het houdt een reeks van reeksen bij, waardoor we geavanceerde reeksen kunnen maken op basis van meerdere metasleutel\/waarde-paren. Voor een grote lijst zoekopdrachtparameters en een mooi aantal voorbeelden, zie de <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\"><code>WP_Query<\/code> documentatie<\/a>.<\/p>\n<h3>Waarom is get_posts Beperkt tot vijf WordPress-berichten?<\/h3>\n<p>De functie <code>get_posts<\/code> neemt dezelfde argumenten als <code>WP_Query::parse_query()<\/code> (<a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/WP_Query\/parse_query\/\">ze de Codex<\/a>), maar sommige specifieke parameters zorgen ervoor dat het iets anders werkt dan een <code>WP_Query<\/code> object.<\/p>\n<p>Misschien heb je de <code>'numberposts'<\/code> -parameter niet gebruikt in je reeksen en vraag je je af waarom je maar vijf items in je lijst ziet.<\/p>\n<p>Standaard bepaalt het aantal berichten dat je instelt in de beheerderspagina <strong>Instellingen \u2192 Lezen <\/strong>het aantal berichten dat moet worden opgehaald door een WordPress-zoekopdracht. Hoe dan ook, als je geen aangepaste waarde specificeert voor <code>'numberposts'<\/code> of <code>'posts_per_page'<\/code>, geeft <code>get_posts<\/code> een ander aantal posts terug.<\/p>\n<ul>\n<li><code>'Numberposts'<\/code> is het totale aantal berichten dat moet worden opgehaald. Het is een alias van <code>'posts_per_page'<\/code> in WP_Query, maar er is een verschil: standaard <strong>is het aantal berichten dat je moet ophalen bij gebruik van <\/strong><strong>get_posts<\/strong><strong> vijf<\/strong>, terwijl <code>'posts_per_page'<\/code> in WP_Query standaard het aantal berichten per pagina van je WordPress-blog is. Je kunt de standaardwaarde overschrijven door een aangepaste waarde in te stellen voor <code>'numberposts'<\/code> of <code>'posts_per_page'<\/code> in de reeks van argumenten.<\/li>\n<\/ul>\n<p>Naast <code>'numberposts'<\/code> zijn de volgende parameters specifiek voor <code>get_posts<\/code>:<\/p>\n<ul>\n<li><code>'category'<\/code> is een door komma&#8217;s gescheiden lijst van categorie-ID&#8217;s. Het is een alias van de &#8216;cat&#8217;-parameter in WP_Query.<\/li>\n<li><code>'include'<\/code> is een door komma&#8217;s gescheiden lijst van bericht-ID&#8217;s. Dit is een alias van dd<code>'post__in'<\/code> parameter in <code>WP_Query<\/code>.<\/li>\n<li><code>'exclude'<\/code> is een door komma&#8217;s gescheiden lijst van bericht-ID&#8217;s.<\/li>\n<li><code>'suppress_filters'<\/code> geeft aan of filters moeten worden onderdrukt. Deze parameter staat standaard op true in get_posts, terwijl het standaard op false in <code>WP_Query<\/code> staat (<a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/5.2\/src\/wp-includes\/class-wp-query.php#L709\" target=\"_blank\" rel=\"noopener noreferrer\">lees meer op Track<\/a>).<\/li>\n<\/ul>\n<p>De functie <code>get_posts<\/code> is gedefinieerd in <code>wp-includes\/post.php<\/code>. Je kunt meer lezen over de werking van <code>get_posts<\/code> door de broncode te controleren <a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/5.2\/src\/wp-includes\/post.php#L1901\" target=\"_blank\" rel=\"noopener noreferrer\">op Track (WordPress 5.2)<\/a> of in je lokale WordPress-installatie.<\/p>\n<h3>Artikelen Sorteren<\/h3>\n<p>Met <code>'orderby'<\/code> en <code>'order'<\/code> kun je de items van de set met resultaten sorteren. Je kunt de berichten sorteren op <code>'ID'<\/code>, <code>'author'<\/code>, <code>'title'<\/code>, <code>'name'<\/code>, <code>'type'<\/code>, <code>'date'<\/code>, <code>'modified'<\/code>, <code>'parent'<\/code>, <code>'rand'<\/code>, <code>'comment_count'<\/code> en op vele andere manieren, in oplopende of aflopende volgorde.<\/p>\n<p>Als je een eenvoudige zoekopdracht hebt, hoef je alleen maar een waarde in te stellen voor <code>'order'<\/code> en <code>'orderby'<\/code>. In het volgende voorbeeld worden de berichten gesorteerd op berichtnaam in oplopende volgorde:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'author'\t=&gt; '1,5,12',\n\t'orderby'\t=&gt; 'name',\n\t'order'\t\t=&gt; 'ASC'\n);<\/code><\/pre>\n<p>Dat is vrij makkelijk. Maar wat als je een geavanceerde zoekopdracht hebt? Kunnen we items dan sorteren op een of meer aangepaste veldwaarden in een geavanceerde metazoekopdracht?<\/p>\n<p>WordPress 4.0 en <a href=\"https:\/\/make.wordpress.org\/core\/2015\/03\/30\/query-improvements-in-wp-4-2-orderby-and-meta_query\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress 4.2 brachten belangrijke verbeteringen<\/a> in de <code>'orderby'<\/code> en <code>'meta_query'<\/code> parameters. We hebben nu een nieuwe syntax voor het sorteren door middel van specifieke clausules van een metazoekopdracht. Dankzij de nieuwe syntax kunnen we indexen gebruiken om verwijzingen naar de specifieke clausules van de metazoekopdracht te maken vanuit de <code>'orderby'<\/code>-parameter.<\/p>\n<p>Dankzij deze verbeteringen kan de metazoekopdracht in het bovenstaande voorbeeld als volgt worden geschreven:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'meta_query'\t=&gt; array(\n\t\t'relation'\t\t=&gt; 'AND',\n\t\t'year_clause' =&gt; array(\n\t\t\t'key'\t\t=&gt; 'year_published',\n\t\t\t'value'\t\t=&gt; 2010,\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; '&gt;',\n\t\t),\n\t\t'price_clause' =&gt; array(\n\t\t\t'key'\t\t=&gt; 'price',\n\t\t\t'value'\t\t=&gt; array( 10, 25 ),\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; 'BETWEEN',\n\t\t)\n\t),\n\t'orderby' =&gt; 'price_clause',\n);<\/code><\/pre>\n<p>In bovenstaand voorbeeld zijn de elementen gesorteerd op <code>'price_clause'<\/code>.<\/p>\n<p>En we kunnen nog meer doen. <a href=\"https:\/\/make.wordpress.org\/core\/2014\/08\/29\/a-more-powerful-order-by-in-wordpress-4-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sinds WordPress 4.0<\/a> kunnen we voor <code>get_posts<\/code> een reeks indexen van metazoekopdrachten in plaats van een enkele index doorgeven, zoals in onderstaand voorbeeld:<\/p>\n<pre><code class=\"language-php\">$args = array(\n\t'meta_query'\t=&gt; array(\n\t\t'relation'\t\t=&gt; 'AND',\n\t\t'year_clause' =&gt; array(\n\t\t\t'key'\t\t=&gt; 'year_published',\n\t\t\t'value'\t\t=&gt; 2010,\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; '&gt;',\n\t\t),\n\t\t'price_clause' =&gt; array(\n\t\t\t'key'\t\t=&gt; 'price',\n\t\t\t'value'\t\t=&gt; array( 10, 25 ),\n\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t'compare'\t=&gt; 'BETWEEN',\n\t\t)\n\t),\n\t'orderby' =&gt; array( 'price_clause' =&gt; 'ASC', 'year_clause' =&gt; 'DESC' ),\n);<\/code><\/pre>\n<p>Gefeliciteerd, je hebt een geavanceerde metazoekopdacht gebouwd en je hebt de resultaten eerst gesorteerd op <code>'price_clause'<\/code> in oplopende volgorde en daarna op <code>'year_clause'<\/code> in aflopende volgorde.<\/p>\n<p>Ze <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/#order-orderby-parameters\" target=\"_blank\" rel=\"noopener noreferrer\">de volledige lijst met sorteermogelijkheden<\/a> in de Codex.<\/p>\n<p>Het is tijd om de gegevens op de front-end weer te geven.<\/p>\n<p>Voorgestelde lezing: <a href=\"https:\/\/kinsta.com\/blog\/phpinfo\/\">Hoe gemakkelijk een phpinfo-pagina te maken en te gebruiken<\/a>.<\/p>\n<h2 id=\"display\">Hoe je get_posts-gegevens Weergeeft<\/h2>\n<p>WordPress <code>get_posts<\/code> geeft een reeks terug van <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_post\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>WP_Post<\/code>-objecten<\/a> die ons toegang geeft tot een aantal variabelen voor elk geselecteerd bericht dat is opgeslagen in de <code>wp_posts<\/code>-databasetabel:<\/p>\n<ul>\n<li>ID<\/li>\n<li>post_author<\/li>\n<li>post_name<\/li>\n<li>post_type<\/li>\n<li>post_title<\/li>\n<li>post_date<\/li>\n<li>post_date_gmt<\/li>\n<li>post_content<\/li>\n<li>post_excerpt<\/li>\n<li>post_status<\/li>\n<li>comment_status<\/li>\n<li>ping_status<\/li>\n<li>post_password<\/li>\n<li>post_parent<\/li>\n<li>post_modified<\/li>\n<li>post_modified_gmt<\/li>\n<li>comment_count<\/li>\n<li>menu_order<\/li>\n<\/ul>\n<figure style=\"width: 2176px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/08\/wp-posts-tabel.png\" alt=\"wp_posts-tabelstructuur in phpMyAdmin\" width=\"2176\" height=\"1542\"><figcaption class=\"wp-caption-text\">wp_posts-tabelstructuur in phpMyAdmin<\/figcaption><\/figure>\n<p>Je kunt makkelijk toegang krijgen tot deze gegevens met een <code>foreach<\/code>-cycle zoals de volgende:<\/p>\n<pre><code class=\"language-php\">$custom_posts = get_posts( $args );\n\nif( ! empty( $custom_posts ) ){\n\t$output = '&lt;ul&gt;';\n\tforeach ( $custom_posts as $p ){\n\n\t\t$output .= '&lt;li&gt;&lt;a href=\"' \n\t\t. get_permalink( $p-&gt;ID ) . '\"&gt;' \n\t\t. $p-&gt;post_title . '&lt;\/a&gt;&lt;\/li&gt;';\n\t}\n\n\t$output .= '&lt;\/ul&gt;';\n}\n\nreturn $output ?? '&lt;strong&gt;Sorry. No posts matching your criteria!&lt;\/strong&gt;';<\/code><\/pre>\n<p>Als<code>get_posts<\/code> minstens \u00e9\u00e9n bericht heeft gevonden, dan geeft het een reeks van items die we kunnen traversen om de titel van het bericht en een link naar het originele bericht te tonen. We hebben de <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_permalink\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>get_permalink<\/code> functie<\/a> gebruikt om de permalink van het bericht op te halen, omdat we geen overeenkomstige <code>WP_Post<\/code>-variabele hebben.<\/p>\n<p>Dat is vrij eenvoudig, maar hoe kunnen we die code implementeren en onze berichtenlijsten bouwen met behulp van WordPress <code>get_posts<\/code>?<\/p>\n<p>Je kunt deze lijsten op je pagina&#8217;s op verschillende manieren tonen.<\/p>\n<ul>\n<li>Je kunt ze overal op de pagina opnemen door <a href=\"https:\/\/kinsta.com\/nl\/blog\/child-thema-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">de paginasjabloon van<\/a> een <a href=\"https:\/\/kinsta.com\/nl\/blog\/child-thema-wordpress\/\" target=\"_blank\" rel=\"noopener noreferrer\">child-them<\/a><u>a<\/u> te bewerken.<\/li>\n<li>Je kunt ze opnemen in een <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-widgets\/\" target=\"_blank\" rel=\"noopener noreferrer\">sidebar-widget<\/a>.<\/li>\n<li>Je kunt ze opnemen in de content van een bericht <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-shortcodes\/\" target=\"_blank\" rel=\"noopener noreferrer\">met een aangepaste shortcode.<\/a><\/li>\n<\/ul>\n<h2 id=\"example\">Voorbeeld uit de Praktijk: een Aangepaste Berichtenlijst met een Shortcode Weergeven<\/h2>\n<p>Ik zal je laten zien hoe je snel en eenvoudig een shortcode kunt maken die je in je content kunt opnemen. Ik zal niet teveel over de werking van shortcodes vertellen, omdat we dat onderwerp al in <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-shortcodes\/\" target=\"_blank\" rel=\"noopener noreferrer\">een eerder artikel<\/a> hebben behandeld.<\/p>\n<p>Maak eerst een nieuw pad aan in de <code>wp-content\/plugins<\/code>-map van je <a href=\"https:\/\/kinsta.com\/nl\/blog\/lokale-wordpress-installatie\/\" target=\"_blank\" rel=\"noopener noreferrer\">lokale WordPress-installatie<\/a> of in een <a href=\"https:\/\/kinsta.com\/nl\/docs\/wordpress-hosting\/testomgeving\/\" target=\"_blank\" rel=\"noopener noreferrer\">testomgeving<\/a>. In dit voorbeeld heb ik het pad de naam <strong>kinsta-shortcodes<\/strong> gegeven.<\/p>\n<p>Maak in <code>wp-content\/plugins\/<strong>kinsta-shortcodes<\/strong>\/<\/code> een .php-bestand aan met dezelfde naam als het nieuwe pad: <code>kinsta-shortcodes.php<\/code>.<\/p>\n<p>Open het nieuwe bestand in je <a href=\"https:\/\/kinsta.com\/nl\/blog\/beste-teksteditors\/\" target=\"_blank\" rel=\"noopener noreferrer\">favoriete teksteditor<\/a> en voeg het volgende kopje toe:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n * @package Kinsta_shortcodes\n * @version 1.0\n *\/\n\/*\nPlugin Name: Kinsta shortcodes\nPlugin URI: http:\/\/wordpress.org\/extend\/plugins\/#\nDescription: This is an example plugin \nAuthor: Your Name\nVersion: 1.0\nAuthor URI: https:\/\/yourwebsite.com\/\n*\/<\/code><\/pre>\n<p>Nu hebben we een gloednieuwe plugin, maar die doet nog steeds niets. Ga naar de pagina <strong>Plugins<\/strong> in je <a href=\"https:\/\/kinsta.com\/blog\/wordpress-admin\/\">WordPress dashboard<\/a> en activeer de nieuwe plugin om ervoor te zorgen dat <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-debugging\/#how-to-manually-enable-wordpress-debug-mode\"><code>WP_DEBUG<\/code> is ingesteld op <code>true<\/code><\/a> in je <code>wp-config.php<\/code> bestand.<\/p>\n<p>Je sandbox is nu klaar voor jouw \u2018hacks\u2019. De volgende stap is het registreren van een hook voor een aangepaste shortcode:<\/p>\n<pre><code class=\"language-php\">\/**\n * Add a hook for a shortcode tag\n *\/\nfunction kinsta_shortcodes_init(){\n\tadd_shortcode( 'kinsta_get_posts', 'kinsta_get_posts_cb' );\n}\nadd_action('init', 'kinsta_shortcodes_init');<\/code><\/pre>\n<p><code>kinsta_get_posts<\/code> is de naam van de shortcode e <code>kinsta_get_posts_cb<\/code> is de hieronder gedefinieerde callback:<\/p>\n<pre><code class=\"language-php\">\/**\n * Register a shortcode\n *\n * @param array $atts Array of shortcode attributes\n *\/\nfunction kinsta_get_posts_cb( $atts ){\n\n\t\/\/ safely extract custom arguments and set default values\n\textract( shortcode_atts(\n\t\t\tarray(\n\t\t\t\t'numberposts'\t\t=&gt; 3,\n\t\t\t\t'post_type'\t\t\t=&gt; 'post',\n\t\t\t\t'book_category'\t\t=&gt; 'fantasy',\n\t\t\t\t'year_published'\t=&gt; 1900,\n\t\t\t\t'price_min'\t\t\t=&gt; 0,\n\t\t\t\t'price_max'\t\t\t=&gt; 50\n\t\t\t),\n\t\t\t$atts,\n\t\t\t'kinsta_get_posts'\n\t\t) );\n\n\t\/\/ define the array of query arguments\n\t$args = array(\n\t\t'numberposts'\t=&gt; $numberposts,\n\t\t'post_type'\t\t=&gt; $post_type,\n\t\t'tax_query'\t\t=&gt; array(\n\t\t\tarray(\n\t\t\t\t'taxonomy'\t=&gt; 'book_category',\n\t\t\t\t'field'\t\t=&gt; 'slug',\n\t\t\t\t'terms'\t\t=&gt; $book_category,\n\t\t\t)\n\t\t),\n\t\t'meta_query'\t=&gt; array(\n\t\t\t'relation'\t\t=&gt; 'AND',\n\t\t\t'year_clause'\t=&gt; array(\n\t\t\t\t'key'\t\t=&gt; 'year_published',\n\t\t\t\t'value'\t\t=&gt; $year_published,\n\t\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t\t'compare'\t=&gt; '&gt;',\n\t\t\t),\n\t\t\t'price_clause'\t=&gt; array(\n\t\t\t\t'key'\t\t=&gt; 'price',\n\t\t\t\t'value'\t\t=&gt; array( $price_min, $price_max ),\n\t\t\t\t'type'\t\t=&gt; 'numeric',\n\t\t\t\t'compare'\t=&gt; 'BETWEEN',\n\t\t\t)\n\t\t),\n\t\t'orderby' =&gt; array( 'price_clause' =&gt; 'ASC' )\n\t);\n\n\t$custom_posts = get_posts( $args );\n\n\tif( ! empty( $custom_posts ) ){\n\t\t$output = '&lt;ul&gt;';\n\t\tforeach ( $custom_posts as $p ){\n\n\t\t\t$output .= '&lt;li&gt;&lt;a href=\"' \n\t\t\t. get_permalink( $p-&gt;ID ) . '\"&gt;' \n\t\t\t. $p-&gt;post_title . '&lt;\/a&gt; (' \n\t\t\t. get_post_meta( $p-&gt;ID, 'year_published', true ) \n\t\t\t. ') - Price: ' . get_post_meta( $p-&gt;ID, 'price', true ) . '&lt;\/li&gt;';\n\t\t}\n\n\t\t$output .= '&lt;\/ul&gt;';\n\t}\n\nreturn $output ?? '&lt;strong&gt;Sorry. No posts matching your criteria!&lt;\/strong&gt;';<\/code><\/pre>\n<p>We stellen zes shortcode-attributes in die we gebruiken om een reeks aan parameters te defini\u00ebren en uiteindelijk wordt doorgegeven aan de <code>get_posts-functie<\/code> in WordPress. Als <code>$custom_posts<\/code> niet leeg is, dan genereert een <code>foreach<\/code>-cyclus de HTML van een ongesorteerde lijst van items. Nu kunnen jij en je auteurs van je berichtlijsten de berichten opnemen met behulp van een shortcode zoals hieronder:<\/p>\n<p>Nu kunnen jij en je auteurs van je berichtlijsten de berichten opnemen met behulp van een shortcode zoals hieronder:<\/p>\n<pre>[kinsta_get_posts post_type=\"book\" book_category=\"sci-fi\" numberposts=\"4\" price_min=1 price_max=250]<\/pre>\n<p>Natuurlijk kun je de reeks van argumenten naar eigen voorkeur wijzigen en tests uitvoeren in elk bericht of pagina van je ontwikkelingswebsite.<\/p>\n<figure id=\"attachment_54811\" aria-describedby=\"caption-attachment-54811\" style=\"width: 1532px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-54811 size-full\" src=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/geavanceerde-lijst.png\" alt=\"WordPress get_posts \" width=\"1532\" height=\"1066\"><figcaption id=\"caption-attachment-54811\" class=\"wp-caption-text\">Een geavanceerde berichtenlijst die gebouwd is met de get_posts-functie<\/figcaption><\/figure>\n\n<h2>Samenvatting<\/h2>\n<p>WordPress<strong> get_posts<\/strong> is een krachtige functie waarmee ontwikkelaars overal op de front-end van je WordPress-website berichtenlijsten kunnen opnemen. Het gebruikt <code>WP_Query<\/code>, maar het is makkelijker te gebruiken en te verkiezen boven <code>WP_Query<\/code> als je alleen berichtenlijsten nodig hebt. Een directe verwijzing naar <code>WP_Query<\/code> wordt aanbevolen wanneer je berichten in een <a href=\"https:\/\/codex.wordpress.org\/The_Loop\" target=\"_blank\" rel=\"noopener noreferrer\">Loop<\/a> moet weergeven.<\/p>\n<p>Dus bouw je lijsten, test je code, en als je er zeker weet dat het goed werkt, zet het dan (en alleen dan) live op je site (maar <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-back-up-plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">voer eerst een back-up uit<\/a>).<\/p>\n<p>Nu willen we graag meer van jou horen. Wat is jouw ervaring met de WordPress- <code>get_posts<\/code>-functie? Heb je nog nuttige dingen om met ons te delen? Laat het weten in de reacties hieronder!<\/p>\n<div id=\"gtx-trans\">\n<div class=\"gtx-trans-icon\"><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>WordPress get_posts is een handige functie waarmee ontwikkelaars content uit de WordPress-database kunnen ophalen. Je kunt op gedetailleerd niveau aangeven naar welke berichten, pagina&#8217;s en aangepaste &#8230;<\/p>\n","protected":false},"author":36,"featured_media":27533,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[29,207],"topic":[865,856],"class_list":["post-27510","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-webdev","tag-wp_query","topic-php-functie","topic-php-leren"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WordPress get_posts: hoe je deze PHP-functie gebruikt voor berichtlijsten<\/title>\n<meta name=\"description\" content=\"Wil je custom lijsten met berichten, pagina&#039;s of berichttypes maken? Leer in deze tutorial hoe je dit kan doen met de get_posts WordPress functie!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress get_posts: hoe je deze nuttige PHP-functie gebruikt om berichtenlijsten te maken\" \/>\n<meta property=\"og:description\" content=\"Wil je custom lijsten met berichten, pagina&#039;s of berichttypes maken? Leer in deze tutorial hoe je dit kan doen met de get_posts WordPress functie!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-23T04:29:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-22T12:06:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Wil je custom lijsten met berichten, pagina&#039;s of berichttypes maken? Leer in deze tutorial hoe je dit kan doen met de get_posts WordPress functie!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"WordPress get_posts: hoe je deze nuttige PHP-functie gebruikt om berichtenlijsten te maken\",\"datePublished\":\"2019-10-23T04:29:58+00:00\",\"dateModified\":\"2023-05-22T12:06:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/\"},\"wordCount\":2466,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png\",\"keywords\":[\"webdev\",\"WP_Query\"],\"articleSection\":[\"WordPress ontwikkeling\"],\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/\",\"name\":\"WordPress get_posts: hoe je deze PHP-functie gebruikt voor berichtlijsten\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png\",\"datePublished\":\"2019-10-23T04:29:58+00:00\",\"dateModified\":\"2023-05-22T12:06:16+00:00\",\"description\":\"Wil je custom lijsten met berichten, pagina's of berichttypes maken? Leer in deze tutorial hoe je dit kan doen met de get_posts WordPress functie!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png\",\"width\":1460,\"height\":730,\"caption\":\"WordPress get_posts\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP leren\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/php-leren\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"WordPress get_posts: hoe je deze nuttige PHP-functie gebruikt om berichtenlijsten te maken\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress get_posts: hoe je deze PHP-functie gebruikt voor berichtlijsten","description":"Wil je custom lijsten met berichten, pagina's of berichttypes maken? Leer in deze tutorial hoe je dit kan doen met de get_posts WordPress functie!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/","og_locale":"nl_NL","og_type":"article","og_title":"WordPress get_posts: hoe je deze nuttige PHP-functie gebruikt om berichtenlijsten te maken","og_description":"Wil je custom lijsten met berichten, pagina's of berichttypes maken? Leer in deze tutorial hoe je dit kan doen met de get_posts WordPress functie!","og_url":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2019-10-23T04:29:58+00:00","article_modified_time":"2023-05-22T12:06:16+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png","type":"image\/png"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"Wil je custom lijsten met berichten, pagina's of berichttypes maken? Leer in deze tutorial hoe je dit kan doen met de get_posts WordPress functie!","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png","twitter_creator":"@carlodaniele","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Carlo Daniele","Geschatte leestijd":"15 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"WordPress get_posts: hoe je deze nuttige PHP-functie gebruikt om berichtenlijsten te maken","datePublished":"2019-10-23T04:29:58+00:00","dateModified":"2023-05-22T12:06:16+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/"},"wordCount":2466,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png","keywords":["webdev","WP_Query"],"articleSection":["WordPress ontwikkeling"],"inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/","url":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/","name":"WordPress get_posts: hoe je deze PHP-functie gebruikt voor berichtlijsten","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png","datePublished":"2019-10-23T04:29:58+00:00","dateModified":"2023-05-22T12:06:16+00:00","description":"Wil je custom lijsten met berichten, pagina's of berichttypes maken? Leer in deze tutorial hoe je dit kan doen met de get_posts WordPress functie!","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2019\/10\/wordpress-get-posts.png","width":1460,"height":730,"caption":"WordPress get_posts"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-get_posts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"PHP leren","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/php-leren\/"},{"@type":"ListItem","position":3,"name":"WordPress get_posts: hoe je deze nuttige PHP-functie gebruikt om berichtenlijsten te maken"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/nl\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/27510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=27510"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/27510\/revisions"}],"predecessor-version":[{"id":39434,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/27510\/revisions\/39434"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/pt"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/es"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/fr"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/nl"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/it"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/de"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/se"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/translations\/jp"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/27510\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/27533"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=27510"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=27510"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=27510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}