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

Brushes with Death blir första expansionen till Kingdom Come: Deliverance II2025-05-08 22:43

Brushes with Death blir den första expansionen till Kingdom Come: Deliverance II. Detta meddelade Warhorse Studios under dagen på sociala medier där de även avslöjade dess lanseringsdatum, vilket blir den 15:e maj. Expansionen kommer att introducera flera nya spelmekaniker där man bland annat lär sig att designa och måla sina egna sköldar.

Historien kommer att fokusera på en gåtfull konstnär med ett mörkt förflutet och blir den första av tre planerade, där Legacy of the Forge och Mysteria Ecclesiae släpps senare under året.

Warhorse Studios har också meddelat att en gratis uppdatering kommer att lanseras samtidigt som Brushes with Death, vilken innehåller nya minispel som bågskytte och hästkapplöpning, samt flera mindre justeringar som ämnar att förbättra och tajta till spelupplevelsen.

Ser du fram emot Brushes With Death?

<social>https://x.com/WarhorseStudios/status/1920493908800225447</social>


Gollum återvänder: Nya Sagan om Ringen-filmen släpps 20272025-05-08 21:53

För alla er som törstar efter mer äventyr i Tolkiens underbara värld, misströsta ej. Om ungefär två och ett halvt år är det dags att ännu en gång låta sig bli förtrollad av Middle Earth i The Lord of the Rings: The Hunt for Gollum. Andy Serkis återvänder (så klart) som Gollum men sitter även denna gång i regissörsstolen, med Peter Jackson, Fran Walsh och Philippa Boyens som producenter.

Filmen blir en fristående berättelse som utspelar sig någonstans mellan Bilbos födelsedagsfest och händelserna i Moria, med rampljuset riktat mot Gollum då, precis som filmens titel antyder. Inspelningen planeras äga rum i Nya Zeeland under nästa år och om allt går enligt planerna kommer både McKellen samt Viggo Mortensen reprisera sina respektive roller. Även om inget till 100% är bestämt ännu.

The Lord of the Rings: The Hunt for Gollum har premiär den 17:e december 2027 och förhoppningsvis så blir detta riktigt bra. Vi håller tummarna.

Ser du fram emot The Lord of the Rings: The Hunt for Gollum?

<bild>Conny blickar drömskt ut över sin Legosamling.</bild>


Betis och Chelsea når Conference League-final2025-05-08 21:46

UEFA-tävlingarna är nästan klara för året: Real Betis Balompié har varit den senaste klubben att nå en final, Conference League, i en spännande 2-2-match mot Fiorentina, i Florens, 4-3 totalt.

Antony var upphovsmannen till det första målet för det Sevillianska laget, ytterligare ett att lägga till sin stora samling av mål (siffror som överträffar de av hans landsman Vinícius Jr. i år). Fiorentinas Robin Gosens svarade snabbt med två mål och tog matchen till kvällens enda förlängning, men Ez Abde för Betis gjorde det definitiva målet.

Samtidigt hade Chelsea en enkel seger mot Djugården, det svenska laget, som hade förlorat med 4-1 i det första mötet. Ett enda mål av Kiernan Dewsbury-Hall i den första halvleken räckte för att säkra biljetten till finalen, vilket förväntas för en klubb med en mycket högre nivå än de flesta klubbar i den europeiska tredjeligan, vilket kan göra Chelsea till det första laget att vinna alla tre Champions League, Europa League och Conference League.

<bild></bild>


Manchester United straffar Athletic och når Europa League-final2025-05-08 21:22

Athletic Club Bilbao behövde ett mirakel för att kvalificera sig till Europa League-finalen och vända 0-3-förlusten de led av i det första mötet i San Mamés förra veckan. De behövde minst tre mål... och de tog fyra mot: 4-1 på Old Trafford, 7-1 totalt, vilket gav det engelska laget en biljett till finalen den 21 maj... som kommer att äga rum i Bilbao.

Athletic inledde modigt och Mikel Jauregizar gjorde ett fantastiskt mål i den första halvleken. De lyckades dock inte fullborda en remontada, och istället exploderade United till slut, med fyra mål på lite mer än en kvart: två av Mason Mount, en nick av Casemiro och en annan av Rasmus Højlund.

Samtidigt, i Bodø, Norge, kunde Bodø/Glimt inte stoppa Tottenham från att lägga till ytterligare två mål till slutspelet (5-1 totalt), och finalen i Bilbao kommer att vara helt engelsk, märkligt nog mellan två lag som har kämpat i Premier League: Manchester United är 15:e med 39 poäng, Tottenham är 16:e med 38 poäng.

<bild></bild>


Gex gör comeback: Trilogin släpps i juni i form av en galen samlarutgåva2025-05-08 21:09

En av de många wannabe-maskotarna från 90-talet preppar sig för storstilad comeback. Gex, den ikoniska geckoödlan från vår barndom kommer nämligen att dyka upp i butikshyllorna den 16:e juni, både till Playstation 5, Xbox Series X/S, Switch och PC. För den som vill roffa åt sig en fysisk kopia av Gex Trilogy så erbjuder dessutom Limited Run Games tre olika versioner, inklusive en rätt tokig samlarutgåva för 200 dollar vilken inkluderar en 90 cm hög, uppblåsbar Gex.

Samlingen innehåller de tre klassiska plattformsspelen: Gex, Gex: Enter the Gecko och Gex 3: Deep Cover Gecko, vilka alla blivit uppgraderade och anpassade efter mer moderna sensibiliteter. Bland annat rewind, widescreen och massa fräsigt extramaterial som intervjuer och soundtrack.

Kommer du skaffa dig Gex Trilogy?

<bild>En 90 cm hög, uppblåsbar Gex att mysa med i sängen.</bild>


Se gameplay från Mafia: The Old Country2025-05-08 18:45
Det var våldsamt förr.
Europa Universalis V avtäckt2025-05-08 15:50
Paradox nästa storstrategi har presenterats.
The Midnight Walk2025-05-08 14:00
En claymation-saga för (nästan) alla åldrar om hur hjärtat är ett omättligt, bottenlöst hål.
Diskutera – När bör unga få börja spela GTA?2025-05-08 13:00
En moralfråga! Så vi diskuterar som vuxna.
Massiv Assetto Corsa Evo-patch: nya banor, bilar, spelformer osv.2025-05-08 10:58
Och en rejäl skock buggfixar.