Eikö olisi selkeintä asentaa members-kansiossa olevaan WP:hen lisäosa, joka hoitaa asian.
http://wordpress.org/extend/plugins/private-only/
Tai Members, jos tarvitsette käyttäjien hallintaa samalla.
http://wordpress.org/extend/plugins/members/
Tuo ei vastannut kysymykseeni. Haluaisin käsitellä sessioita itse, joten onko mahdollista normalisoida sessioiden käyttäytyminen WordPress-asennusten välillä?
Ei niin, mutta antoi kenties vaihtoehtoisen tavan miten WP toimii.
Hakusanalla sessions in wordpress löytyy paljon infoa sessioista. Selvennätkö vielä miksi tarvitset juuri sessioita tilanteen ratkaisemiseen.
Tutkin sessioilla, onko käyttäjä kirjautuneena sivustolle. Jos ei ole, hänellä ei myöskään ole mitään asiaa /members/-kansioon. Tietenkin tämän voisi tehdä cookieseilla, mutta olen tykästynyt sessioihin niiden helppouden takia.
WordPress ei käytä sessioita, joten en oikein osaa vastata tarkemmin. Todennäköisesti teeman header.php on kuitenkin liian myöhäinen ajankohta aloittaa sessio. Kokeile vaikka aloittaa sessio init-koukulla. Jotain tällaista voi kokeilla lisäosan tai teeman functions.php tiedostossa.
add_action( 'init', 'my_session' );
function my_session()
{
// tähän session aloituskoodit
}
Itse käytän WP:n valmista is_user_logged_in()
-funktiota tai yllämainittuja lisäosia.
http://codex.wordpress.org/Plugin_API/Action_Reference
http://codex.wordpress.org/Function_Reference/is_user_logged_in
Kiitos avustasi. Ongelma ei ole vielä harmiksi ratkennut. Kai nyt puhumme varmasti samasta asiasta, eli sivuston ulkopuolisista käyttäjistä, jotka voivat kirjautua sisään. En tarkoita vierailijoita, jotka voivat kirjautua WordPress’iin sisään vaan vierailijoita, joille on oma käyttäjätietokanta.
Tutustun mainitsemiisi lisäosiin, mutta voisitko selvittää hieman, että miksi eivät evästeetkään toimi.
Rakenne on sama. Ensimmäisen WordPress-asennuksen sivusto sisältää kirjautumislomakkeen, jota käsittelee kirjautuminen.php. Ko. tiedosto suorittaa komennot:
setcookie("kayttaja", $usernam, 0, "/")
die();
Tämän jälkeen käyttäjällä on mahdollisuus klikata itsensä joko käyttäjäsivulle /members/, jossa toinen WP-asennus sijaitsee, tai palata takaisin julkiselle sivulle.
/members/-asennuksen header.php tarkistaa keksin olemassaolon, ja päättelee, pitääkö käyttäjää päästää näkemään sisältöä.
Jostain syystä keksi ei kuitenkaan asetu. PHP:n versio on 5.3. Keksi asettuu aivan normaalisti WP:n ulkopuolella testattuna, mutta ei tässä systeemissä.
Osaisitko sanoa, mikä on vikana?
En tarkoita vierailijoita, jotka voivat kirjautua WordPress’iin sisään vaan vierailijoita, joille on oma käyttäjätietokanta.
WordPressiin ei voi kirjautua kuin he, joilla luodaan oma käyttäjätietokanta. Joko käyttäjälle annetaan rekisteröitymismahdollisuus tai sitten admin tekee tarvittavat käyttäjätunnukset. Käyttäjän tiedot tallentuvat *_users ja *_usermeta taulukoihin. Vastaavasti esim. Members-lisäosalla hallitaan mitä käyttäjät saavat tehdä. Tai tarkemmin sanottuna mitä mikäkin rooli saa tehdä ja käyttäjät kuuluvat aina johonkin rooliin.
Mutta itse kysymykseen en taaskaan osaa vastata. Ensimmäinen vinkki on se, että käytä aina kuin mahdollista WP:n omia funktioita ja API-systeemiä.
Esim.
http://codex.wordpress.org/Function_Reference/wp_set_auth_cookie
http://codex.wordpress.org/Customizing_the_Login_Form#Make_a_Custom_Login_Page
http://digwp.com/2010/12/login-register-password-code/
Itse yksinkertaistaisin prosessia enkä tekisi kirjautumislomaketta root-kansion WP:hen, kun eivät ole siihen WP:n asennukseen kirjautumassa.