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

Switch 2-motsvarigheten till Wii Sports och 1-2-Switch är väldigt märklig2025-04-03 07:41

Mario Kart World, Donkey Kong Bananza och Duskbloods är naturligtvis de stora snackisarna från Switch 2-presentationen, men Nintendo visade även två spel som designats för att visa upp konsolens funktioner: {Drag x Drive} och {Switch 2: Welcome Tour}. De kan jämföras med Wii Sports, Nintendo Land eller 1-2-Switch, men mottagandet på sociala medier har varit... svalt.

Switch 2: Welcome Tour beskrivs som ett enkelt demo som dessutom kostar pengar. Det släpps digitalt på lanseringsdagen, 5 juni, och fungerar som en interaktiv guide som lär dig allt om konsolen, presenterat i en gigantisk, utforskningsbar Switch 2-miljö. Det innehåller minispel som demonstrerar Mouse controls och HD rumble, men känns på förhand mest som en glorifierad manual.
<social>https://bsky.app/profile/wario64.bsky.social/post/3llti45h2s22a</social>
Priset har inte avslöjats, men att ta betalt för något sådant känns tveksamt. Nintendo verkar också tycka att det inte är den hetaste titeln och spelet saknar faktiskt en egen trailer på Youtube och syns bara till i Direct-presentationen (18 minuter in).

Drag x Drive, som släpps sommaren 2025, låter betydligt mer intressant dock. Det är ett rullstolsbasketspel där du styr rullstolen genom att dra Joy-Con 2 mot en plan yta. Det är en unik idé, men spelet ser lite grått och trist ut - långt ifrån det färgsprakande Arms. Förhoppningsvis ska det kunna bli riktigt kul dock och kanske en onlinefavorit i stil med Rocket League.


<video>

<bild>Japp, detta är ett spel Nintendo tänker ta betalt för.</bild>


Allt du behöver veta om "Liberation Day"2025-04-03 07:29

De senaste nyheterna om USA. President Donald Trump tillkännagav ett omfattande paket med tullar på onsdagen. För dem som undrar vad som egentligen döljer sig bakom rubrikerna, här är en närmare titt på vad han har döpt till "Liberation Day".

"Det här är en av de viktigaste dagarna i vår nations historia", förklarade Trump under en briefing i Rose Garden och betonade att dessa åtgärder är utformade för att stävja vad han ser som långvariga missbruk av utrikeshandelsmetoder.

Den nya politiken inför en tull på 25 procent på alla utlandstillverkade bilar från och med midnatt 25 procent, ett steg som syftar till att stärka den inhemska bilindustrin. Dessutom beskrev administrationen en rad ömsesidiga tullar som riktade sig mot ungefär 60 länder. Anmärkningsvärda bland dessa är:


  • Europeiska unionen: 20%.

  • Kina: 54%.

  • Kambodja: 49%.

  • Vietnam: 46%.

  • Thailand: 36%.

  • Taiwan: 32%.

  • Sydafrika: 30%.

  • Japan: 24%.



För länder som inte är specifikt listade gäller nu en bastull på 10 %.

<bild>Donald Trump</bild>


The Last of Us showrunner tar inte serien längre än spelens handling2025-04-03 06:56
Craig Mazin anser att serien är svår att göra och måste ha ett slut.
Superman har en "12-minuters intervjuscen" mellan Lois och Clark2025-04-03 06:09

I sommar har Superman premiär och vi ska äntligen får se hur väl David Corenswet förvaltar den älskade karaktär som tidigare spelats av bland annat Christopher Reeve, Dean Cain och Henry Cavill. En viktig del av honom är kärleken till Lois Lane, något som bidrar till att göra den övermäktige superhjälten mer mänsklig.

Därför är såklart kemin mellan Superman och just Lane oerhört viktig och i en intervju hos Time berättar Gunn mer om sin version av Superman:

"He is starting to become successful (at both jobs) in the big glitzy city so far away from home. He's madly in love with a woman who isn't so sure about him. And he's made a few superhuman friends who like him but think of him as naive. All these new elements in his life have unbalanced him a bit and as he's tottering we're going to see where he lands in terms of his values and choices."

Lyckligtvis verkar kemin med Lois Lane (här spelad av House of Cards- och The Marvelous Mrs. Maisel-stjärnan Rachel Brosnahan) vara på topp och Gunn förklarar hur han visste att han hittat helt rätt i castingen:

"We shot the 12-minute interview scene with Lois and Clark. That was 10 percent of the movie in two days. And to see the energy and magic between him and Rachel was awesome, not to mention how incredibly prepared they both were. It was a huge relief."

Den 11 juli är det världspremiär för Superman, som på allvar även fungerar som avspark för det nya DCU (som dock tjuvstartade i december med animerade Max-serien Creature Commandos).

<bild>Dessa båda får vi träffa på bio om tre månader.</bild>


De nya Switch 2-kassetterna är mycket snabbare, kan lagra mer och är Mario-röda2025-04-03 05:50

Efter månader av hype och rykten vet vi nu det mesta om Switch 2. Det inkluderar spelen som kommer bli både större och snyggare, något som givetvis kräver ny teknik för både kassetterna och konsolen. Switch 2 levereras med 256 GB inbyggt minne, alltså åtta gånger mer än föregångaren, men hur blir det med spelkassetterna?

Jo, de behåller samma storlek som dagens Switch-kassetter, men blir nu klarröda (Mario-röda, om du så vill) och har klart snabbare läshastighet. Nintendo bekräftade också att lagringen går att utöka - men bara med MicroSD Express-kort, så dina gamla MicroSD-kort från Switch fungerar inte.

Värt att notera, och som vi rapporterade igår, så höjer Nintendo genomgående spelpriserna. {Mario Kart World} kommer till exempel kosta 79,99 euro digitalt och 89,99 euro fysiskt (knappt tusen svenska kronor), så de nya kassetterna lär inte bli billiga.

<bild>Såhär ser de nya kassetterna ut. Om de fortfarande smakar lika illa vet vi inte.</bild>


Switch 2 Pro Controller blir dyraste standardhandkontrollen någonsin2025-04-03 05:30

Det var inte bara Switch 2 och spelen till den som visades igår, utan även tillbehör. Det inkluderar Switch 2 Pro Controller, en ny och dyrare version av Pro Controller som släpps separat. Vid första anblicken liknar den sin föregångare, men enligt producenten Kouichi Kawamoto är den "redesigned from scratch".

Styrspakarna är nu tystare utan ljud när du ger maxutslag och glider även mjukare - något Nintendo kallar "smooth-gliding sticks". De ger även mindre motstånd vid snabba rörelser. Ergonomin är inspirerat av Gamecube-kontrollen, och det får väl ändå sägas vara en rejält bra förebild på området.

Andra nyheter inkluderar en ljudutgång för trådade headset och två programmerbara knappar, GL och GR. Dessa knappar saknas på Joy-Con 2 men finns på Joy-Con 2 Charging Grip (säljs separat), och Nintendo säger: "For example, if you assign the Capture Button to the GL Button, you can use it to take screenshots without taking your thumb off the L Stick".

Handkontrollen har HD Rumble 2, rörelsekänsliga funktioner och Amiibo-stöd, men fungerar endast med Switch 2. Priset landar på 90 euro, alltså 20 mer än föregångaren som kostar runt 800 spänn i Sverige. Det verkar därmed troligt att denna går på runt eller strax över 1000 kronor. Dina gamla Pro Controller kommer dock att vara kompatibla med Switch 2.

Kort sagt - Switch 2 tillbehör blir inte billiga.

<bild>Nintendo kallar denna "pinnacle of all controllers".</bild>

<bild></bild>


Switch 2 får sämre batteritid än Switch2025-04-03 04:02
Större batteri, men mer strömtörstig hårdvara.
Nu händer det: Hollow Knight: Silksong släpps under 20252025-04-03 03:43
Vi sitter som på nålar.
Playstation-konserten i Göteborg inställd2025-04-02 18:11
Biljetter kan lämnas tillbaka.
Alla videor från Switch 2-showen2025-04-02 16:11
Spel och hårvara på ett bräde.