Pålitliga WordPress-handledningar, när du behöver dem som mest.
Nybörjarguide till WordPress
WPB Cup
25 miljoner+
Webbplatser som använder våra plugins
16+
År av WordPress-erfarenhet
3000+
WordPress-handledningar
av experter

Hur man skapar en anpassad WordPress-widget (steg för steg)

Widgets låter dig lägga till element som inte är innehåll i en sidofält eller något widget-redo område på din WordPress-webbplats. Du kan använda dem för att lägga till banderoller, annonser, formulär för nyhetsbrevsregistrering och andra element på din webbplats.

Du kan också skapa en anpassad widget för att bädda in unika funktioner med en personlig touch som sociala medieflöden, senaste inlägg eller HTML-taggar.

På WPBeginner använder vi anpassade widgets för att visa olika typer av innehåll i vår webbplats sidofält. Och i den här artikeln kommer vi att visa dig hur du skapar en anpassad WordPress-widget, steg för steg.

Hur man skapar en anpassad WordPress-widget (steg för steg)

Notera: Den här handledningen är för gör-det-själv WordPress-användare som lär sig WordPress-utveckling och kodning.

Vad är en WordPress-widget?

WordPress-widgets innehåller kodavsnitt som du kan lägga till i din webbplats sidofält eller widget-redo områden.

Tänk på dem som moduler som du kan använda för att lägga till olika element och funktioner på din webbplats.

Som standard kommer WordPress med en standarduppsättning widgets som du kan använda med vilket WordPress-tema som helst. För mer information, se vår nybörjarguide om hur man lägger till och använder widgets i WordPress.

WordPress widgets-sektion

WordPress tillåter också utvecklare att skapa sina egna anpassade widgets.

Många premium WordPress-teman och plugins levereras med sina egna anpassade widgets som du kan lägga till i dina sidofält.

Du kan till exempel lägga till ett kontaktformulär, ett anpassat inloggningsformulär, ett fotogalleri, ett e-postlist-anmälningsformulär och mer till en sidofält utan att skriva någon kod.

Med det sagt, låt oss se hur du enkelt kan skapa dina egna anpassade widgetar i WordPress.

Innan du skapar en anpassad widget i WordPress

Om du lär dig WordPress-kodning, då behöver du en lokal utvecklingsmiljö. Detta ger dig friheten att lära dig och testa saker utan oro för att din webbplats ska vara live.

Du kan installera WordPress lokalt på Mac med MAMP eller Windows med WAMP.

Om du redan har en live-webbplats kan du flytta den till en lokal värd. För mer information, se vår guide om hur man flyttar en live WordPress-webbplats till en lokal server.

Därefter finns det flera sätt att lägga till din anpassade widgetkod i WordPress.

Helst kan du skapa ett webbplatsspecifikt plugin och klistra in din widgetkod där. Detta låter dig lägga till kod i WordPress som inte är beroende av ditt WordPress-tema.

Du kan också klistra in koden i ditt temas functions.php-fil. Den kommer dock bara att vara tillgänglig när det specifika temat är aktivt.

Ett annat verktyg du kan använda är pluginet WPCode som låter dig enkelt lägga till anpassad kod på din webbplats.

I den här handledningen skapar vi en enkel widget som bara hälsar besökare. Målet här är att bekanta dig med WordPress widget-klassen.

Redo? Låt oss börja.

Skapa en grundläggande WordPress-widget

WordPress levereras med en inbyggd WordPress Widget-klass. Varje ny WordPress-widget utökar WordPress widget-klassen.

Det finns 19 metoder som nämns i WordPress utvecklarhandbok som kan användas med WP Widget-klassen.

För den här handledningens skull kommer vi dock att fokusera på följande metoder.

  • __construct() : Detta är delen där vi skapar widgetens ID, titel och beskrivning.
  • widget: Detta är där vi definierar utdata som genereras av widgeten.
  • formulär: Den här delen av koden är där vi skapar formuläret med widget-alternativ för backend.
  • uppdatering: Detta är delen där vi sparar widgetalternativ i databasen.

För att skapa en anpassad widget kan du kopiera och klistra in följande kodavsnitt i din functions.php-fil eller i WPCode (rekommenderas):

<?php

// Creating the widget
class wpb_widget extends WP_Widget {
	function __construct() {
		parent::__construct(
		// Base ID of your widget
			'wpb_widget',

			// Widget name will appear in UI
			__( 'WPBeginner Widget', 'textdomain' ),

			// Widget description
			[
				'description' => __( 'Sample widget based on WPBeginner Tutorial', 'textdomain' ),
			]
		);
	}

	// Creating widget front-end
	public function widget( $args, $instance ) {
		$title = apply_filters( 'widget_title', $instance['title'] );

		// before and after widget arguments are defined by themes
		echo $args['before_widget'];
		if ( ! empty( $title ) ) {
			echo $args['before_title'] . $title . $args['after_title'];
		}

		// This is where you run the code and display the output
		echo __( 'Hello, World!', 'textdomain' );
		echo $args['after_widget'];
	}

	// Widget Settings Form
	public function form( $instance ) {
		if ( isset( $instance['title'] ) ) {
			$title = $instance['title'];
		} else {
			$title = __( 'New title', 'textdomain' );
		}

		// Widget admin form
		?>
        <p>
            <label for="<?php echo $this->get_field_id( 'title' ); ?>">
				<?php _e( 'Title:', 'textdomain' ); ?>
            </label>
            <input
                    class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>"
                    name="<?php echo $this->get_field_name( 'title' ); ?>"
                    type="text"
                    value="<?php echo esc_attr( $title ); ?>"
            />
        </p>
		<?php
	}

	// Updating widget replacing old instances with new
	public function update( $new_instance, $old_instance ) {
		$instance          = array();
		$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';

		return $instance;
	}

	// Class wpb_widget ends here
}

// Register and load the widget
function wpb_load_widget() {
	register_widget( 'wpb_widget' );
}

add_action( 'widgets_init', 'wpb_load_widget' );

Det enklaste sättet att lägga till anpassad kod på din WordPress-webbplats är att använda WPCode. Det är det bästa pluginet för kodavsnitt som hjälper till att hantera och infoga kodavsnitt på din webbplats utan att riskera att bryta något.

Först måste du installera och aktivera pluginet WPCode på din webbplats. Om du behöver hjälp, se vår guide om hur man installerar ett WordPress-plugin.

Efter aktivering kan du gå till Kodavsnitt » + Lägg till avsnitt från WordPress adminpanel. Härifrån väljer du alternativet 'Lägg till din anpassade kod (nytt avsnitt)'.

Lägg till nytt kodavsnitt

Därefter kan du klistra in den anpassade widgetkoden i området Kodförhandsgranskning.

Du måste också klicka på rullgardinsmenyn 'Kodtyp' och välja alternativet 'PHP-snutt'.

Ange anpassad widgetkod

Därefter kan du skrolla ner och välja Infogningsmetod för din kod.

WPCode låter dig välja var koden ska köras. För den här handledningen kan du använda standardalternativen och köra den överallt.

Infogningsmetod i WPCode

När det är gjort kan du scrolla tillbaka till toppen för att spara kodavsnittet.

För att aktivera kodavsnittet, klicka helt enkelt på växlingsknappen till 'Aktiv'.

Aktivera och spara kodavsnitt i WPCode

För att lära dig mer, se vår guide om hur man lägger till anpassad kod på din WordPress-webbplats.

Efter att ha lagt till koden i WordPress måste du gå till sidan Utseende » Widgetar i din WordPress-administrationspanel.

Klicka sedan på ikonen 'Plus' för att lägga till ett block, sök efter 'WPBeginner Widget' och välj den nya widgeten.

Lägg till WPBeginner-widget

Den här widgeten har bara ett formulärfält att fylla i.

Du kan lägga till din text och klicka på knappen 'Uppdatera' för att spara dina ändringar.

Lägg till text i widget och spara

Nu kan du besöka din WordPress-webbplats för att se den anpassade widgeten i aktion.

Här är ett exempel på hur det ser ut på vår demosida.

Nytt exempel på anpassad widget

Lägga till en anpassad widget i WordPress klassiska redigerare

Om du använder klassiska widgetredigeraren för att lägga till nya widgets på din webbplats, då kommer processen att vara liknande.

Det kommer att finnas en ny widget som heter 'WPBeginner Widget' i listan över tillgängliga widgets. Du behöver dra och släppa denna widget i din sidofält.

Ange sedan en titel och klicka på ‘Spara’ för att spara dina widgetinställningar. 

Lägg till widget i WordPress klassiska redigerare

Din nya anpassade widget kommer nu att vara live på din webbplats.

Nu ska vi studera koden igen.

Först registrerade vi ‘wpb_widget’ och laddade vår anpassade widget. Därefter definierade vi vad widgeten gör och hur widgetens backend ska visas.

Slutligen definierade vi hur vi ska hantera ändringar som gjorts i widgeten.

Nu finns det några saker du kanske vill fråga. Till exempel, vad är syftet med textdomain?

WordPress använder 'gettext' för att hantera översättning och lokalisering. Denna textdomain och _e talar om för 'gettext' att göra en sträng tillgänglig för översättning. För att lära dig mer, se vår guide om hur du kan hitta översättningsklara WordPress-teman.

Om du skapar en anpassad widget för ditt tema kan du ersätta textdomain med ditt temas textdomän.

Alternativt kan du använda ett WordPress-översättningsplugin för att enkelt översätta WordPress och skapa en flerspråkig WordPress-webbplats.

Bonus: Lägg till anpassade stilar till dina WordPress-widgets

När du väl har skapat en WordPress-widget kan du även lägga till anpassade stilar till den. Detta kan förbättra din webbplats utseende, upprätthålla konsekvens och dra uppmärksamhet till viktig information.

För att göra detta, besök sidan Utseende » Widgets och lägg till widgeten du vill anpassa. Du kommer nu att se några alternativ för att ändra dess färger och typografi i blockpanelen till höger.

Standardinställningarna för WordPress-widgetens stil

Om widgeten dock inte visar det alternativet kan du anpassa den genom att lägga till CSS-klasser efter att ha expanderat fliken 'Avancerat'.

Nu kan du lägga till anpassad CSS till ditt WordPress-tema som riktar sig mot den specifika CSS-klassen.

Lägga till anpassad CSS-klass till widgets i Blockredigeraren

För det, gå till sidan Utseende » Anpassa och byt till fliken Ytterligare CSS. Här ser du en förhandsgranskning av din webbplats med en ruta för att lägga till dina CSS-regler.

Du kan nu använda anpassad CSS för att anpassa din widgets utseende. För detaljer, se vår handledning om hur du lägger till anpassade stilar till dina WordPress-widgets.

Lägg till CSS-regler

Vi hoppas att den här artikeln hjälpte dig att lära dig hur du enkelt skapar en anpassad WordPress-widget. Du kanske också vill se vår guide om hur man inaktiverar widgetblock i WordPress och vår handledning om hur man tar bort inaktiva widgets i WordPress.

Om du gillade den här artikeln, prenumerera då på vår YouTube-kanal för WordPress-videoguider. Du kan också hitta oss på Twitter och Facebook.

Upplysning: Vårt innehåll stöds av läsarna. Det innebär att om du klickar på några av våra länkar kan vi tjäna en provision. Se hur WPBeginner finansieras, varför det är viktigt och hur du kan stödja oss. Här är vår redaktionella process.

Det ultimata WordPress-verktyget

Få GRATIS tillgång till vår verktygslåda - en samling WordPress-relaterade produkter och resurser som alla proffs bör ha!

Läsarnas interaktioner

30 CommentsLeave a Reply

  1. Strängen 'wpb_text_domain' hittas inte i exempelkoden. Jag gissar att exempelkoden uppdaterades och texten i artikeln inte gjorde det?

    För att bekräfta, är ‘wpb_text_domain’ faktiskt ‘web_widget_domain’ från exempelkoden?

    Tack på förhand för all feedback.

    • Tack för att du påpekade detta, vi kommer att uppdatera den här artikeln och förtydliga detta bättre.

      Admin

  2. Tack för en utmärkt handledning. Jag lade till koden i mitt testplugin och det fungerar perfekt som beskrivet – jag ser widgeten i listan Utseende » Widgets och jag kan lägga till den i sidofältet.
    Men jag ser inte den nya widgeten i listan för sidredigeraren. Saknar jag något, behövs en annan registrering eller inställningar?
    Tack igen för hjälpen.

  3. Jag har skapat ett CRUD-plugin och jag behöver använda det på en sida, kan du guida mig hur jag använder det pluginet på sidan?

    • Det skulle bero på hur du ställde in pluginet, för att ha det på en sida kan du antingen leta efter att använda en kortkod för visning på framsidan eller titta i alternativ-API:et om du ville visa det på administratörssidan av en webbplats.

      Admin

  4. Hur kan jag skapa fler än 1 anpassad widget?
    Och hur kan jag ställa in andra fält som radio, kryssruta, rullgardinsmeny, text i widgeten?

    • Du skulle behöva ersätta wpb_widget med vad du vill att din nya widget ska kallas och sedan skulle koden bero på vad du specifikt vill lägga till. Om du tittar i WordPress codex kan du se de olika tillgängliga koderna.

      Admin

  5. Hej!

    För närvarande utvecklar jag ett plugin och jag behöver skapa en widget som låter användaren lägga till en specifik funktionalitet på sin webbplats.
    Jag kopierade koden för din widget till en fil och sparade filen i min plugins katalog. Jag använde add_action och do_action i min plugins huvudfil för att ladda den men det fungerar fortfarande inte. Kan du hjälpa mig, tack?

    Tack!

    • Tyvärr skulle det bero mycket på hur din plugin är konfigurerad, du kanske vill se till att båda delarna av denna kod laddas för att widgeten ska kunna läggas till och visas.

      Admin

  6. En kort fråga, vad händer om jag vill skapa widgets där jag också kan placera andra widgets? Som tomma bootstrap-kolumner 6-3-3 t.ex. och i varje kolumn kan jag sedan placera widgets som bild, text, senaste inlägg etc.

    Finns det ett kommando / nyckelord för att signalera att det finns plats för andra widgets i denna widget...

    eftersom jag är lite förvirrad över mitt eget skapade tema och hur WP fungerar... du förstår att jag är nybörjare ^^

    Jag har redan lagt in allmän information som sidtitel, gjort widgetområden i min sidfot så att jag kan placera menyer, relaterade länkar etc. där. Det fungerade.

    Men nu är jag förvirrad över hur jag kan realisera mitt innehåll i WordPress som jag designade det tidigare. Kanske några nyckelord är hjälpsamma för att läsa mer om dem.

  7. Hur får man ett anpassat inläggstypfält från wp-databasen och använder en widget för att visa det på startsidan?

  8. jag kan inte lägga till två anpassade widgets .. den andra widgeten visas inte ....
    vad ska jag göra ??? .. snälla hjälp

  9. Hej, jag skulle vilja veta var jag kan hitta "anpassad meny" bland tillgängliga widgets. Den visas inte och jag har inte kunnat lägga till en sida i sidfoten via den här widgeten.

    tack för din hjälp!!!!

  10. Hej, hur skulle jag visa en logotyp istället för text. Skulle det räcka att ersätta logotypens URL med texten.
    Tack på förhand.

  11. Vilken kom först, widgeten eller appen?
    Måste en widget registreras? Om så är fallet, hur?
    Hur skyddar du bäst din idé om en widget eller app?
    Tack alla

  12. Dessa instruktioner fungerade utmärkt för att skapa min anpassade widget. Jag kan dock inte lista ut hur jag ändrar teckenstorleken till 60px. Jag lyckades lägga till CSS i Divi-temainställningarna som centrerade texten och lade till en linjebård. Men hur ändrar jag stilen på teckensnittet, snälla? Att lägga till "font-size:60px" fungerar inte. Jag vill att teckensnittet ska vara stort, som en slagord som löper över sidan. Tack.

  13. Hej! Jag hoppas att du kan hjälpa mig.

    Jag har skapat en anpassad inläggstyp som visar tidtabellen för en butik. Självklart kan du skapa så många tidtabeller du vill, men min nödvändighet är att visa en given tidtabell i webbplatsens sidofält.

    För detta ändamål skapade jag en widget som loopar tidtabellsinläggen och visar endast 1 (nämligen det första, eftersom jag sorterade i ASC-ordning). Detta är en tillfällig lösning, bara för att se om widgeten fungerar och det gör den faktiskt.

    Vad jag verkligen vill göra är att visa i backend en rullgardinslista över alla inlägg som tillhör inläggstypen "timetable" så att jag kan välja den jag behöver när jag behöver den och visa den i frontend. Hur kan jag göra detta?

    Tack om du kan/vill hjälpa till.

Lämna ett svar

Tack för att du väljer att lämna en kommentar. Tänk på att alla kommentarer modereras enligt vår kommentarspolicy, och din e-postadress kommer INTE att publiceras. Använd INTE nyckelord i namn fältet. Låt oss ha en personlig och meningsfull konversation.