20+ användbara kodsnuttar för functions.php – Anpassa WordPress utan plugins

Skriven av Daniel Seker

WordPress erbjuder en god flexibilitet för utvecklare och webbplatsägare. En av de mest kraftfulla filerna i ett WordPress-tema är functions.php, där du kan lägga till anpassad kod för att ändra och utöka funktionaliteten.

I denna guide delar vi 20+ kodsnuttar som hjälper dig att skräddarsy din WordPress-tema på ett smidigt och säkert sätt.

När du arbetar med functions.php i WordPress är det viktigt att vara väldigt försiktig, eftersom denna fil styr mycket av webbplatsens funktionalitet. Att lägga till eller ändra kod här kan ge stora förbättringar, men om något går fel kan det också orsaka allvarliga problem, såsom att hela webbplatsen kraschar eller blir otillgänglig. En felaktig kodrad kan skapa en så kallad ”white screen of death”, där du inte längre kan komma åt din sajt.

För att minimera riskerna rekommenderas det att alltid säkerhetskopiera din webbplats innan du gör några ändringar i functions.php. Om möjligt, arbeta på en staging-sajt eller en lokal utvecklingsmiljö först, så att du kan testa koden utan att påverka den live sajten. Kom också ihåg att alltid skriva kod noggrant och dubbelkolla den innan du sparar filen.

Anpassning av användarupplevelse

Anpassa webbplatsens titel

Vill du lägga till ett eget prefix i titeln på alla sidor? Med functions.php kan du automatiskt modifiera sidtitlar utan att redigera varje inlägg manuellt. Så här lägger du till webbplatsens namn före sidtiteln:

function custom_title_prefix($title) {
    return 'Min Webbplats | ' . $title;
}
add_filter('wp_title', 'custom_title_prefix');

Anpassa inloggningssidan

Om du vill ge din WordPress-inloggningssida ett personligt utseende, kan du ändra logotypen. Perfekt för dig som vill ge en mer professionell touch till din webbplats!

function custom_login_logo() {
    echo '<style type="text/css">
        #login h1 a { background-image: url(' . get_stylesheet_directory_uri() . '/images/custom-logo.png) !important; }
    </style>';
}
add_action('login_head', 'custom_login_logo');

Lägg till Google Fonts till ditt tema

Vill du använda en specifik Google Font på din WordPress-sida? Perfekt för nybörjare som vill anpassa sitt temas typografi utan att redigera CSS-filer manuellt. Här är koden:

function add_google_fonts() {
    wp_enqueue_style('custom-google-fonts', 'https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap', false);
}
add_action('wp_enqueue_scripts', 'add_google_fonts');

Omvandla inläggstitlar till versaler

Vill du att alla inläggstitlar automatiskt ska visas i versaler?

Kan vara snyggt för bloggar eller nyhetssidor där du vill ha ett enhetligt utseende.

function uppercase_post_titles($title) {
    return strtoupper($title);
}
add_filter('the_title', 'uppercase_post_titles');

Byt standard ”Från”-adress i e-postutskick

När WordPress skickar e-post (t.ex. lösenordsåterställning) kan du ändra avsändaradressen. Detta ser mer professionellt ut än den generiska WordPress-adressen.

function custom_email_sender($email) {
    return 'no-reply@dindomän.se';
}
add_filter('wp_mail_from', 'custom_email_sender');

Anpassa inloggningssidan

Vill du visa ett välkomstmeddelande på inloggningssidan? Och möjligtvis visa upp din eller företagets egna logga. Detta kan vara perfekt om du har en medlemsportal eller en företagsinloggning.



        #login h1 a {
            background-image: url(' . esc_url( get_stylesheet_directory_uri() ) . '/images/custom-logo.png) !important;
            background-size: contain;
            width: 100%;
            height: 80px;
        }
    ';
}
add_action('login_head', 'custom_login_logo');

// Lägg till ett anpassat välkomstmeddelande på inloggningssidan
function custom_login_message( $message ) {
    if ( empty( $message ) ) {
        return '';
    }
    return $message;
}
add_filter('login_message', 'custom_login_message');

Lägg till en ”senast uppdaterad”-notis i inlägg

Om du vill visa när ett inlägg senast uppdaterades kan du göra det med detta kodsnutt. Särskilt användbart för bloggar eller guider där aktuellt innehåll är viktigt.

function last_updated_date($content) {
    if (is_single() && 'post' === get_post_type()) {
        $updated_time = get_the_modified_time('F j, Y');
        return '<p><em>Senast uppdaterad: ' . $updated_time . '</em></p>' . $content;
    }
    return $content;
}
add_filter('the_content', 'last_updated_date');

Innehållshantering och struktur

Automatiskt lägga till ”Läs mer”-länk i utdrag

Om du vill att alla inläggsutdrag ska sluta med en ”Läs mer”-länk kan du använda detta enkla trick. Bra för att förbättra användarupplevelsen och få besökare att läsa hela inlägget!

function custom_excerpt_more($more) {
    return '... <a href="' . get_permalink() . '">Läs mer</a>';
}
add_filter('excerpt_more', 'custom_excerpt_more');

Ändra längden på utdrag

Ändra hur många ord som visas i utdrag (excerpt) av dina inlägg. Kan vara bra om du vill uppnå en särskilt stil och design.

function custom_excerpt_length($length) {
    return 20; // Ändra till önskat antal ord
}
add_filter('excerpt_length', 'custom_excerpt_length', 999);

Lägg till en anpassad widget-area

Om du vill att din sidopanel eller footer ska ha en egen widget-area kan du enkelt registrera en ny. Detta tillåter dig att dra och släppa widgets i WordPress-panelen utan att behöva koda.

function custom_sidebar() {
   register_sidebar(array(
       'name' => 'Anpassad Sidopanel',
       'id' => 'custom_sidebar',
       'before_widget' => '<div class="widget">',
       'after_widget' => '</div>',
       'before_title' => '<h3>',
       'after_title' => '</h3>',
     ));
}
add_action('widgets_init', 'custom_sidebar');

Ändra standardgravatar

Ändra standardgravataren som visas för användare som inte har en egen gravatar.

function custom_default_avatar($avatar_defaults) {
    $custom_avatar = get_template_directory_uri() . '/images/default-avatar.png';
    $avatar_defaults[$custom_avatar] = 'Anpassad Gravatar';
    return $avatar_defaults;
}
add_filter('avatar_defaults', 'custom_default_avatar');

Rensa all innehåll av specifika post typer

Denna rensar all innehåll av en viss typ sort, var försiktig med denna snutt då all innehåll av den typen/klassen går förlorad.

function delete_custom_post_type_content() {
    $post_type = 'zzz'; // Replace with your custom post type (e.g., 'quotes', 'post', etc.)

    // Query to get all posts of the custom post type
    $args = array(
        'post_type'      => $post_type,
        'posts_per_page' => -1, // Get all posts
        'post_status'    => 'any', // Get posts in any status (published, draft, etc.)
    );

    $query = new WP_Query($args);

    // Loop through each post and delete it
    while($query->have_posts()) {
        $query->the_post();
        wp_delete_post(get_the_ID(), true); // true means force delete (without going to trash)
    }
    // Reset post data after query
    wp_reset_postdata();
}
add_action('init', 'delete_custom_post_type_content'); // Run this on WordPress initialization

Säkerhet och prestanda

Begränsa antalet inloggningsförsök

Vill du blockera någon som försöker logga in för många gånger? Detta kan vara bra för säkerheten genom att förhindra att någon gissar lösenordet genom upprepade försök.

function limit_login_attempts($user, $username, $password) {
    $attempts = get_transient('login_attempts_' . $username) ?: 0;

    if ($attempts >= 3) {
        return new WP_Error('too_many_attempts', __('För många misslyckade försök. Försök igen senare.'));
    }

    set_transient('login_attempts_' . $username, $attempts + 1, 300);
}
add_filter('wp_authenticate_user', 'limit_login_attempts', 10, 3);

Förhindra inloggningsförsök med fel användarnamn

För att förbättra säkerheten kan du blockera inloggningar där användarnamnet inte existerar, detta skyddar din webbplats från brute-force-attacker.

function block_invalid_usernames($username, $errors) {
    if (!username_exists($username)) {
        $errors->add('invalid_username', __('Felaktigt användarnamn.'));
    }
}
add_action('wp_authenticate', 'block_invalid_usernames', 10, 2);

Avaktivera WordPress-emojis för bättre prestanda

WordPress laddar automatiskt emoji-skript, vilket kan sakta ner sidan. Detta kodsnutt kan snabba upp laddningstiden och minska onödiga HTTP-förfrågningar. Så här tar du bort det:

function disable_emojis() {
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('wp_print_styles', 'print_emoji_styles');
}
add_action('init', 'disable_emojis');

Avaktivera kommentarer på hela sajten

Om du inte vill använda kommentarer på din webbplats kan du inaktivera dem helt.

function disable_comments_globally() {
    // Inaktivera kommentarer för inlägg
    remove_post_type_support('post', 'comments');
    // Inaktivera kommentarer för sidor
    remove_post_type_support('page', 'comments');
    // Stäng av kommentarsfunktioner helt
    add_filter('comments_open', '__return_false', 20, 2);
    add_filter('pings_open', '__return_false', 20, 2);
}
add_action('init', 'disable_comments_globally');

Städa upp WordPress-administrationspanelen

Förbättra säkerheten genom att inaktivera möjligheten att redigera filer direkt från WordPress-administrationspanelen.

define('DISALLOW_FILE_EDIT', true);

Ta bort menyalternativ i WordPress-admin

Om du bygger en webbplats för en kund kan det vara bra att ta bort onödiga menyalternativ från WordPress-admin. Detta hjälper till att förenkla adminpanelen och undvika förvirring för nybörjare.


function remove_admin_menus() {
    remove_menu_page('edit.php');                   // Inlägg
    remove_menu_page('edit-comments.php');          // Kommentarer
    remove_menu_page('themes.php');                 // Utseende
    remove_menu_page('plugins.php');                // Tillägg
    remove_menu_page('users.php');                  // Användare
    remove_menu_page('tools.php');                  // Verktyg
    remove_menu_page('options-general.php');        // Inställningar
}
add_action('admin_menu', 'remove_admin_menus');
;

Dölja WordPress-versionsnumret för säkerhet

Hackers kan utnyttja kända säkerhetshål i gamla versioner av WordPress. För att skydda din webbplats kan du dölja versionsnumret. Ett enkelt sätt att förbättra säkerheten utan att använda ett extra plugin!

function remove_wp_version() {
    return '';
}
add_filter('the_generator', 'remove_wp_version');

Anpassning av funktionalitet

Lägg till en anpassad posttyp (t.ex. ”Portfölj”)

Om du behöver en ny sektion för exempelvis ”Projekt” eller ”Recensioner”. Detta gör det möjligt att skapa en mer dynamisk WordPress-webbplats med egna innehållstyper.

function create_custom_post_type() {
    register_post_type('portfolio',
        array(
            'labels' => array('name' => __('Portfölj')),
            'public' => true,
            'has_archive' => true,
            'supports' => array('title', 'editor', 'thumbnail')
        )
    );
}
add_action('init', 'create_custom_post_type');

Aktivera / deaktivera kommentarer för specifika sidor

Använd en filterfunktion för att välja vilka sidor eller inlägg som ska ha kommentarer aktiverade eller inaktiverade.

function disable_comments_on_pages($open, $post_id) {
    $post = get_post($post_id);
    if ($post->post_type == 'page') {
        return false;  // Inaktivera kommentarer på sidor
    }
    return $open;  // Behåll standardbeteendet för inlägg
}
add_filter('comments_open', 'disable_comments_on_pages', 10, 2);

Göm kommentarfliken på admin sidan

Om din webbsajt inte har kommentarsfunktion över huvud taget kan du gömma den då överflödiga fliken med följande kod.

function remove_comments_menu() {
   remove_menu_page('edit-comments.php'); // Remove Comments from the admin menu
}
add_action('admin_menu', 'remove_comments_menu', 999);

Göm nyhetsboxen på admin sidan

Om du inte bryr dig om de senaste WP nyheterna och events så kan du ta bort den boxen från admin sidan med.

function remove_all_dashboard_widgets() {
    remove_meta_box('dashboard_primary', 'dashboard', 'side'); // Events and News
}
add_action('wp_dashboard_setup', 'remove_all_dashboard_widgets');

Vart placerar man dessa kodsnuttar?

För att lägga till de kodsnuttar vi delar i den här guiden i din WordPress-webbplats, finns det flera alternativ beroende på dina preferenser och vilken typ av anpassningar du gör. Här är några vanliga metoder för att införa koden i functions.php och andra filhanteringsalternativ:

1. Direkt i functions.php

Det vanligaste sättet att lägga till anpassad kod är att redigera functions.php-filen som finns i ditt aktiva tema. Detta gör att koden körs direkt från temat och påverkar funktionaliteten på din webbplats.

Så här gör du:

  • Gå till Utseende > Temaredigerare i WordPress adminpanel.
  • Välj functions.php från filträdet på höger sida.
  • Kopiera och klistra in den kodsnutt du vill använda längst ner i filen.
  • Spara ändringarna.

Viktigt: Var försiktig när du redigerar denna fil, eftersom felaktig kod kan ta ner hela din webbplats (som vi nämnt tidigare). Kom ihåg att alltid skapa en säkerhetskopia först!

2. Använda ett child theme

För att undvika att dina ändringar försvinner när temat uppdateras, rekommenderas det att använda ett child theme. Detta skapar ett separat tema som ärver funktionaliteten från ditt huvudtema, men där du kan göra anpassningar utan att påverka huvudtemat.

Så här skapar du ett child theme:

  1. Skapa en mapp för ditt child theme i wp-content/themes/.
  2. Skapa en fil som heter style.css och en fil som heter functions.php.
  3. I style.css, lägg till grundläggande information om ditt child theme.
  4. I functions.php, använd wp_enqueue_scripts för att inkludera föräldratemats CSS.
  5. Lägg till de kodsnuttar du vill anpassa under child theme:s functions.php.

Detta säkerställer att dina ändringar inte förloras vid temauppdateringar.

3. Använda ett anpassat plugin

Om du inte vill röra temat eller vill hålla alla ändringar centralt på ett ställe, kan du skapa ett eget anpassat plugin. Detta gör att din kod förblir intakt även om du byter tema.

Så här gör du:

  1. Skapa en mapp i wp-content/plugins/ och ge den ett relevant namn (t.ex. ”custom-functions”).
  2. Skapa en fil som heter custom-functions.php inuti den mappen.
  3. Lägg till följande kod högst upp i filen för att definiera pluginet:
<?php
/*
Plugin Name: Custom Functions
Description: Anpassade funktioner för min WordPress-webbplats
Version: 1.0
Author: Ditt namn
*/
  1. Klistra in de kodsnuttar du vill använda under denna definition.
  2. Gå till Plugins > Installerade plugins i WordPress adminpanel och aktivera ditt plugin.

4. Använda ett code snippets-plugin

För de som inte är bekväma med att redigera koden direkt, finns det plugins som gör det enklare att hantera kodsnuttar. Ett populärt plugin för detta ändamål är Code Snippets.

Så här gör du:

  1. Installera och aktivera Code Snippets-pluginet via Plugins > Lägg till nytt.
  2. När pluginet är aktiverat, gå till Snippets > Lägg till nytt.
  3. Klistra in din kod i det medföljande fönstret.
  4. Klicka på Spara och aktivera.

Med detta tillvägagångssätt kan du enkelt aktivera eller inaktivera olika funktioner utan att röra functions.php-filen.

5. Testa i en staging-miljö

Oavsett vilken metod du väljer, är det alltid en god idé att testa din kod på en staging-sajt eller lokal utvecklingsmiljö innan du implementerar den på din live-webbplats. På så sätt kan du undvika att orsaka några problem som kan påverka användarupplevelsen eller webbplatsens funktionalitet.

Genom att noggrant välja var du lägger in dina kodsnuttar, kan du effektivt anpassa din WordPress-webbplats utan att ta onödiga risker.

<a href="https://cyberinkomst.se/author/danielseker/" target="_self">Daniel Seker</a>

Daniel Seker

Daniel Seker är en digital marknadsförare, utvecklare och SEO-specialist som har många års erfarenheter inom digital marknadsföring. Han arbetar idag som konsult för mindre till medelstora företag och som webbansvarig på läkemedelsföretaget Sensidose AB och Navamedic AS.

0 kommentarer

Skicka en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Våra senaste artiklar

Arrays i WordPress och PHP

Arrays i WordPress och PHP

Arrays är en fundamental datastruktur i PHP, och eftersom WordPress är byggt med PHP, används arrays ofta inom WordPress-utveckling. De hjälper till att hantera och organisera data effektivt, vilket är avgörande för att bygga dynamiska och skalbara webbapplikationer....

Så skapar du ett ”Child theme” för WordPress

Så skapar du ett ”Child theme” för WordPress

Ett child theme (barn-tema) är ett tema som ärver funktionalitet och design från ett annat tema, det så kallade parent-temat (förälder-temat). Att använda child themes är en rekommenderad metod för att säkerställa att dina anpassningar inte går förlorade vid...