Senaste inläggen från UEX

  • Wordpress kärna och ordning

    Här kan du hitta mer om Wordpress.

    Om man ska bygga en hemsida i Wordpress med hjälp av plugins, teman och allmän PHP-kod via functions.php så kan det vara bra att känna till i vilken ordning Wordpress laddas internt. Genom att ha koll på detta så blir koden i projektet mycket bättre. Det är inte alltid så lätt att veta om alla konstanter och hooks som körs i systemet.

    Ett exempel är att man ska lägga till lite kod som ska köras bara i admin men ej i frontend eller under AJAX requests. Många skulle så säga att man bara använder sig av is_admin(). Detta kommer inte att fungera eftersom den också retunerar true för AJAX request mot admin-ajax.php.

    Eller så kanske du kör in lite kod via admin_init hooken och sedan undrar varför det funkar med AJAX requests med. Eller ett annat exempel. När någon kod exekveras i temats functions.php-fil och har beroende av en annan kod som är skriven i init hooken. Då kan det bli fel eftersom koden i functions.php körs före init.

    Det finns massor av fall som dessa och då underlättar då väldigt mycket att förstå hur Wordpress laddar allt internt.

    Wordpress-laddningsordning

    Att förstå hela flödet med Wordpress kan ta ett tag att lära sig. Men jag tycker att denna illustration verkligen gör det lättare att förstå processen och ordningen.

    wordpress-laddningsordning.png

    Det finns fyra huvud varianter när den laddar Wordpress.

    FrontEnd (theme) laddning. REST request laddning. Admin panel laddning. AJAX request (admin-ajax.php) laddning.

    I alla dessa fall så laddas kärnan wp-load.php.

    WordPress kärnans laddningsordning i text

    Som man ser nedan så körs allt genom wp-load.php

    wp-load.php wp-config.php wp-settings.php // Load functions: wp_debug_mode(), timer_start(), require_wp_db() ... // Constants functions: wp_initial_constants(), wp_cookie_constants() ... // Plugin functions (hooks, activation): do_action(), plugin_dir_url(), register_activation_hook(). // Constants setup: WP_START_TIMESTAMP, WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT, WP_DEBUG, SCRIPT_DEBUG, WP_CONTENT_DIR, WP_CACHE. // Standardize server variables: wp_fix_server_vars(). // maintenance mode check: wp_maintenance(). // Enables load speed timer: timer_start(). // Debug mode check: wp_debug_mode(). // Includes 'wp-content/advanced-cache.php' if it is exists and WP_CACHE is on. // Data base. $wpdb. require_wp_db(). // Loads 'wp-content/db.php' if it is exists. Creates DB connection // and setups all DB related variables: prefixes and so on... // Object cache: 'wp-content/object-cache.php' if exists or 'wp-include/cache.php'. // Base WP hooks (filters): default-filters.php. // Multisite is enabled (if need) // Loads 'wp-content/sunrise.php' if exists (for multisite only). // register_shutdown_function( 'shutdown_action_hook' ) // SHORTINIT: stopping the download, where there is only the most basic. if( SHORTINIT ) return false; // The localization functions are connected. // Checks whether WP is installed: wp_not_installed(). // Connects a bunch of files with the rest of the WordPress functions. // Connects Must-use plugins and corresponding action is triggered: do_action( 'muplugins_loaded' ); // cookie, ssl constants: COOKIEPATH, COOKIE_DOMAIN // Common global vars: $pagenow, $is_apache, $is_nginx, $is_lynx // Client global vars: $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone, $is_IE, $is_edge // Active plugins are connected // pluggable functions are connected: pluggable.php. // triggers hook do_action( 'plugins_loaded' ); // Force add slashes for $_POST, $_REQUEST ... values. See. wp_magic_quotes(). // Global vars: // $wp_the_query — new WP_Query() // $wp_query — $wp_the_query // $wp_rewrite — new WP_Rewrite() — constants, functions, rewrite rules. // $wp — new WP() — base WP query (runs later). // $wp_widget_factory — new WP_Widget_Factory() // $wp_roles — new WP_Roles() // Current theme do_action( 'setup_theme' ); // functions.php (child) - first connect functions.php of the child theme // functions.php (parent) - then connect functions.php of the main theme // WP translation file: load_default_textdomain() do_action( 'after_setup_theme' ); // first hook allowed in the theme // Sets the current user (creates an object). // See. wp_get_current_user() // The user is often already defined by plugins after the 'plugins_loaded' action. $wp->init(); // init action. The time when WP environment, themes and plugins is already activated, // but nothing has been displayed on the screen yet: do_action( 'init' ); // Widget registration: 'widget_init' action // Checking site status for multisite. // The site may be: deleted, inactive, in the archive. See. ms_site_check() // If the site failed the check, the drop file will be called and PHP is aborted via die(). // Same as `init` only after the status check. // This line of code can be not reached. For example on REST request. do_action( 'wp_loaded' );

    När man laddar kärnan så körs alltid functions.php i aktivt tema, även i Wordpress admin. Detta är väldigt smidigt för oss utvecklare. Om inte wp-load.php hittar wp-config.php så kommer installations processen komma igång. Man kan säga att wp-settings.php är en stor del av Wordpress kärnan.

    Efter att konfigurationen i wp-config.php är funnen så kopplar Wordpress upp sig mot databasserven.

    Ska fundera lite på nästa section i denna tråd, man kan läsa mera här. 😉

    läs mer
  • Packa upp arkivfilen .wpress manuellt

    Om man inte kan ta backup manuellt på en Wordpress-installation så kan jag rekommendera All-in-One WP Migration för att migrera eller flytta en hemsida. Men det kostnadsfria pluginet finns dock en begränsning på 512 MB när man skall återställa .wpress

    All-in-One WP Migration är tänkt att användas av den icke-tekniska användaren och kommer med funktioner som låter dig migrera din WordPress-webbplats med liten eller ingen teknisk kunskap eller erfarenhet.

    Om man är lite mera nördig och vill packa upp .wpress formatet som detta verktyg skapar så kan man använda sig av detta. Detta är användbart ifall man vill manuellt återställa filer från en All-in-One WP Migration backup. Man slipper även då begränsningen på 512 MB.

    Packa upp med hjälp av nodejs

    npx wpress-extract <fil>.wpress

    Packa upp med hjälp av php

    git clone https://github.com/ElliottLandsborough/php-wpress-extract cd php-wpress-extract/ php run.php <fil.wpress> <Sökväg där det ska packas upp>

    Wpress-extract extraherar innehållet i "wp-content"-katalogen tillsammans med webbplatsens databas. För att återställa sajten måste du installera en helt nytt WordPress och sedan byta ut wp-content.

    Slutligen måste du rengöra den nya WordPress-databasen och importera SQL-databasen du fick från wpress-arkivet.

    Här finns källkoden wpress-extract. php-wpress-extract

    läs mer
  • Node SASS

    Om du vill generera css från en scss sass fil

    npx sass --style compressed <fil>.scss > style.css

    Du kan även använda dig av node-sass tool. Om du har svårt att installera nodejs se denna guild: Installera nodejs utan root på ett webbhotell

    läs mer
  • Shared hosting

    Om du använder dig av ett webbhotell som inte har nodejs så kan du lägga till det själv utan att vara root. Många använder Siteground som inte har nodejs och då finns denna lösning. Börja med att hitta rätt version här https://nodejs.org/dist/.

    cd ~ wget -qO- https://nodejs.org/dist/v14.8.0/node-v14.8.0-linux-x64.tar.xz | tar -Jvx mv node-* nodejs; mkdir bin; cp nodejs/bin/node bin; cd bin ln -s ../nodejs/lib/node_modules/npm/bin/npm-cli.js npm ln -s ../nodejs/lib/node_modules/npm/bin/npx-cli.js npx; cd ..

    Om du inte har $HOME/bin i din path så får du lägga till detta i den .profile.

    läs mer
  • Felsökning

    I många fall så har man inte tillgång till serversidan när du har webbhotell. Då kan det vara smidigt att felsöka variabler som du har i .htaccess. Det man behöver göra är att dumpa en del av informationen som mod_rewrite använder till url-fältet så man kan läsa informationen.

    Här ser ni ett exempel på detta i .htaccess filen.

    RewriteCond %{QUERY_STRING} !dump RewriteRule (.*) http://www.minegenexempeldoman.se/$1?dump&the-request=%{THE_REQUEST}&http-host=%{HTTP_HOST} [R=302,L,QSA]

    Byt ut www.minegenexempeldoman.se mot den domänen du har.

    Om ni behöver exempel på variabler som Apache så finner ni det här.

    läs mer

Nyheter

Lilo & Stitch sopar banan med Minecraft - remaken rusar mot en miljard dollar i biljettintäkter2025-07-03 22:47

Disney‑remaken av Lilo & Stitch har klättrat förbi A Minecraft Movie på den globala biotoppen och är nu med sina (cirka) 957 miljoner dollar i biljettintäkter den näst mest framgångsrika filmen i år. Och trots blott sex veckor förflutit sedan premiären har man redan bekräftat att en uppföljare är på gång.

Redan på Memorial Day‑helgen satte Lilo & Stitch rekord med 182 miljoner dollar i biljettförsäljning. Men trots framgångarna har kritiken varit blandad - med vissa som menar på att det är ett själlöst försök att casha in på nostalgi. Men samtidigt hyllas också produktionen för sin omsorgsfulla CGI och starka skådespelarinsatser.

Det är tydligt att familjer älskar den - men kanske inte kritikerna och här i Sverige toppar Lilo & Stitch biolistan och går fortfarande starkt inför sommaren.

Har du sett Lilo & Stitch?

<bild>Disney dominerar på bio.</bild>


Anthem‑servrarna stängs den 12:e januari nästa år2025-07-03 21:15

Stop killing games var det ju någon som sa. EA har uppenbarligen inte lyssnat för nu planerar man att en gång för alla fimpa servrarna till Anthem. Det Bioware-utvecklade fiaskot som lanserades i februari 2019 med ambitiösa mål, men mötte snabbt kritik för sitt tunna innehåll och buggar.

I en bloggpost skriver man:

Hi everyone, We have an important update to share regarding Anthem. After careful consideration, we will be sunsetting Anthem on January 12, 2026. This means that the game will still be playable online for the next 180+ days. As of today, you can no longer purchase in-game premium currency, but you can still use your remaining balance until the servers go offline. We deeply appreciate your dedication, passion and support over the years and we'd like to thank you for that.

Man planerade en stor omarbetning och nylansering under Anthem 2.0. Något som dock aldrig blev av och fram tills nu har spelet levt vidare i tysthet. Men från och med den 12:e januari nästa år så kommer det inte längre gå att leka Iron Man och spelet blir helt obrukbart när servrarna går offline.

Från och med idag går det inte heller längre att köpa nya premium‑valutor i spelet, men de som redan har pengar på kontot kan fortsätta handla digitalt fram till nedstängningen. Anthem försvinner dessutom från EA Play‑biblioteket den 15:e augusti.

EA är dock noga med att poängtera hur inga nedskärningar eller personalförflyttningar sker i samband med nedstängningen - det handlar bara om att spelet nått sitt slut. För fans innebär detta en sista chans att logga in, slutföra uppdrag och insupa de sista stunderna i Anthem-världen innan den försvinner för gott.

Trist är bara förnamnet. Anthem förtjänade så mycket mer men av olika anledningar fick det aldrig chans att blomma ut.

Spelade du Anthem när det begav sig?

<bild>Tack och adjö då.</bild>


Jason Blum: Därför floppade M3GAN 2.02025-07-03 20:42

Den första filmen må ha gjort rent hus när den gick upp på bio häromåret. Men efterföljaren, den extremt upphaussade M3GAN 2.0, har blivit ett dunderfiasko för studion. Ingen verkar vara värst sugen på filmen och situationen blir knappast bättre av att M3GAN 2.0 fått ett uselt mottagande bland kritiker, där den i skrivande stund har knappt 57% på Rotten Tomatoes. Långt under originalets "certified fresh" med 93%.

Jason Blum, som nyligen intervjuades, gav sina egna teorier om varför filmen fått ett så frostigt mottagande och sa:

"We all thought M3GAN was like Superman. We could do anything to her. We could change genres. We could put her in the summer. We could make her look different. We could turn her from a bad guy into a good guy. And we classically over-thought how powerful people's engagement was, really, with her"

"We thought she could live in the summer, right? We thought, 'We're going from a little movie to a tentpole!' "


Samtidigt puttrar Blumhouse vidare, trots ett par floppare i år. Blum menar att sånt här händer - och det lär bli fler M3GAN‐idéer framöver, till och med en kanske dystopisk Mad‑Max‑version? Frågan är väl nu bara hur det ska gå för spinn-off-filmen Soulm8te som släpps i januari.

Har du sett M3GAN 2.0 och vad tyckte du om filmen?

<bild>Flopbot 9000</bild>


Mindseye ska lanseras på nytt - Benzies skyller på sabotörer2025-07-03 18:51

Årets hittills största pannkaka stavas Mindseye. Det nya spelet från Build a Rocket Boy och tidigare Grand Theft Auto-legenden Leslie Benzies. Ett spel som (i vissa kretsar) haussades upp som en form av GTA-dödare, som istället kommit att bli ett av de sämst betygsatta spelen hittills i år, och ansågs otroligt ofärdigt när det släpptes.

I ett internt videomöte häromdagen ska Benzies försvarat spelet och påstått att den misslyckade lanseringen berodde på interna likväl som externa sabotörer. Vilket också understryker hans kollegas tidigare uttalanden om att någon skulle ha betalat folk för att sprida negativitet om Mindseye.

I ett uttalande till IGN sa man:

'BARB sources told IGN that Benzies finally addressed staff following the release of MindsEye in a brief video call yesterday, July 2. According to two people present who asked not to be named in order to protect their careers, Benzies insisted BARB would bounce back and relaunch MindsEye, blaming the studio and the game's struggles on internal and external saboteurs, among other things.'

Enligt Benzies är man fast besluten om att fortsätta satsa på spelet och planerar att lansera om, samt betonade att studion kommer att resa sig ur askan starkare än någonsin. Men samtidigt så är oron stor internt, med hot om stora uppsägningar där många befarar att deras roller snart kommer att försvinna.

Kort och gott. Man verkar vara pigg på att beskylla andra snarare än erkänna sina egna misstag och visst, där finns exempel på spel som lyckats resa sig men i fallet med Mindseye känns det inte vidare sannolikt. Eller vad säger du?

Är Mindseye värdigt att få en andra chans?

<bild>10/10</bild>


Michael Madsen har gått bort2025-07-03 18:05

Skådespelaren Michael Madsen har tragiskt gått bort vid 67 års ålder. Detta bekräftar hans manager Ron Smith som nämner att skådespelaren hittades avliden i sitt hem i Malibu, Kalifornien, tidigt på morgonen - dödsorsaken uppges vara hjärtstillestånd vid cirka kl. 08:25 lokal tid.

Madsen var en ikonisk figur inom Hollywood, känd för sina råa och gåtfulla karaktärer i Quentin Tarantinos filmer. Han gjorde oförglömliga insatser i Reservoir Dogs (1992), där han gestaltade Mr. Blonde, samt i Kill Bill: Vol. 1 & 2, The Hateful Eight och Once Upon a Time in Hollywood. Hans karriär har varit lång och sträckt sig över fyra decennier, där han utöver de många Tarantino-projekten medverkade i klassiker som Donnie Brasco, Thelma & Louise, Sin City och Die Another Day.

Den senaste tiden har han även varit djupt involverad i flera independentfilmer, däribland Resurrection Road, Concessions och Cookbook for Southern Housewives, och arbetade även med sin kommande bok Tears For My Father: Outlaw Thoughts and Poems. Madsen lämnar ett arv av hårdkokta hjältar fyllda med djup och intensitet bakom sig, samt sex barn och en syster, skådespelaren Virginia Madsen.

Hollywood har förlorat en av sina mest omisskännliga röster. Vila i frid Michael Madsen och tack för allt.

<social>https://x.com/DiscussingFilm/status/1940824826438209914</social>


Helldivers 2 till Xbox i augusti!2025-07-03 15:55
Sony-utgivet spel till Xbox Series.
Diskutera – Vilket är tidernas bästa Xbox-spel?2025-07-03 14:00
Halo, Fable, Indy och mycket, mycket mer.
Hideo Kojima vill åka till rymden och göra ett spel2025-07-03 12:09
Som den stjärna han är!
Quiz – Spelvärldens vackraste sagor2025-07-03 10:00
Kryp upp i den stora FZ-famnen, för nu blir det sagostund.
Neil Druckmann lämnar tv-serien The Last of Us2025-07-03 07:58
"Rätt tid" att sluta.