Hamppu.net
 Etusivu > MS-potilas > WordPressin räätälöinti  

Arkisto aiheelle ’WordPressin räätälöinti’

WordPress-sivujen uudelleenohjaus

lauantai 12. helmikuuta 2011

Perustettuani uuden blogin, minulla oli yhteydenottosivu ja tiedesivu (uudemmassa blogissa nimellä ”Tutkimukset”, samalla sisällöllä) kahdessa paikkaa, mikä itsessään on turhaa ja tiedesivun osalta olisi vaatinut molempien sivujen päivitystä uusia tutkimuksia lisätessä. Tämän vuoksi päätin ”muuttaa” nämä kaksi sivua kokonaan tästä vanhasta blogista uuteen.

Oikea sivupalkki

Tämän blogin oikeassa sivupalkissa on linkit blogin alla oleviin sivuihin: Tietoja, MS-tauti, Tiede, Yhteydenotto. Aiemmin tämä oli toteutettu Sivut-vimpaimella (Pages-widget). Kopioin sivulinkkien html-lähdekoodin selaimesta ja muokkasin siitä tiede- ja yhteydenottolinkit osoittamaan uuteen blogiin. Poistin tämän jälkeen Sivut-vimpaimen käytöstä ja laitoin sen tilalle Teksti-vimpaimen (Text-widget), jonka otsikoksi annoin ”Sivut” ja tekstiksi muokkaamani lähdekoodin. Näyttää aivan samalta kuin ennenkin, mutta kaksi linkeistä vie uuteen blogiin.

Muut linkit -> uudelleenohjaus

Halusin myös, että selain ohjataan uudelle sivulle, mikäli avataan vanha tiede- tai yhteydenottosivu vaikkapa googlen kautta. Tähän tein ”nopean ja likaisen” ratkaisun hallinnointipaneelin ulkoasun muokkaimella. Muokkasin tiedostoa header.php (Yläpalkki) niin, että lisäsin sen alkuun koodin:

<?php
$page_id = intval($_REQUEST['page_id']);
if($page_id == 133) 
    header( 'Location: http://mspotilas.wordpress.com/tutkimukset/');
elseif ($page_id == 5)
    header( 'Location: http://mspotilas.wordpress.com/yhteydenotto/');
?>

minkä jälkeen seuraa header.php.

Testi:
http://hamppu.net/mspotilas/?page_id=5
http://hamppu.net/mspotilas/?page_id=133
:)

Tulen kyllä kaipaamaan tätä kaikkea muokattavuutta, mikä on mahdollista, kun on oma wordpress-asennus käytössä… wordpress.comissa blogin muokkaus­mahdollisuudet ovat hyvin rajalliset.

Linkit sosiaaliseen mediaan: Share and Follow

keskiviikko 5. tammikuuta 2011

Lisäsin eilen blogiin painikkeet, joiden avulla lukijat voivat halutessaan jakaa heitä kiinnostavia merkintöjä yleisimmissä sosiaalisen median palveluissa, esimerkiksi Facebookissa.

Valitsin tähän WordPressin lisäosan Share and Follow. Asennus sujui helposti, oletusasetukset olivat jo hyvät ja asetuksia voi halutessaan säätää todella monipuolisesti. Itse otin pienemmät kuvakkeet käyttöön, poistin rss-kuvakkeen (koska rss-kommenttilinkit löytyvät jo merkinnöistä) ja suomensin muutamat tekstit. Hyvältä vaikuttaa, tällä kokemuksella voin suositella.

Painikkeet näyttävät siis tältä:

Hakusivun otsikon korjaaminen

sunnuntai 16. elokuuta 2009

Jokin aika sitten päivitin blogin ohjelmiston versioon 2.8. Samalla lisäsin hakukenttään alt+i -pikavalinnan, minkä testauksen yhteydessä huomasin, että hakusivun otsikko näkyy virheellisesti englanniksi.

Esimerkiksi, jos hain hakusanalla elokuva, oli hakutulossivun otsikkona ”Search Results elokuva – MS-potilas”. Käyttämälläni käännöspaketilla sen olisi pitänyt olla ”Hakutulokset elokuva – MS-potilas”. Tarkistin kielitiedoston, mutta se oli kunnossa.

Pienen etsinnän jälkeen vika löytyi tiedostosta general-template.php (hakemistossa wp-includes). Sama virhe on edelleen versiossa 2.8.4, mihin päivitin blogin ohjelmiston tänään, joten julkaisen tässä korjauksen.

Etsi general-template.php-tiedostosta rivi (versiossa 2.8.4 rivi 500):

 		$title = sprintf(__('Search Results %1$s %2$s'), $t_sep, strip_tags($search));

Muokkaa siitä seuraavanlainen:

		$title = sprintf(__('Search Results').' %1$s %2$s', $t_sep, strip_tags($search));

Yhteydenottolomake

tiistai 23. kesäkuuta 2009

Valitsin blogini yhteydenottolomakkeeksi lisäosan WP Contact Form III. Siinä estetään yhteydenottolomakkeella roskapostitus yksin­kertaisella kysymyksellä tyyliin ”2+2 = ?”.

Kysymystä (ja odotettua vastausta) voi muuttaa lisäosan asetuksista, jolloin sen todennäköisyys, että joku jaksaisi viilata jotain roskapostitusskriptiä juuri sinun yhteydenottolomakkeellesi, muuttuu lähes olemattomaksi. Itse päätin kuitenkin tehdä kysymyksestä muuttuvan. Seuraavassa ohjeet, miten sen tein.

Avaa wp-contactform-iii.php (tai vanhemmissa lisäosan versioissa wp-contactform.php). Etsi funktio:

function wpcf_is_challenge($input) {
...
	return $is_challenge;
}

Kommentoi tämä funktio ja lisää sen eteen kaksi funktiota niin, että lopputulos näyttää seuraavalta:

// mspotilas
function wpcf_get_question() 
{
    if($_POST[wpcf_session] == '') {
        srand(time());
        $random = (17 + ((rand()%9)) * 16 + (rand()%9)) ^ 0x96;
        $_POST[wpcf_session] = sprintf("%d", $random);
    }
 
    $random = intval($_POST['wpcf_session']) ^ 0x96;
    $n1 = $random % 16;
    $n2 = intval($random / 16);
    return sprintf("%d + %d =", $n1, $n2);
}
 
// mspotilas
function wpcf_is_challenge($input) {
    $random = intval($_POST['wpcf_session']) ^ 0x96;
    $n1 = $random % 16;
    $n2 = intval($random / 16);
    if($n1 + $n2 == intval($input))
        return true;
    return false;
}
/* commented out mspotilas
function wpcf_is_challenge($input) {
	$is_challenge = false;
	$answer = get_option('wpcf_answer');
	$answer = htmlentities(stripslashes(attribute_escape($answer)));
	if($input == $answer) {
		$is_challenge = true;
	}
	return $is_challenge;
}
*/

Funktio wpcf_get_question luo kysymyksen muotoa ”x + y =”, joissa x ja y ovat numeroita välillä 1–9.

Etsi seuraavaksi rivi, joka alkaa:

    $question =

vaihda sen tilalle rivi:

    $question = wpcf_get_question();//htmlentities(stripslashes(get_option('wpcf_question')));

Etsi rivi:

	<input type="hidden" class="hiddenfield" name="wpcf_stage" value="process" />

(tai vanhemmassa versiossa:)

<input type="hidden" name="wpcf_stage" value="process" />

lisää perään rivi:

	<input type="hidden" class="hiddenfield" name="wpcf_session" value="' . $_POST[wpcf_session] . '" />

Ja sitten testaamaan. :)

WordPressin versio päivitetty 2.8:aan

Päivitin viime viikonloppuna WordPressin ohjelmiston 10.6.2009 julkaistuun versioon 2.8. Samalla päivitin lisäosat uusimpiin versioihinsa. Käyttämäni Simple CAPTCHA-lisäosa muuttui niin, että varmistuskuva näytetään nyt hieman eri paikassa kommentin­syöttö­lomakkeella. Muita lukijoille näkyviä muutoksia päivitykset eivät tuoneet mukanaan.

Huomasin samalla, että WP Contact Form III -lisäosan kehitys on lopetettu, mistä sain kipinän tämän merkinnän kirjoittamiseen.

Ohjelmistopäivityksen yhteydessä lisäsin hakukentälle pika­valinta­näppäimen i, eli useilla selaimilla hakukentän saa aktiiviseksi näppäinyhdistelmällä ALT+i.

WordPress: Default-teema ja näkymättömät luetelma­merkit Internet Explorerissa

lauantai 30. elokuuta 2008

WordPressin oletus- eli default-teemassa (ns. Kubrick-teema) luetelmamerkit (bullet-merkit eli luetelmapallot :) ) on tyylitelty css-tiedostossa sellaisia valitsimia käyttäen, jotka eivät toimi Internet Explorerissa.

Esimerkki luettelosta luetelmamerkkeineen:

  • asia numero yksi
  • toinen juttu
  • kolmas listan asia

Merkintöjen luetelmamerkit määritellään default-tyylin (muokkaa­mattomassa) style.css-tiedostossa seuraavasti:

html>body .entry ul {
	margin-left: 0px;
	padding: 0 0 0 30px;
	list-style: none;
	padding-left: 10px;
	text-indent: -10px;
	}
 
- - -
 
.entry ul li:before, #sidebar ul ul li:before {
	content: "\00BB \0020";
	}

IE tukehtuu :before-valitsimeen ja luetelmamerkit jäävät ainakin uudemmilla versioilla kokonaan näyttämättä, vaikka css-tiedostosta tämä optimistinen lausunto löytyykin:

/* Begin Lists
 
	Special stylized non-IE bullets
	Do not work in Internet Explorer, which merely default to normal bullets. */

Koska käytän itse pääosin Linuxia ja Firefox-selainta enkä luonnollisestikaan voinut arvata, että WordPressin oletusteemassa voisi olla tällainen ”ominaisuus”, olin käyttänyt merkinnöissä luetteloita ja luetelmamerkkejä jo monessa paikkaa. Potilas­kertomus­merkintää kasatessani tulin testanneeksi blogia hieman enemmän myös Internet Explorerilla (toki aluksi olin testannut, mutta silloin merkintöjä ja luetelmamerkkejä ei vielä juurikaan ollut) ja huomasin tämän ongelman.

Yritin etsiä netistä ratkaisua, jolla nämä ”bulletit” saisi näkymään kaikilla yleisimmillä selaimilla. Yllättävää kyllä, vaikka ongelma on jo ainakin yli vuoden vanha ja ollut olemassa WordPressin 2.0 -versiosta lähtien, ei siihen vieläkään löytynyt itseäni tyydyttävää ratkaisua. Joten sellainen piti itse tehdä.

Oletusluetelmamerkit merkintöihin

Ratkaisussani sivupalkin bulletit saivat jäädä ennalleen. Näin ollen ne näkyvät oikein mm. Firefoxilla ja silti Internet Explorerillakin sivupalkki on siisti, vaikkakin ilman tyyliteltyjä »-merkkejä. Merkinnöissä olevat luetelmamerkit muutetaan tyylitellystä »-merkistä oletusmerkkiin •.

Avaa (esimerkiksi teemojen muokkauksen kautta) tiedosto ./wp-content/themes/default/style.css ja etsi kohta:

html>body .entry ul {
	margin-left: 0px;
	padding: 0 0 0 30px;
	list-style: none;
	padding-left: 10px;
	text-indent: -10px;
	}

Korvaa se seuraavalla:

.entry ul {
	padding-left: 10px;
	margin-left: 0px;
}

Etsi:

.entry ul li:before, #sidebar ul ul li:before {
	content: "\00BB \0020";
	}

ja korvaa seuraavalla:

#sidebar ul ul li:before {
	content: "\00BB \0020";
	}

Päivitä tiedosto muutoksien jälkeen palvelimelle.

Pahoittelen blogini luettelojen aiempaa mahdollista huonoa luettavuutta Internet Explorer -selaimilla. :) Nyt luettelot ovat siistit luetelmamerkkeineen.

WordPress: Sivujen otsikot ojennukseen

perjantai 25. heinäkuuta 2008

Sivujen otsikot (<title>) ovat WordPressissä oletuksena eri tyyppisille sivuille muotoa:

Kotisivu: Blogin nimi
Arkistosivut: Blogin nimi » Arkiston nimi/Aihe/Avainsana
Yksittäiset merkinnät: Blogin nimi » Arkisto » Merkinnän otsikko

Miksi ihmeessä merkintöjen otsikoissa on sana Arkisto (Blog Archive)? Ilmeisesti tässä haetaan polkumaista rakennetta »-merkkien kanssa, mutta se ei mielestäni toimi dokumentin otsikossa. Tärkein/yksilöivä asia tulisi olla otsikon alussa, jotta otsikko on helppo erottaa selaimen sivujen korvakkeista tai käyttöjärjestelmän tehtäväpalkista. WordPressin oletusotsikot voivat lisäksi tuottaa ongelmia hakukoneiden kanssa.

Oma tavoitteeni:
Kotisivu: Blogin nimi (ei siis muutosta)
Arkistosivut: Arkisto: Arkiston nimi/Aihe/Avainsana – Blogin nimi
Yksittäiset merkinnät: Merkinnän otsikko – Blogin nimi

Teeman tiedostoja aiemmin selatessani ja muokatessani olin pannut merkille, että otsikko määritellään teeman header.php-tiedostossa. Google löysi valmiitkin ohjeet räätälöintiin MeganMcDermott.com:n sivulta Fixing my Wordpress Title Tags. Pienellä soveltamisella sain hänen esittämästään ratkaisusta muokattua haluamani loppu­tuloksen.

Valitse ohjausnäkymässä Ulkoasu, sieltä Teemojen muokkaus ja tiedosto header.php. Etsi koodi, joka alkaa <title> ja päättyy </title>, esim.

<title><?php bloginfo('name'); ?> <?php if ( is_single() ) { ?> &raquo; Blog Archive <?php } ?> <?php wp_title(); ?></title>

Tässä blogissa edellä oleva kohta on header.php:ssa muutettu seuraavanlaiseksi:

<title>
<?php if ( is_home() ) { ?><?php bloginfo('name'); ?>
<?php } elseif ( is_archive() ) { ?>Arkisto: <?php wp_title($sep = ''); ?> - <?php bloginfo('name'); ?>
<?php } else { ?><?php wp_title($sep = ''); ?> - <?php bloginfo('name'); ?>
<?php } ?>
</title>

Päivitä tiedosto (Update File) -painike tallentaa tehdyn muutoksen. Kuvaamani muutos onnistuu sellaisenaan ainakin WordPressin versioissa 2.5 ja 2.6, mutta luultavasti myös vanhemmissa versiossa.

Koodausvapaa vaihtoehto saman lopputuloksen saavuttamiseksi on käyttää jotain pluginia, esimerkiksi HeadSpace 2 tai SEO Title tag.

WordPress 2.6: Revisioiden tallennus pois päältä

perjantai 18. heinäkuuta 2008

Kirjoitettuani vain pari merkintää sen jälkeen, kun olin päivittänyt WordPressin versioon 2.6, huomasin merkintöjen id-numeroiden kasvaneen huomattavasti. Pieni vilkaisu tietokantaan olikin melkoinen hämmästys, sillä tietueita merkintöjen taulussa oli useita kymmeniä.

Asiaa tarkemmin tutkittuani selvisi syy: WP 2.6:n uusi ominaisuus, jossa jokaisesta muokkausvaiheenkin tallennusversiosta jätetään tietokantaan kopio eli revisio, wikin tapaan. Tässä yhden käyttäjän blogissa ominaisuus on turha ja vie turhaan tieto­kanta­tilaa.

Ominaisuuden saa pois päältä lisäämällä wp-config.php-tiedostoon rivin:

define('WP_POST_REVISIONS', false);

Myös automaattitallennuksen yhteydessä tallennetaan postista revisio, vaikka edellinen asetus olisikin asetettu arvoon ”false”. Vähentääksesi näitä yksittäisiä automaattitallennusrevisioita, voit nostaa automaattitallennuksen intervallia ylöspäin oletusarvosta 60 sekuntia lisäämällä wp-config.php-tiedostoon rivi:

define('AUTOSAVE_INTERVAL', 3600); // sekunteina. 3600=1 tunti

Jo mahdollisesti luodut revisiot saa siivottua tietokannasta esim. phpMyAdmin-ohjelmalla seuraavalla sql-lauseella:

DELETE FROM wp_posts WHERE post_type = 'revision';

Näihin muokkauksiin tarvitut tiedot löytyivät WordPressin foorumilta, ja myös kätevästi koottuna Lester Chanin blogi­merkinnästä How To Turn Off Post Revision In WordPress 2.6.

WordPress: Lainausmerkit suomen kielen mukaisiksi ja miinukset miinuksina

keskiviikko 16. heinäkuuta 2008

Tässä merkinnässä kuvatut mukautukset toimivat ainakin WordPressin versioissa 2.5(.1) ja 2.6, muita versioita en ole testannut. Mukautukset voi tehdä blogiinsa vain, jos omaa pääsyn ja oikeudet WordPress-asennuksen tiedostoihin palvelinkoneella, jolla blogi sijaitsee.

Lainausmerkit väärin vinksallaan

WordPress korvaa automaattisesti merkintöihin ja kommentteihin kirjoitetut suorat lainausmerkit kaarevilla siten, että aloitusmerkki ja lopetusmerkki ovat ”erikätisiä” seuraavasti: “ ja ”. Suomen kielen normaalit lainausmerkit kuitenkin ovat kaarevat kokolainausmerkit siten, että aloitus- ja lopetusmerkki ovat samanlaiset, joten tämä epäkohta piti tietysti korjata. :)

Muokkaus tehdään tiedostoon [wordpressin hakemisto]/wp-includes/formatting.php. Etsi tiedostosta rivi:

$dynamic_replacements = array('&#8217;$1','$1&#8216;', '$1&#8243;', '$1&#8242;', '$1&#8217;$2', '$1&#8220;$2', '&#8221;$1', '&#8217;$1', '$1&#215;$2');

ja korvaa se rivillä:

$dynamic_replacements = array('&#8217;$1','$1&#8217;', '$1&#8243;', '$1&#8242;', '$1&#8217;$2', '$1&#8221;$2', '&#8221;$1', '&#8217;$1', '$1&#215;$2');

(lainausmerkeistä suomen kielessä: http://www.cs.tut.fi/~jkorpela/suomi/lain.html)

Kaksi miinusta muuttuu ajatusviivaksi?

Myös tällainen ominaisuus löytyy WordPressistä, eli merkintöihin ja kommentteihin kirjoitetut peräkkäiset kaksi miinusta muuttuvat ajatus­viivaksi (–) tai pitkäksi yhdys­viivaksi (—). Tämä voi aiheuttaa sekaannuksia, jos blogissa käsitellään esimerkiksi ohjelma­koodia, jossa esiintyy näitä miinus­merkkejä. Jos haluat tästä ominaisuudesta eroon, etsi samasta formatting.php-tiedostosta rivit:

$static_characters = array_merge(array('---', ' -- ', '--', 'xn&#8211;', '...', '``', '\'s', '\'\'', ' (tm)'), $cockney);
$static_replacements = array_merge(array('&#8212;', ' &#8212; ', '&#8211;', 'xn--', '&#8230;', '&#8220;', '&#8217;s', '&#8221;', ' &#8482;'), $cockneyreplace);

ja korvaa ne seuraavasti (taulukoista toinen ja kolmas alkio kommentteihin):

$static_characters = array_merge(array('---', /*' -- ', '--',*/ 'xn&#8211;', '...', '``', '\'s', '\'\'', ' (tm)'), $cockney);
$static_replacements = array_merge(array('&#8212;', /*' &#8212; ', '&#8211;',*/ 'xn--', '&#8230;', '&#8220;', '&#8217;s', '&#8221;', ' &#8482;'), $cockneyreplace);

Jos haluat estää kolmen miinusmerkin muuttumisen pitkäksi yhdysviivaksi (—), kommentoi myös ensimmäinen alkio, seuraavasti:

$static_characters = array_merge(array(/*'---', ' -- ', '--',*/ 'xn&#8211;', '...', '``', '\'s', '\'\'', ' (tm)'), $cockney);
$static_replacements = array_merge(array(/*'&#8212;', ' &#8212; ', '&#8211;',*/ 'xn--', '&#8230;', '&#8220;', '&#8217;s', '&#8221;', ' &#8482;'), $cockneyreplace);

(vaakaviivamerkeistä suomen kielessä: http://www.cs.tut.fi/~jkorpela/suomi/viivat.html)