Kategori wordpress

Plugin: No Soup

Jag gjorde en plugin (No Soup) som kan spärra vissa IP-adresser från att komma åt din WordPress-sajt och istället skicka iväg dem till en annan adress. Den kan också ta hela IP-block och peka om dem.

Det här skulle till exempel kunna användas för att neka tillträde åt svenska myndigheter militär och politiska partier och istället skicka iväg dem till Wikipedias artikel om ACTA

Läs mer om No Soup. Ladda ner No Soup från WordPress repository

Snabbare WordPress på egen server

Sen jag bytte till Tilaa, där jag sköter webbserver och databas själv, har svarstiderna förbättrats avsevärt.

Pingdom rapporterar:

 

Jag kör Gentoo Linux, nginx, php-fpm, fastcgi-cache, apc och mysql med query cache.

 

Skapa WordPress-användare direkt i mysql

Jaså, du har en WordPress-instans men kan inte logga in? Det enklaste sättet är att begära nytt lösenord för en känd användare (admin kanske), men det förutsätter att du kontrollerar mailadressen som den användaren är registrerad med.

Men om du har tillgång till filsystemet där WordPress-filerna ligger så finns det ett annat sätt. I wp-config.php står lösenordet till databasen. Logga in till mysql från prompten (eller via phpmyadmin) och kör följande:

INSERT INTO wp_users (user_login, user_pass, user_nicename, 
user_email, display_name) 
VALUES ('myuser', MD5('mypassword'), 'mynicename', 
'mailadress@example.com', 'mydisplayname');

Kontrollera nu vilken ID den posten fick

SELECT ID FROM wp_users WHERE user_login = 'myuser';

Använd detta id i nedanstående SQL-inserts. I mitt exempel är ID = 34.

INSERT INTO wp_usermeta (user_id, meta_key, meta_value) 
VALUES (34, 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}');
 
INSERT INTO wp_usermeta (user_id, meta_key, meta_value) 
VALUES (34, 'wp_user_level', 10);

Nu ska det gå att logga in med admin-användaren myuser (ändra till lämpligt namn …)

Unrecognized exception: [href=edit-comments.php?page=disqus]

I senaste WordPress-betan, 3.2 beta 1, används jQuery 1.5.2. Den versionen tillåter inte längre css-selektorer som inte sätter attributvärden inom citationstecken. Om man, som jag, kör Disqus som kommentarsystem så uppstår ett problem, eftersom Disqus använder [property=value]-metoden vilket gör att jag får javascriptfel i admin vilket gör att de flesta menyknappar etc. är helt döda. Firebug visar det här felet:

Som tur är är det lätt att ordna, det är bara att gå in i plugin-filen disqus-comment-system/disqus.php och ändra:

mc.find('a.wp-has-submenu').attr('href', 'edit-comments.php?page=disqus').end()
   .find('.wp-submenu  li:has(a[href=edit-comments.php?page=disqus])')
   .prependTo(mc.find('.wp-submenu ul'));

till

mc.find('a.wp-has-submenu').attr('href', 'edit-comments.php?page=disqus').end()
   .find('.wp-submenu  li:has(a[href="edit-comments.php?page=disqus"])')
   .prependTo(mc.find('.wp-submenu ul'));

(det är alltså [href=edit-comments.php?page=disqus] som behöver attributfnuttar: [href="edit-comments.php?page=disqus"])

Mer info här.

Jag gissar att Disqus lagar den här buggen väldigt snart.

WordPress for iOS 2.6.4

Det här inlägget skrevs med hjälp av WordPress for iOS 2.6.4, dvs senaste versionen av WordPress på iPhone. Det är mest buggfixar och stabilitetsfixar i den nya versionen, berättar Isaac Keyet på officiella bloggen för WP4iOS.

Den enda nya funktionaliteten är att man kan ange bildstorlekar fritt numera. <br/><br/>

Övrigt: preview fungerar inte. Autorotate fungerar inte. Inmatning av länkar är ointuitivt och jag kommer nog inte utsätta mig för det här igen.

Uppdatera till WordPress 3.0.4

Dags att uppgradera WordPress till 3.0.4. Ännu en säkerhetsuppdatering. WordPress själva kallar uppdateringen critical.

Problemet låg i biblioteket kses. Kses används för att filtrera html så att xss-försök och annan elak kod tas bort. WordPress-Otto har skrivit mer om vad kses är och den riktigt håriga wp-hackern kan studera vad som ändrats direkt i changeseten. Med andra ord, in och uppdatera.

Trött WordPress-humor

Jag ber om ursäkt, men det är sent och jag är lättroad (och lätt oroad)

WordPress kickstart, del 2

Som jag lovade i kommentarerna till förra inlägget, här kommer scriptet som låter dig sätta upp en WordPress-site under minuten. Perfekt för utveckling och test med andra ord. Jag förutsätter en del i koden. Till exempel bör du ha nginx som webbserver med en apachelik struktur för virtual hosts, dvs en katalog /etc/nginx/sites-available där alla virtual hosts är definierade, och en katalog /etc/nginx/sites-enabled, där de för tillfället aktiverade servrarna är inlänkade.

Men här är hela härligheten, lycka till. Tänk på att detta använder jag bara på min egen utvecklings-server, inte i någon delad miljö. Det finns ingen kontroll av input eller andra säkerhetsåtgärder. Använd på egen risk.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
###########################################
# Constants, set and forget
###########################################
# temp storage for the wordpress tarball
TMP_STORAGE=wptemp
 
# web root for the wordpress site
WWWROOT=/var/www
 
# Privileged db use/pwd for creating database and granting rights
DBROOT=badass
DBROOTPWD=badass
 
# Database owner/pwd for the WordPress tables
DBUSER=dbuser
DBPWD=dbuser
 
# user:group for the web server
WWWUSER=nginx
WWWGRP=nginx
 
# network device used for detecting external ip address
DEVICE=eth0
 
###########################################
# ok, no touching down there
 
# Get the WordPress stuff, the nightly build, unzip it
cd $TMP_STORAGE
wget http://wordpress.org/nightly-builds/wordpress-latest.zip
unzip wordpress-latest.zip
 
# Get the site name
echo -n "Domain name? : "
read -e WP_DIR
 
# mv the WordPress files to their final destination. 
# we will add web server config later
cp -R wordpress ${WWWROOT}/${WP_DIR}
rm -rf wordpress*
 
# Create virtual host config for nginx. 
# Use the template below and then replace the site name
ngx_template=$(cat <<NGXEOT
server { \n
\tlisten 80; \n
\tserver_name [DOMAIN]; \n
\taccess_log /var/log/nginx/[DOMAIN].access.log; \n
\terror_log /var/log/nginx/[DOMAIN].error.log debug; \n
\troot /var/www/[DOMAIN]/; \n
\tserver_name_in_redirect off; \n
\tlocation / { \n
\t\tindex index.php index.htm index.html; \n
\t\tif (-f \$request_filename) { \n
\t\t\texpires 30d; \n
\t\t\tbreak; \n
\t\t} \n
\t\ttry_files \$uri \$uri/ /index.php; \n
\t} \n
\tlocation ~ \.php$ { \n
\t\tfastcgi_pass   127.0.0.1:9000; \n
\t\tinclude /etc/nginx/fastcgi.conf; \n
\t} \n
}\n
NGXEOT
)
echo -e ${ngx_template//\[DOMAIN\]/$WP_DIR} > /etc/nginx/sites-available/${WP_DI
R}.conf
ln -s /etc/nginx/sites-available/${WP_DIR}.conf /etc/nginx/sites-enabled/
 
# Create mysql database
dbname=${WP_DIR//[\.-]/_}
mysql -u ${DBROOT} -p${DBROOTPWD} <<QI
create database ${dbname}
QI
 
# Grant database to non-root user
mysql -u ${DBROOT} -p${DBROOTPWD} <<QI
grant all on ${dbname}.* to '${DBUSER}'@'localhost';
QI
 
# Mod the Wordpress config file so that the db config fits
sed -e "s/database_name_here/$dbname/"\
	-e "s/username_here/${DBUSER}/"\
	-e "s/password_here/${DBPWD}/" \
	${WWWROOT}/${WP_DIR}/wp-config-sample.php \
	> ${WWWROOT}/${WP_DIR}/wp-config.php
 
chown ${WWWUSER}:${WWWGRP} ${WWWROOT}/${WP_DIR}/wp-config.php
rm ${WWWROOT}/${WP_DIR}/wp-config-sample.php
 
# Reload web server
/etc/init.d/nginx reload
 
echo "Done!"
echo "Add this to your hosts file:"
echo ` ifconfig ${DEVICE} | grep inet | grep -v inet6 | cut -d ":" -f 2 | cut -d
 " " -f 1` ${WP_DIR}

WordPress kickstart

Det går ganska fort att installera WordPress. Med ett enkelt bash-script går det ännu fortare. Så här gör jag för att installera en ny WP-sajt på min gentoo-server med nginx som kör i en virtualbox-image på min Macbook Pro.

Scriptet laddar hem senaste nightly build av WordPress, packar upp den, skapar en ny virtual host, skapar databas och användare samt modifierar wp-config.php. Efter det behöver jag bara lägga in det nya host-namnet i /etc/hosts och sajten är uppe.

Unable to display content. Adobe Flash is required.

Internlänkar i WordPress

En av nyheterna i WordPress 3.1 beta 1 som “lanserades” idag, är möjligheten att enkelt länka till internt innehåll på sajten, till andra poster eller sidor.

Det fungerar så här, markera din ankartext och klicka på länksymbolen.

 

Du får då upp ett gränssnitt där det är enkelt att söka upp innehåll, välja lämplig post eller sida och skapa länken.

 

Klicka på “Save link” (eller “Spara länk” när den svenska översättningen kommer ikapp) och du är klar. Ännu ett kliv mot fullt accepterat CMS är taget.

(läs mer om Easy within-site linking from new content)

Copyright © Jonas Nordström
Teknik och media

Byggt på Notes Blog Core
Powered by WordPress