
⌨️ Slik legger du til en forfatternedtrekksmeny på Alle innlegg-skjermen i WordPress
Standardfilteret «Mine» på skjermbildet «Alle innlegg» i WordPress viser bare den aktuelle brukerens innlegg. Dette fungerer så lenge du er eneste forfatter. Men når tre redaktører, fem bidragsytere og et par gjesteeksperter jobber på nettstedet, blir det å finne ut hvem som skrev hva til å bla gjennom en endeløs tabell.
WordPress sitt opprinnelige grensesnitt har ingen forfatter-rullegardinmeny ved siden av dato- og kategorifiltrene. Utviklerne begrenset skjermbildet bevisst, ut fra en antakelse om at «Mine»-filteret er nok for administratorer. I praksis er dette katastrofalt utilstrekkelig.
Du kan legge til en forfatter-rullegardinmeny uten en utvidelse, ved hjelp av en enkel PHP-snutt. Koden kobler seg på opprinnelige admin-hooks og kommer ikke i konflikt med andre filtre. Forfatter-rullegardinmenyen fungerer sammen med den opprinnelige «Filtrer»-knappen.
💡 Rask oversikt:
- Vi registrerer
admin_init-hooken slik at koden bare fungerer i administrasjonspanelet og ikke påvirker frontend - Vi sender ut
wp_dropdown_users()viarestrict_manage_postsslik at valgmenyen vises i filterraden ved siden av dato og kategori - Vi begrenser omfanget via
get_current_screen()til kun innlegg og sider, og lar egendefinerte innholdstyper være urørt - Den valgte forfatteren huskes via
get_query_var('author')og fungerer sammen med andre filtre
Slik fungerer det under panseret
WordPress gjengir filtre på listeskjermer gjennom restrict_manage_posts-hooken. Den utløses rett før «Filtrer»-knappen i tabellen for innlegg og sider. Alt som sendes ut i denne hooken blir en del av filterraden, akkurat som systemets dato- og kategorirullegardinmenyer.
Funksjonen wp_dropdown_users() er WordPress sitt opprinnelige API for å generere en HTML-valgmeny med brukere. Den tar imot en rekke argumenter: brukerliste, standardverdi, CSS-klasse, og returnerer en ferdig <select>. Ingen manuell oppmerking eller direkte databasespørringer.
Ved å kombinere disse to verktøyene får du et opprinnelig grensesnitt som ikke kan skilles fra innebygde WordPress-filtre.
Kode: legge til forfatter-rullegardinmenyen
Sett inn snutten i det aktive temaets functions.php eller via en kodesnutt-utvidelse (for eksempel Code Snippets). Koden registrerer en hook på admin_init-hendelsen og sender ut forfatter-valgmenyen på skjermbildene for innlegg og sider.
1 add_action('admin_init', 'tsd_author_dropdown_init'); 2 function tsd_author_dropdown_init() { 3 add_action('restrict_manage_posts', 'tsd_author_dropdown'); 4 } 5 function tsd_author_dropdown() { 6 if ($GLOBALS['pagenow'] !== 'edit.php') { 7 return; 8 } 9 $screen = get_current_screen(); 10 if (empty($screen) 11 || ($screen->id !== 'edit-page' && $screen->id !== 'edit-post') 12 ) { 13 return; 14 } 15 wp_dropdown_users(array( 16 'show_option_all' => 'All Authors', 17 'selected' => get_query_var('author', 0), 18 'name' => 'author' 19 )); 20 }
Hva hver del gjør:
admin_init utløser registrering kun i administrasjonspanelet. Frontend påvirkes ikke, ingen ekstra belastning.
restrict_manage_posts sender ut valgmenyen i filterraden, akkurat der dato- og kategorifiltrene er plassert. Rullegardinmenyen vises på både innleggs- og sideskjermbildene.
$GLOBALS['pagenow'] sjekker at vi er på innleggslistesiden (edit.php). Hvis brukeren går til innstillinger eller redigerer et spesifikt innlegg, avsluttes koden lydløst.
get_current_screen() presiserer innholdstypen. Snutten fungerer bare for standard post og page, og hopper over egendefinerte innholdstyper (cpt). Dette er en bevisst begrensning: de fleste egendefinerte innholdstyper fra tredjepartsutvidelser bruker ikke forfattere for innholdsdifferensiering.
wp_dropdown_users() genererer HTML-valgmenyen. Argumentet 'show_option_all' setter teksten for «vis alle forfattere»-alternativet, 'selected' via get_query_var('author') husker den valgte brukeren etter filtrering, og 'name' => 'author' sørger for at WordPress gjenkjenner parameteren som et forfatterfilter og behandler det med en standard spørring.

Etter at du har satt inn koden, vises rullegardinmenyen på skjermbildene «Alle innlegg» og «Alle sider» ved siden av de opprinnelige filtrene. «Filtrer»-knappen fungerer som vanlig. Du kan filtrere samtidig etter forfatter, dato og kategori, og WordPress vil krysse betingelsene korrekt.
Finjustering: hva du kan endre
Snutten er bevisst minimal, men wp_dropdown_users() støtter dusinvis av parametere. Du kan tilpasse nesten alt til ditt scenario.
Endre teksten «Alle forfattere». Bytt ut 'show_option_all' med din egen variant, for eksempel 'Все авторы' eller 'Любой автор'.
Ekskluder spesifikke brukere. Parameteren 'exclude' tar imot en rekke med ID-er. Nyttig hvis det finnes systemkontoer blant brukerne som ikke bør vises i listen:
1 'exclude' => array(1, 15, 23),
Vis bare bestemte roller. Parameteren 'role__in' filtrerer brukere etter roller. For eksempel bare forfattere og redaktører:
1 'role__in' => array('author', 'editor'),
Sortering ikke alfabetisk. Som standard er 'orderby' => 'display_name'. Du kan erstatte den med 'ID', 'user_login' eller 'post_count'. Det siste alternativet vil vise de mest aktive forfatterne øverst.
Legg til for andre innholdstyper. Fjern $screen->id-sjekken, så vil rullegardinmenyen vises på alle edit.php-skjermer, inkludert egendefinerte innholdstyper. Eller legg til spesifikke egendefinerte innholdstyper i betingelsen:
1 $allowed = array('edit-post', 'edit-page', 'edit-product'); 2 if (!in_array($screen->id, $allowed, true)) { 3 return; 4 }
⁉️🤔 Ofte stilte spørsmål
Fungerer snutten med Gutenberg og Classic Editor samtidig?
Ja. Koden berører ikke redigeringsprogrammet, den endrer bare admin-lister, som ikke avhenger av det valgte redigeringsprogrammet. Snutten fungerer identisk på Gutenberg, Classic Editor og ethvert sidebyggerverktøy. Testet på WordPress 6.4-6.7 med Gutenberg aktivert og uten.
restrict_manage_posts-hooken har eksistert siden versjon 2.1 og har ikke endret seg når det gjelder kompatibilitet. Koden vil fungere på enhver moderne versjon av WordPress.
Må jeg tømme hurtigbufferen etter å ha satt inn koden?
Nei. WordPress-hooks registreres i sanntid ved hver forespørsel til administrasjonspanelet. Bare oppdater innleggslistesiden. Hvis du bruker hurtigbufring på tjenersiden (Redis, Varnish), påvirker det ikke administrasjonspanelet, som er ekskludert fra hurtigbufring som standard.
Kan jeg legge til forfatter-rullegardinmenyen uten tilgang til functions.php?
Ja, via en kodesnutt-utvidelse. De gratis Code Snippets, WPCode eller FluentSnippets vil fungere. Sett inn koden som en PHP-snutt med autostart, så vil den fungere på samme måte som i
functions.php. Fordelen med en snuttbehandler er at en kodefeil ikke vil krasje nettstedet. Utvidelsen vil fange opp den fatale feilen og deaktivere snutten.
Hvorfor vises ikke rullegardinmenyen på en skjerm for egendefinert innholdstype?
Snutten er bevisst begrenset til
edit-post- ogedit-page-skjermene. For å legge til egendefinert innholdstype, utvid betingelsen i$screen->id-sjekken (se «Finjustering»-delen). Merk: for egendefinerte innholdstyper registrert uten forfatterstøtte ('supports' => array('author')), vil ikke forfatterfiltrering fungere selv om rullegardinmenyen er til stede.
Kommer snutten i konflikt med utvidelser som Admin Columns eller Adminimize?
Nei. Disse utvidelsene fungerer på andre hooks og endrer tabellkolonner, ikke filterraden.
restrict_manage_postslegger til valgmenyen før «Filtrer»-knappen, i en sone som kolonneutvidelser ikke berører. I løpet av tre års bruk på nettsteder med flere forfattere er det ikke registrert noen konflikter.
Er det verdt å legge til forfatter-rullegardinmenyen på nettstedet ditt
Hvis mer enn to personer publiserer på nettstedet, definitivt ja. «Mine»-filteret viser den aktuelle brukerens innlegg, men lar deg ikke bytte til en kollegas artikler. Forfatter-rullegardinmenyen lukker dette gapet uten utvidelser og uten databasebelastning. wp_dropdown_users() gjør én spørring via get_users(), som WordPress hurtigbufrer.
For en soloblogg gir filteret ingen mening. Du er uansett eneste forfatter. Men så snart en person til dukker opp, vil tiden du sparer ved umiddelbar filtrering veie opp for de tre minuttene det tar å sette inn koden.
Kopier snutten inn i functions.php eller via Code Snippets, oppdater innleggslistesiden, og sjekk forfatterfiltrering i kombinasjon med datofilteret. Hvis du trenger å tilpasse til din rollestruktur og dine innholdstyper, gir parameterne role__in, exclude og orderby full kontroll over listeinnholdet uten ekstra utvidelser.



