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

FZ utser Årets spel 2024!2024-12-13 21:30
Stunden är inne. FZ utser årets 20 främsta spel.
Intergalactic: The Heretic Prophet kritiseras för karaktärsdesignen2024-12-13 17:43

Nattens antagligen största tillkännagivande och tillika Naughty Dogs kommande storspel Intergalactic: The Heretic Prophet har fått uthärda skarp kritik sedan avslöjandet. Spelet som visades för första gången under The Game Awards utspelar sig tusentals år in i framtiden, följer prisjägaren Jordan A. Mun på planeten Sempiria, som varit isolerad från omvärlden i århundraden.

Men många spelare verkar inte vara speciellt nöjda med vad som visats i videon, vilka anser att karaktärsdesignen har ett alltför stort fokus på mångfald, jämlikhet och inkludering. Denna kritik har lett till att Naughty Dog stängt av kommentarsfunktionen på spelets trailer på Youtube, men det räcker att gå till andra kanaler som laddat upp egna kopior av samma klipp, för att se vad som sägs.

Bland de mer syrliga kommentarerna kan man bland annat läsa:

"Looks like a recruitment ad for follically challenged space lesbians"

"This new jaguar ads are getting out of hand"

"I assure this game will make concordillion dollars"


Men många är också positivt nyfikna på spelet som med sin retrofuturistiska estetik väckt en hel del intresse, och med tanke på att ett officiellt lanseringsdatum fortfarande skiner i sin frånvaro så får vi kallt räkna med att det kommer dröja i varje fall två år innan Intergalactic: The Heretic Prophet faktiskt är spelbart.

Vad tycker du om karaktärsdesginen i Intergalactic: The Heretic Prophet?

<bild>Naughty Dog satte stopp för kommentarerna.</bild>

<bild>Men på andra sidor kan man tydligt läsa folks upprörda åsikter.</bild>


Final Fantasy 7 Rebirth till pc i januari2024-12-13 16:55
Berättar ny trailer.
Fredagsfrågan: Vilken spelutannonsering var bäst på The Game Awards?2024-12-13 16:53

Det drällde av feta utannonseringar under nattens The Game Awards, ofta i form av nya trailers eller mer information (läs mer om allt som hände här). Men det var även ett antal stora spel som utannonserades, och nu är vi nyfikna på att få höra vilket av dem som våra läsare gillar bäst. Så... vilken spelutannonsering var bäst på The Game Awards?

Ni kan rösta i pollen nedan eller via vår bloggsida, motivera som vanligt gärna ditt svar i kommentarsfältet nedan. Nu kör vi!
<bild></bild>


Bronny James bevisar att hatarna har fel med sin bästa prestation i karriären, men inte i LA Lakers2024-12-13 16:11

Bronny James, Los Angeles Lakers nya spelare, fick hård kritik i år på grund av sin tvivelaktiga kvalitet: han är bra, ja, men tillräckligt bra för ett så stort lag som Lakers? Det pratades mycket om nepotism eftersom han uppenbarligen är son till LeBron James och skrev historia när far och son för första gången spelade tillsammans i NBA.

Med tanke på att hans siffror inte var så bra bestämdes det att Bronny James skulle dela sin tid: att bara spela hemmamatcher för Los Angeles Lakers, men att mestadels spela på South Bay Lakers, dess dotterbolag i G-League.

G-League är "Development"-ligan, där vanligtvis hemmafostrade spelare spelar innan de går med i huvudlaget i franchisen. Att Bronny hoppade över sin tid i G-League kritiserades av många, och nu står det klart att det har varit ett bra val att rätta till och skicka honom till G-League.

<social>https://x.com/NBA/status/1867431709433901534</social>

Och i den senaste South Bay Lakers-matchen, som också blev Bronnys första borta i G-League, gjorde Bronny James en spektakulär prestation. 20-åringen gjorde 30 poäng för första gången i sin karriär, med en field goal-procent på 57 %, och tre av nio gjorda poängare.

Tyvärr förlorade Lakers mot Valley Suns med 106-100, men fansen var entusiastiska över James prestation: han gjorde fler mål i den matchen än i de tre tidigare matcherna. Och det bevisade att Bronny James har en framtid för sig själv om han fortsätter att arbeta så efter att hans pappa går i pension... vilket kan vara tidigare.

<bild></bild>


Jakten på the great spelhelg – vad spelar du?2024-12-13 16:00
Den här spelhelgen hör hemma på ett museum.
Vinn en PS5 Slim, AMD:s nya CPU, robotdammsugare, Call of Duty: Black Ops, Sennheisers bästa lurar och mycket mer!2024-12-13 15:55

Ja, det är ju lucia idag. Julen står för dörren och jultomten idag är vare sig gråhårig eller har röd mössa. Jultomten i år stavas Gamereactor eftersom vi "bara" öppnat två stycken adventsluckor i vår årliga Julkalender och ändå vräkt upp prylar på prisbordet värt över 30 000 kronor. Du kan här kamma hem en Playstation 5 Slim, en PS Portal, en Roborock-robotdammsugare, en Thunder X3-gamingstil, Call of Duty: Black Ops 6, Astro Bot, Sennheisers topptestade lurar, en AMD-CPU (9700X), tangentbord, Airfryers, in-ears från Jabra, Sonys bästa gamingheadset och mycket, mycket mer. Det är helt enkelt en förbenat fin kalendern, såhär långt, och vi vill nu inför söndag uppmana dig som inte tävlar i luckorna att göra det innan de stängs (söndag). Klicka här för att komma till tävlingssidan!
<bild></bild>
<bild></bild>
<bild></bild>
<bild></bild>
<bild></bild>
<bild></bild>
<bild></bild>
<bild></bild>


Carlo Ancelotti svarar på den mest återkommande kritiken om hur han hanterar Real Madrid2024-12-13 14:49

Carlo Ancelotti har varit en av de mest framgångsrika tränarna någonsin för Real Madrid, men på senare tid har många börjat ifrågasätta honom. En av de mest återkommande kritikerna handlar om hans uppenbara ovilja att göra rotationer, vilket får två konsekvenser: hans mest betrodda spelare spelar mycket – med större risk för skador – medan yngre eller nyaste lagmedlemmar knappt har några minuter att spela.

Det finns två spelare som de flesta Real Madrid-fans hatar att se på bänken: de turkiska och brasilianska landslagsspelarna Arda Güler och Endrick. Båda har visat hög kvalitet i sina länder, men har knappt fått några minuter i Real Madrid, särskilt när det gäller Endrick.

<social>https://x.com/EFEdeportes/status/1867553529650720997/video/1</social>

Som svar på det avfärdade Ancelotti kritiken: "Jag kan rotera vissa spelare, men när jag har en trupp på 14 eller 15 är det svårt att göra det", sa han och syftade på det ökande antalet skador - den senaste var Mbappé, som skadades precis när Vinícius återvände. "Och det är inte alltid positivt att ta in unga spelare när det inte går bra för laget", tillade han.

"Det är mycket snack om Endrick, att han spelar lite, att jag inte ger honom minuter, bla bla bla, bla bla bla", hånade Ancelotti kritiken. Men vi måste tänka på att han är väldigt ung, han måste anpassa sig, förbättra sig, lära sig, och att välja honom när laget inte är rätt kommer inte att hjälpa honom, det kan påverka honom.

Men han berömde honom. Han är väldigt ung och har en av de bästa anfallarna i världen framför sig. Vi måste ha tålamod. Han skulle vilja spela mer, naturligtvis, men han ber inte om något".

<bild></bild>


Den of Wolves – se gameplay från den svenska co-op-shootern2024-12-13 12:02
Av folket bakom GTFO.