Etikettarkiv: kodsnuttar

Förenkla ägande av utvecklingssiter

Jag kan inte vara den enda som arbe­tar med Word­Press och blir litet smått irri­te­rad på att behöva fylla i FTP-uppgifter, och fram­för allt om man arbe­tar lokalt så finns det ingen FTP. Det man kan göra är att se till så att använ­da­ren som webb­lä­sa­ren använ­der (i många fall www-data) är ägare och grupp till alla filer.

Detta är ju jät­te­bra, tills man 1) Inser att den nya temp­la­ten man ska­pat ägs av ens egen använ­dare och/eller 2) Man inte längre kan ändra filer. Lös­ningen är enkel.

Först, se till så att du till­hör grup­pen som webb­lä­sa­ren använ­der (här för­ut­satt att vara www-data).

Ctrl+Alt+T för att få upp ter­mi­na­len, och sedan

sudo usermod -a -G www-data <user>

Notera: Starta om datorn efteråt.

För att kon­trol­lera så att grup­pen är tillagd, skriv groups <user> i ett terminalfönster.

Nu behövs två kom­man­don för att få detta att fun­gera. Först, rekur­sivt ägande av den spe­ci­fika map­pen. OBS: kom­man­dona här (chown and chmod) kan skada din dator om du inte är för­sik­tig. Se till så att map­pen som du änd­rar är exakt den map­pen som ska änd­ras, inte någon­ting annat. Du behö­ver antingen vara inlog­gad som root eller använda sudo för att köra dessa kom­man­don, av den anledningen.

Först:

chown -R www-data:www-data /home/user/folder

  1. chown — change file owner and group (ändra filä­gare och grupp), se man chown för detaljer
  2. -R — Rekursivt
  3. <owner>:<group>, i detta fall www-data:www-data
  4. Sök­vä­gen till map­pen. Om du inte är inlog­gad som rot kan du använda ~/folder om den lig­ger i din hem­mapp. Stan­dard­plats bru­kar vara /var/www/<någonting>

Nu “ägs” filen av www-data, vil­ket leder till den andra modi­fi­ka­tio­nen, som nog inte bör ligga på live: Grup­pen ska kunna skriva till filerna också:

chmod -R g+w /home/user/folder

  1. chmod — change file mode bits (ändra filens typ­vär­des­bi­tar). På ren svenska: Ändra filens tillå­tel­ser, se man chmod för detaljer
  2. g+w — Lägg till skriv­rät­tig­he­ter (w, write) till grup­pen. Andra vär­den är u=user, a=all, använd - för att ta bort rät­tig­he­ter. Andra rät­tig­he­ter är r=read och x=execute

Bash­script

Jag är lat och har trött­nat på att skriva dessa kom­man­don varje gång, så här kom­mer mitt bash­script, spa­rat i ~/bin som www-permissions.sh. Det körs med ./bin/www-permissions.sh /sökväg/till/mappen/som/ska/ändras

#!/bin/bash
# Small script to chown and chmod a folder to www-data
DIR=$1

sudo chmod -R g+w ${DIR} && sudo chown -R www-data:www-data ${DIR}

För att det ska kunna köras, använd kom­man­dot chmod +x ~/bin/www.permissions.sh

Kodsnuttar för WordPress

Om inget annat sägs så kan dessa antingen skrivas/kopieras in i ditt temas functions.php eller för den delen använ­das som en del av en plu­gin. I de flesta fal­len är kod­snut­tarna sådana som jag antingen har hit­tat någon­stans och vida­re­ut­veck­lat, eller löst eftersom jag hade ett behov som behövde fyl­las. De är inte, i de flesta fall, skrivna som helt kom­pletta, utan är till för inspi­ra­tion och vidareutvecklande.

Stöd IE6 Shaming

Som nog de flesta vet finns det en hel del debatt om IE6 och fak­tu­met att IE6 fort­fa­rande finns där ute.

Detta är en liten funk­tion base­rad på Roots hea­der. Jag använ­der den med en kon­stant för huruvida den ska akti­ve­ras eller inte.

function melindrea_supportIE6Shaming()
{
    ?><!--[if lt IE 7]><div class="alert">Your browser is <em>ancient!</em> <a href="http://browsehappy.com/">
    Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">
    install Google Chrome Frame</a> to experience this site.</div><![endif]-->
    <?php
}

Avre­gi­strera CSS för adminbar

Admin­ba­rens vara eller inte vara ver­kar vara hett omde­bat­te­rad. Över­lag tyc­ker jag om den, men har känt ett behov av att kunna ändra den (Word­Press, Y U NO make admin bar responsive?).

Själva koden är enkel: wp_deregister_style('admin-bar');

Om man bara vill ändra den i fron­tend eller bac­kend bör man lägga den i en if-sats, antingen !is_admin() (fron­tend) eller is_admin() (backend).