Du vet när du behöver visa ett WordPress-inlägg endast om det har ett specifikt anpassat fält? Vi har varit där.
När vi först började med WordPress kändes det skrämmande att se kodavsnitt, särskilt när allt vi ville var att visa inlägg med specifik information.
Men här är de goda nyheterna: efter att ha hjälpt tusentals WordPress-nybörjare har vi upptäckt att även något som låter tekniskt, som filtrering av anpassade fält, inte behöver vara skrämmande.
Faktum är att vi kommer att guida dig genom en enkel kodmetod för att göra det.
Den här lösningen fungerar perfekt oavsett om du publicerar vanliga blogginlägg eller anpassade inläggstyper baserat på specifika kriterier.

💡 TL;DR: Du kan visa endast WordPress-inlägg som har ett specifikt anpassat fält genom att använda en anpassad WP_Query i dina temafiler (som index.php) för att filtrera dessa inlägg.
📌 Snabb notering: Den här handledningen handlar om att visa WordPress-inlägg om de har ett värde angivet i ett specifikt anpassat fält. Om du vill visa anpassade fält på startsidan av ett WordPress-inlägg, kan du läsa vår guide om hur man visar anpassade fält i WordPress-teman.
Varför visa WordPress-inlägg med ett specifikt anpassat fält?
När du skapar ett inlägg på din WordPress-webbplats kan du använda anpassade fält för att lägga till ytterligare metadata till inlägget.
Metadata är extra information du kan lägga till ett inlägg. Om du till exempel skrev en bokrecension kan du lägga till anpassade fält för 'Författarens namn' eller 'Betyg'.
Anpassade fält är ett avancerat WordPress-koncept, och det finns många sätt att lägga till anpassade fält i WordPress. Du hittar många användbara tips om hur du använder och visar anpassade fält i vårt inlägg, WordPress Custom Fields 101: Tips, Tricks, and Hacks.

En av våra användare frågade oss hur man visar WordPress-inlägg endast om ett specifikt anpassat fält fanns. Detta kan vara användbart om du vill skapa en anpassad sida som listar alla inlägg som innehåller ett specifikt anpassat fält och/eller värde.
Efter att ha svarat med svaret tänkte vi att det vore bäst att dela det med alla andra så att den större WordPress.org-gemenskapen också kan dra nytta av det.
Redigera dina WordPress-temafiler: Vad du bör tänka på
Innan du börjar finns det några viktiga saker du bör tänka på när du arbetar med temafiler.
Om du lägger till kod direkt i dina temafiler, kommer dina ändringar att gå förlorade nästa gång du uppdaterar ditt tema.
Därför rekommenderar vi att du använder ett plugin som WPCode för att säkert lägga till anpassad PHP-kod utan att redigera ditt tema. Om du föredrar att redigera temafiler, se till att du använder ett barn-tema så att dina ändringar bevaras.
För att kunna följa den här handledningen ordentligt, här är några saker du bör tänka på:
- Den här handledningen innebär att lägga till kod på din WordPress-webbplats, så den är inte den mest lämpliga för helt nybörjare. Om du är ny på detta, måste du läsa vår guide om hur man kopierar och klistrar in kod i WordPress.
- Vi rekommenderar att säkerhetskopiera din webbplats och/eller använda en staging-miljö så att din live-webbplats inte påverkas när ett fel uppstår. Detta beror på att du kommer att lägga till kod i dina temafiler, vilket kan vara riskabelt.
- Vi rekommenderar att du förstår hur WordPress mallhierarki fungerar så att du vet var du ska lägga till koden senare.
- Du måste också bekanta dig med hur WordPress-loopar fungerar eftersom vi kommer att anropa dessa parametrar i en WordPress-fråga.
📍Viktig notering: Den här handledningen fungerar bara med klassiska WordPress-teman. Blockteman använder Webbplatsredigeraren och ett annat tillvägagångssätt för att visa innehåll, så den här metoden för att redigera mallfiler kommer inte att gälla.
Med det sagt, låt oss titta på hur man visar ett WordPress-inlägg endast om det har ett specifikt anpassat fält.
- Steg 1: Installera ett kodavsnitt-plugin
- Steg 2: Lägg till den anpassade frågekoden
- Steg 3: Filtrera efter specifikt metavärde (valfritt)
- Steg 4: Filtrera efter metajämförelse (valfritt)
- Steg 5: Filtrera inlägg efter flera anpassade fält (meta_query)
- Exempel från verkliga livet: Visa endast 5-stjärniga recensioner
- Vanliga frågor om att visa ett inlägg om det har ett specifikt anpassat fält
- Vanliga frågor om att visa ett inlägg om det har ett specifikt anpassat fält
- Lär dig fler sätt att anpassa din WordPress-webbplats
Steg 1: Installera ett kodavsnitt-plugin
Vissa handledningar kommer att säga åt dig att öppna ditt temas index.php-fil och helt skriva om WordPress-loopen med något som kallas WP_Query. Vi rekommenderar inte att göra detta.
Att modifiera de huvudsakliga mallfilerna kan bryta din webbplats layout, orsaka dubbla databasfrågor som saktar ner din webbplats och helt bryta din paginering (knapparna "Nästa sida").
Istället är det säkraste och mest effektiva sättet att göra detta genom att använda åkerkroken pre_get_posts. Detta talar om för WordPress att filtrera inläggen *innan* sidmallen ens laddas.
För att lägga till denna anpassade kod rekommenderar vi att använda ett plugin som WPCode. Det låter dig säkert lägga till PHP-kod utan att direkt röra vid ditt temas filer, vilket innebär att din webbplats inte går sönder om du gör ett misstag, och dina ändringar kommer inte att gå förlorade när ditt tema uppdateras.
Steg 2: Lägg till den anpassade frågekoden
När du har installerat och aktiverat WPCode, navigera till Kodavsnitt » Lägg till avsnitt i din WordPress-instrumentpanel och välj 'Lägg till din anpassade kod (Nytt avsnitt)'.

Se till att "Kodtyp" är inställd på PHP-avsnitt.
Klistra sedan in följande kod:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field' );
function wpb_filter_posts_by_custom_field( $query ) {
// Only modify the main query on the front-end homepage
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
// Tell WordPress to only get posts with the custom field key 'color'
$query->set( 'meta_key', 'color' );
}
}
Först kontrollerar koden att den bara ändrar huvudfrågan på startsidan av din webbplats (specifikt bloggens startsida), och lämnar ditt WordPress-admin-dashboard helt orört.
Sedan använder den $query->set för att tala om för WordPress att bara hämta inlägg som har anpassat fältet ‘color’ kopplat till sig.
Eftersom den här koden modifierar frågan innan sidan laddas, kommer ditt temas standardpaginering att fungera perfekt utan extra kod! Slå helt enkelt på WPCode-omkopplaren till Aktiv och klicka på knappen ‘Spara kodsnutt’ för att göra den live.
Steg 3: Filtrera efter specifikt metavärde (valfritt)
Vad händer om du vill hitta inlägg där det anpassade fältet ‘color’ har ett specifikt värde, som ‘blue’? För att göra det behöver du bara lägga till en regel för meta_value i din kod.
Din uppdaterade kodsnutt kommer att se ut så här:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field_value' );
function wpb_filter_posts_by_custom_field_value( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
}
}
Steg 4: Filtrera efter metajämförelse (valfritt)
Du kan ta din filtrering ännu längre med parametern meta_compare. Detta låter dig hitta inlägg som inte matchar ett värde.
Till exempel, för att visa alla inlägg där färgen inte är ‘blue’, skulle din fråga se ut så här:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_meta_compare' );
function wpb_filter_posts_by_meta_compare( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
$query->set( 'meta_compare', '!=' );
}
}
!= talar om för WordPress att hitta alla inlägg där fältet 'color' finns men inte är lika med 'blue'.
Det finns många andra jämförelseoperatorer du kan använda, som du hittar i den officiella WordPress-utvecklardokumentationen.
Steg 5: Filtrera inlägg efter flera anpassade fält (meta_query)
För mer komplexa scenarier där du behöver filtrera inlägg baserat på flera anpassade fält eller kombinera villkor (som OCH/ELLER), kommer du att använda arrayen meta_query.
Detta låter dig definiera en array av villkor, där varje villkor riktar sig mot ett annat anpassat fält eller värde.
Till exempel, för att visa inlägg med färgen ‘blue’ och storleken ‘large’, skulle din kod se ut så här:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_multiple_fields' );
function wpb_filter_posts_by_multiple_fields( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$meta_query = array(
'relation' => 'AND', // or 'OR'
array(
'key' => 'color',
'value' => 'blue',
'compare' => '=',
),
array(
'key' => 'size',
'value' => 'large',
'compare' => '=',
),
);
$query->set( 'meta_query', $meta_query );
}
}
Denna fråga kommer att hämta inlägg som har både det anpassade fältet ‘color’ inställt på ‘blue’ OCH det anpassade fältet ‘size’ inställt på ‘large’.
Du kan justera parametern 'relation' till ‘OR’ för att hitta inlägg som matchar minst ett av villkoren.
Exempel från verkliga livet: Visa endast 5-stjärniga recensioner
Låt oss säga att du driver en WordPress-bokrecensionssida och du använder ett anpassat fält som heter star_rating för att lagra recensionspoäng.
Du kan enkelt visa endast inlägg som har ett 5-stjärnigt betyg på din bloggs startsida med denna fråga:
<?php
add_action( 'pre_get_posts', 'wpb_show_only_five_star_reviews' );
function wpb_show_only_five_star_reviews( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'star_rating' );
$query->set( 'meta_value', '5' );
}
}
Detta är extremt användbart om du vill säkerställa att ditt huvudflöde endast innehåller ditt högst rankade innehåll.
Vanliga frågor om att visa ett inlägg om det har ett specifikt anpassat fält
Här är några frågor som våra läsare ofta ställer om att visa ett inlägg om det bara har ett specifikt anpassat fält:
Vanliga frågor om att visa ett inlägg om det har ett specifikt anpassat fält
Här är några frågor som våra läsare ofta ställer om att visa ett inlägg om det bara har ett specifikt anpassat fält:
Finns det ett sätt att göra detta utan att redigera temafiler?
Ja! Faktum är att metoden pre_get_posts som vi beskriver i den här handledningen är specifikt utformad så att du inte behöver redigera dina temafiler. Genom att använda ett kodsnutt-plugin som WPCode kan du säkert tillämpa detta filter på din webbplats utan att röra en enda rad av ditt temas kärnkod.
Kan jag filtrera inlägg efter flera anpassade fält?
Det kan du. Kroken pre_get_posts accepterar komplexa argument. Du skulle använda en ‘meta_query’-array, som låter dig bygga en lista med villkor för att matcha flera anpassade fält samtidigt.
Fungerar den här metoden med blockteman?
Medan kroken pre_get_posts tekniskt sett kan interagera med blockteman, har det inbyggda WordPress Query Loop-blocket ingen inbyggd gränssnitt för filtrering av anpassade fält ur lådan. Om du använder ett Full Site Editing-blocktema är det enklaste tillvägagångssättet att använda ett plugin som lägger till filtrering av anpassade fält till Query Loop-blocket, snarare än att skriva anpassad PHP.
Vad är skillnaden mellan 'meta_key' och 'meta_value'?
Tänk på ‘meta_key’ som namnet på etiketten, som ‘Färg’ eller ‘Status’. ‘meta_value’ är den faktiska data som anges i det fältet, som ‘Blå’ eller ‘Publicerad’.
Att använda nyckeln hittar alla inlägg som har det anpassade fältet kopplat till sig, medan användning av värdet filtrerar det för att bara hitta inlägg med den specifika informationen.
Lär dig fler sätt att anpassa din WordPress-webbplats
Här är fler sätt du kan anpassa dina WordPress-sidor:
- Hur man stylar enskilda kategorier olika i WordPress
- Hur man lägger till en anpassad scrollbar i WordPress
- Hur man lägger till anpassade stilar till WordPress-widgets
- Hur man stylar varje WordPress-inlägg olika
- Hur man använder kortkoder i dina WordPress-teman
- Hur man markerar nya inlägg för återkommande besökare i WordPress
- Hur man ändrar sidofältets sida i WordPress
Vi hoppas att den här handledningen hjälpte dig att lära dig hur du visar ett WordPress-inlägg endast om det har ett specifikt anpassat fält. Du kanske också vill se vår kompletta guide om hur man redigerar en WordPress-webbplats och våra experters val av de bästa Figma-plugins för WordPress.
Om du gillade den här artikeln, prenumerera gärna på vår YouTube-kanal för WordPress-videoguider. Du kan också hitta oss på Twitter och Facebook.


ahmed
Jag har en fråga, sir, om jag vill visa ett enskilt inlägg och anpassade fält, vad ska jag göra.
Jag vill inte visa inlägget med specifika anpassade fält. Jag vill visa alla anpassade fält för inlägget
Dave101
Hej, tack för den användbara handledningen. Jag har en fråga, på en wordpress-webbplats ställde jag in ett meta-värde som heter "meta_country" och sedan ställde jag in varje inlägg med landskoden för artikeln, som "us", "uk", "fr"... Nu försöker jag lägga till någonstans på bloggens startsida en länk som visar en lista över alla inlägg med ett specifikt land och en specifik tagg. Till exempel alla "UK"-inlägg taggade "APPLE".
Jag förstår inte hur jag ska göra det, kan någon hjälpa mig?
Максим Каминский
tack så mycket, det hjälpte väldigt bra!
pjhooker
Tack!
Eduard Unruh
omg äntligen TACK!
Mario M
Jag kunde inte generera några resultat om jag inte inkluderade parametern “post_type” i frågan.
t.ex. $the_query = new WP_Query(‘post_type=page&meta_key=color’);
sacha
Underbart, bara så enkelt och rent.
Tack.
scottlee.me
@ad Bra fråga! Jag är också nyfiken.
ad
Hej,
Hur skulle jag kunna visa inlägg som INTE har ett specifikt anpassat fält? Någon idé?
Tack!!!
tara tin
så vitt jag vet från php måste det vara meta_key!=’your key’
;du behöver bara veta att “!” betyder “inte”
brunobruno2
Vackert! Tack så mycket för att du delade det. Fungerar som en charm.