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

Where Winds Meet blir konsolexklusivt i sex månader till PS5 - enligt trailern2025-07-05 18:52

Exklusiva spel har nog aldrig varit ett luddigare begrepp i dagsläget än det är just nu, med framförallt tidigare Xbox-exklusiva varumärken som lanseras till Playstation 5 i en rasande takt. Även tidigare konsolexklusiva Helldivers II som gavs ut av Sony såg sitt premiärdatum till Xbox Series S|X häromdagen.

I senaste trailern för Where Winds Meet, som är ett enspelarspel i ett forntida Kina med öppen spelvärld som tar avstamp i kampsport och kinesisk fantasylitteratur - nås vi även av faktumet att spelet blir konsolexklusivt till Playstation 5 i ett halvår. Något som inte minst väckt frågor om exklusiviteter, dess vara eller icke-vara samt strategiskt syfte. Tidsexklusivitet har historiskt varit en dragkamp om spelarna, något som skapade stor debatt förra året runt Black Myth: Wukong, där många såg den uteblivna och försenade Xbox-versionen som en dold överenskommelse mellan Sony och Game Science Studio. Vad som gäller för Where Winds Meet framgår istället i allra högsta grad.

Where Winds Meet lanserades redan förra året till PC i Kina och nådde tre miljoner spelare på fyra dagar. Den nya cinematiska trailern för spelet kan ni se här nedan, och för den som vill ansöka om en plats i betan den 24 juli bör följa denna länk.

<video>

<bild></bild>

Vad tycker du om tidsexklusiva spel, är det rätt väg att gå i dagens spelklimat?


Sega Neptune lever igen - men som FPGA-konsol2025-07-05 17:49

Under det glada 90-talet fullkomligen sprutade Sega ur sig konsoler och påbyggnader, och hade minst ett halvt dussin planerade. Okej, viss överdrift men det var så det stundtals kändes och ett av de många projekt som aldrig fick se dagens ljus var Neptune. En kombination av Mega Drive och 32X som nu återupplivas av brasilianska spelgruppen GamesCare - en samling entusiaster.

Så varför lanserades aldrig Neptune? Ja, konceptet lades helt enkelt ner till fördel för satsningen på Saturn och efter att man insåg att 32X-marknaden helt enkelt var för liten.

Med den nya Neptune satsar GameCare-teamet på att försöka blåsa lite liv i 32X-intresset, och går samma väg som så många andra populära retrokonsoler genom att använda FPGA-teknik för att återskapa hårdvaran på modernt vis. De har inte fastställt något pris ännu, men har sagt att det kommer ligga i linje med liknande FPGA-baserade retrokonsoler och tar sikte på att lanseras i december.

Till sina fans skriver man:

"Hello everyone, it's time to show your interest in the GF1 Neptune. The release date is almost here, December 2025, as we announced at Gamecom Latam. We are on a mission to bring the console ready for delivery on this date without any kind of pre-order or collective financing. However, for our best planning, it is super important that everyone who plans to purchase this labor of love subscribes to this newsletter. We will announce the price as soon as possible, but I can already say that it will be on average for similar consoles. The 32-bit generation is coming."

Lirade du 32X på tiden det begav sig och är denna nya Neptune något som du blir lite sugen på?

<social>https://x.com/MichelinFabio/status/1940022024409112585</social>


Du kan tävla med riktiga Sonic Racing: Crossworlds inspirerade gokarts under Esports World Cup 20252025-07-05 17:00

I ett samarbete med The Jameel Motorsport Park kommer du att kunna beskåda en uppvisningsmatch i {Sonic Racing: Crossworlds} under Esport World Cup 2025. Tävlingarna kommer att ske i Saudiarabiens huvudstad Riyadh den femte augusti. My Nintendo News skriver följande:

You can watch the Sonic Racing: CrossWorlds show match on 5th August inside the venue's Gaming Hall. That's not all as SEGA will be holding a limited-time kart racing event with CrossWorlds-themed go-karts, tracks, and helmets at the The Jameel Motorsport Park.

Är du sugen på att tävla i riktiga fordon med Sonic-tema går även det att göra. Är du inte villig eller har möjlighet att resa till Saudiarabien går detta spektakel att följa via Internet. Sonic Racing: Crossworlds släpps 25 september till PC, PS4, PS5, Nintendo Switch, Xbox One och Xbox Series X. Vilken plattforms-maskot tycker du har bäst racingspel?

<bild>Mario, Sonic och många andra kända karaktärer har egna bilspel idag.</bild>


Blizzard avslutar all support för Warcraft Rumble Archlight2025-07-05 16:21
Blizzard upptäcker att för få spelare hade mobiltelefoner...
Bygg din egen chicken walker - AT-ST kommer i augusti2025-07-05 15:55

Star Wars AT‑ST Walker, den klassiska "chicken walker", gör äntligen entré i Legovärlden som ett storstilat UCS-set. Ett solklart måste för alla samlare som med sina 1513 bitar är ett imponerande bygge. Cirka 37 cm hög, 22 cm lång (och bred) - perfekt i hyllan hos vilken Star Wars-nörd som helst.

Setet riktar sig till vuxna samlare, med åldersrekommendation på 18 och släppdatumet är satt till den 1:a augusti med en prislapp på 2499 kronor. Inte fullt lika mustigt som vissa andra UCS-modeller med andra ord.

Rent visuellt och i detalj är AT-ST-bygget trogen filmens design, med rörliga leder och autentiska proportioner som gör den till ett snyggt displayföremål. Måtten känns dessutom rätt schyssta - den är tillräckligt stor för att imponera, men inte otymplig (jag tittar på dig Star Wars Venator).

För den som är sugen på att förhandsbeställa byggsatsen redan nu så går det utmärkt att göra på Legos hemsida.

Är detta en byggsats du kommer att köpa?

<bild>Chicken! Goood!</bild>


Prime Video släpper teaser för The Terminal List: Dark Wolf2025-07-05 14:35

Häromdagen släppte Prime Video en teaser trailer för kommande The Terminal List: Dark Wolf som är en prequel till TV-serien The Terminal List från 2022 med Christ Pratt i en av huvudrollerna. The Terminal List baseras på boken med samma namn från 2018 och handlar om Navy Seal-befälhavaren James Reece (Chris Pratt) som efter att ett uppdrag i Syrien går fel, blir inblandad i politisk konspiration med rötter i Vita huset.

I The Terminal List: Dark Wolf hittar vi nu Taylor Kitsch i huvudrollen som Ben Edwards och kretsar kring dennes bakgrundshistoria innan han blir en del av händelserna i The Terminal List. Förutom en återvändande Taylor Kitsch, kommer vi även att få återse Chris Pratt i rollen som James Reece.

Så här berättar Kitsch själv om den kommande serien:
"Digging into Ben's origin with Dark Wolf was a blast. This season goes even deeper—there's more grit, more heart, and a lot more on the line. It's raw, it's honest, and it really lets you see the heart of who he is."

Han fortsätter:
"I have so much respect for the military and SEAL community and loved showing their brotherhood, the things you fight to hold onto, and just letting it all play out. I think fans are going to have a great time with it."

Tv-serien har premiär den 27 augusti 2025, så väntan blir inte allt för lång.

Har du sett The Terminal List och sugen på att se mer?

<video>


Dying Light-studion lägger ned två påbörjade spel2025-07-05 12:04
Men alla arbetare på Techland är säkra.
Capcom avtäcker Resident Evil Survival Unit2025-07-05 10:03
Mobila zombier.
Spelhelgen är här – prognosen talar för varma solskensspel2025-07-04 15:00
Gammalt FZ-ordspråk: "Det finns inget dåligt väder, bara soliga spel".
Världens bästa vapen – Åttondelsfinaler2025-07-04 14:00
Sexton ska bli åtta. Hagelbrakare, kofot, får. Det är era röster som avgör.