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

Häng med Glen Powell i första trailern för The Running Man2025-07-01 23:35

Vi har vetat ett tag att regissören Edgar Wright och skådespelaren Glen Powell samarbetar kring en nyinspelning av actionklassikern The Running Man, baserad på Stephen Kings berömda roman. Nu när premiären är mindre än halvåret bort, filmen släpps den 7 november, har vi fått en första titt på projektet. Och det ser ut att bli precis så kaotiskt, underhållande och skönt old school som actionfans förmodligen hoppats på.

För den som inte känner till The Running Man utspelar sig historien i en nära framtid, där personer kallade Runners frivilligt kan delta i ett brutalt gameshow-liknande överlevnadsspel. Klarar de att hålla sig vid liv i 30 dagar medan de jagas av både yrkesmördare och i princip hela samhället, väntar en enorm prissumma.

I originalfilmen från 1987 spelade Arnold Schwarzenegger huvudrollen. I den här versionen är det Glen Powell som tar över rollen som Ben Richards, mannen som tvingas springa för sitt liv medan Dan Killian, spelad av Josh Brolin, styr spektaklet som den hänsynslöse producenten.

Kort sagt: det här är en film som kommer bjuda action enligt devisen "fullt ös, medvetslös" och lär säkerligen bli något värt att hålla utkik efter. Trailern och den officiella synopsis hittar du här nedan.

"​In a near-future society, The Running Man is the top-rated show on television—a deadly competition where contestants, known as Runners, must survive 30 days while being hunted by professional assassins, with every move broadcast to a bloodthirsty public and each day bringing a greater cash reward. Desperate to save his sick daughter, working-class Ben Richards (Glen Powell) is convinced by the show's charming but ruthless producer, Dan Killian (Josh Brolin), to enter the game as a last resort. But Ben's defiance, instincts, and grit turn him into an unexpected fan favorite—and a threat to the entire system. As ratings skyrocket, so does the danger, and Ben must outwit not just the Hunters, but a nation addicted to watching him fall."

<video>

<bild></bild>


Amazon storsatsar på nya fantasyserien The Fourth Wing2025-07-01 21:20

Skam den som ger sig. Och efter Maktens ringar (som förvisso fortfarande pågår) och de nu nedlagda Wheel of Time, så har Amazon tagit sikte på en av de absolut hetaste fantasyserierna just nu - Rebecca Yarros "The Fourth Wing", första delen i trilogin Empyrean.

Boken har redan tagit TikTok (yes, really) med storm och säljer som smör. Storyn följer Violet Sorrengail, som skickas till en slags militärskola där hon lär sig bli drakryttare. Enligt Deadline så är det Jac Schaeffer, skaparen bakom WandaVision och Agatha All Along, som sägs hålla i tyglarna. Och även om ingenting är spikat ännu så känns hennes eventuella inblandning som något positivt och lovande.

Trilogin har redan tre böcker ute (The Fourth Wing, Iron Flame, Onyx Storm), och två till är på gång. Amazon siktar uppenbarligen på nästa stora hit inom fantasygenren- men som med alla storsatsningar finns där också rejäla risker.

Är du bekant med The Fourth Wing?

<bild></bild>


Remedy erkänner: Firebreak har floppat och sålde inte som förväntat2025-07-01 20:21

Inte den mest oväntade av nyheter kanske, men nu verkar det som att Remedy slutligen krupit till korset och erkänner att FBC Firebreak in sålt så mycket som de förväntat sig. Tidigare rapporter om att Remedys första co-op-shooter skulle ha uppnått en miljon spelare rimmade illa med de omkring 200 aktiva spelare som syntes (på Steam). Så även om nu många kanske har testat det gratis via Game Pass och Playstation Plus, så har det i varje fall inte resulterat i någon vidare försäljning.

SteamDB och dess siffror brukar vara en god fingervisning om vart vinden blåser, och i fallet med Firebreak har det varit tydligt. Ett genomsnitt på under 200 samtidiga spelare per dag, med en topp på under 2 000 är helt enkelt inte good enough. En tydlig indikation på att spelet misslyckats fundamentalt med att engagera och intressera.

Remedys kommunikationschef Thomas Puha konstaterade i en intervju att anledningarna till den bristfälliga försäljningen är att Control (som Firebreak delar universum med) helt enkelt inte är ett tillräckligt känt varumärke för att piska upp intresse. Men trots de inledande motgångarna så är man fast besluten att fortsätta supporta titeln framgent - med uppdateringar och förbättringar.

I skrivande stund är det knappt 100 personer som spelar Firebreak på Steam, och detta alltså mindre än två veckor efter lanseringen. Så huruvida Remedy faktiskt kommer att fortsätta med sin konstgjorda andning för att hålla liv i något som ingen är intresserad av, återstår väl att se. Gissningsvis kommer Firebreak snarare att bli en av många parenteser som ingen kommer att minnas om tre månader.

Hyste du några förhoppningar om Firebreak, eller var detta rätt väntat?

<bild>FIrebreak är ungefär lika poppis som varm soppa på en stekhet sommardag.</bild>


Rykte: Indiana Jones reboot på gång2025-07-01 19:55

Efter den monumentala floppen som stavades Dial of Destiny så har tystnaden kring Indiana Jones och dennes framtid varit minst sagt påtaglig. I varje fall fram till nu. Det verkar nämligen som att Disney håller på att koka ihop planer på att reboota hela franchisen, men denna gång utan Harrison Ford.

Istället blir det en ny skådespelare som får ansvaret att axla huvudrollen, antingen då i en ny version av Doctor Jones eller som en helt annan rollfigur. The DisInsider menar att Disney kan komma att presentera något i samband med D23-evenemanget nästa år, där en reboot skulle kunna officiellt avslöjas.

Att franchisen får nytt liv är långt ifrån oväntat - efter alla år och filmer finns en massiv publik och nostalgifaktor att spela på. Samtidigt finns ett stort frågetecken kring vilken riktning de tar: ska det bli en direkt uppföljare med ny skådis, en spin-off med en kvinnlig huvudroll eller en helt ny tolkning? Frågetecknen är många men klart är att Disney inte kommer låta något så stort som Indiana Jones bara ligga och ruttna bort.

Hur ser du på framtiden för Indiana Jones. Är en reboot något som tilltalar?

<bild>Doctor Jones, Jones, calling Doctor Jones Doctor Jones, Doctor Jones, get up now</bild>


Doldis kniper rollen som Bison i nya Street Fighter-filmen2025-07-01 19:50

David Dastmalchian, som mest är känd för roller i bland annat Late Night with the Devil, The Suicide Squad och Murderbot, har enligt Deadline lyckats sno åt sig rollen som den legendariska ruskpricken M.Bison i kommande Street Fighter-rullen. Den i särklass största rollen han hittills fått äran att spela, även om produktionen har valt att inte kommentera uppgifterna officiellt.

Rakt igenom så är rollbesättningen faktiskt rätt galen: Andrew Koji och Noah Centineo spelar Ryu och Ken, Jason Momoa är Blanka, Roman Reigns tar sig an Akuma, Orville Peck är Vega, Curtis "50 Cent" Jackson är Balrog, och Andrew Schulz snor rollen som Dan Hibiki. Flera rejält färgstarka val.

Även Capcom själva är rätt djupt involverade - vilket ger en antydan om att filmen förhoppningsvis blir något mer genomtänkt än tidigare halvdana försök. Att just Dastmalchian spelar Bison kan mycket väl komma att resultera i lite oväntad briljans. Grabben har känsla och är lika delar otäck som komplex. Så nu hoppas vi att Sakurai lyckas balansera all galenskap med äkta kärlek för spelvärlden - så vi slipper ännu en kalkon.

Ser du fram emot Street Fighter-filmen?

<bild>Är David Dastmalchian nya M.Bison?</bild>


F.d. Blizzard-chef: "Tufft att se Xbox förvirrat över vem man är och vad man borde vara"2025-07-01 15:49
Mike Ybarra tycker Xbox ska satsa på spel
FBC: Firebreak2025-07-01 14:00
Kortlivad och konstig co-op. Remedys nya känns inte särskilt mycket Remedy alls.
Världens bästa vapen – 16-delsfinaler2025-07-01 10:00
Gyllene pistolen mot mammuttanken, Mästarsvärdet mot blå skalet och fåret mot Zappern. Vapenturneringen går vidare!
Nästa Halo visas i oktober? "Det vill du inte missa"2025-07-01 07:53
Halo Studios tar klivet till Unreal Engine 5.
Gratis-uppdaterade Switch 1-spel till Switch 2: "Remasters i allt utom namnet"2025-07-01 06:07
Det hävdar Digital Foundry.