Miten suojaan WordPress-sivun salasanalla?

Ohje tarkistettu: 26.3.2020

Onko sinulla sisältöjä, joita haluaisit näyttää kotisivuillasi, mutta vain rajatuille henkilöille?

Tässä kirjoituksessa käymme läpi, kuinka yksittäisiä WordPress-sivuja / -artikkeleita on mahdollista suojata salasanalla.

Mikäli haluat suojata koko WordPress-sivuston salasanalla, esimerkiksi kehityksen ajaksi, katso ohje WordPress-sivuston asettaminen huoltotilaan.

Yksinkertainen WP-sivun suojaus salasanalla

WordPress sisältää yksinkertaisia salasanatoimintoja jo sisäänrakennettuna. Helpoimmillaan saat suojattua yksittäisen sivun tai artikkelin jo seuraavan ohjeen avulla:

1. Kirjaudu WordPress-hallintaan

Kirjaudu aluksi WordPress-hallintaan ja valitse sivu tai artikkeli, jonka haluat suojata salasanalla.

2. Muokkaa sivun näkyvyyttä

Valitse sivunäkymän oikeasta yläkulmasta, laatikon Julkaise sisältä kohta Näkyvyys ja valitse muokkaa. Saat eteesi kolme vaihtoehtoa, joista kohdan Salasanasuojattu valittuasi, pääset antamaan sivulle haluamasi salasanan. Paina vielä OK sekä muista myös päivittää työstämäsi sivu tai artikkeli.

3. Vieraile sivulla

Vieraile kyseisellä sivulla, niin huomaat sen kysyvän jatkossa salasanaa ennen varsinaisen sisällön esittämistä. Salasanakyselyn näkymä voi vaihdella käytetyn ulkoasuteeman mukaisesti.

Salasanasuojatun Extranet-toiminnalisuuden rakentaminen WordPressiin

Mikäli tarve on suojata kerralla useampia eri alasivuja, voidaan WordPress sivustolle helposti rakentaa oma kevyt extranet -osio. Tähän voidaan hyödyntää monenlaisia valmiita lisäosia, mutta toteutus onnistuu myös ilman erillisiä moduuleita sivupohjia hyödyntämällä.

Seuraavassa ohjeessa käymme läpi, kuinka luomme oman sivupohjan käytettäväksi salasanasuojatuilla sivuilla. Tämän jälkeen nämä sisällöt näkyvät vain sisään kirjautuneille WordPress -käyttäjille, eli voit omat tunnukset jokaiselle halutulle henkilölle sivujen käyttöä varten.

1. Sivupohjan luominen

Luo tarvittava sivupohja, esimerkiksi kopioimalla käyttämästäsi ulkoasuteemasta valmis rakenne. Tässä esimerkissä käytän teemaa Twenty Seventeen, jolloin käytän sivupohjan luomiseksi teeman kansiosta löytyvää page.php tiedostoa.

Kopioi tiedosto ja tallenna muokattava kopio esimerkiksi nimellä page-extranet.php

2. Sivupohjan muokkaaminen

Avaa muokattava page-extranet.php tiedosto. Alkuperäisen koodin pitäisi näyttää seuraavanlaiselta

<?php
/**
 * The template for displaying all pages
 *
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages
 * and that other 'pages' on your WordPress site may use a
 * different template.
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Seventeen
 * @since 1.0
 * @version 1.0
 */

get_header(); ?>

<div class="wrap">
	<div id="primary" class="content-area">
		<main id="main" class="site-main" role="main">

			<?php
			while ( have_posts() ) : the_post();

				get_template_part( 'template-parts/page/content', 'page' );

				// If comments are open or we have at least one comment, load up the comment template.
				if ( comments_open() || get_comments_number() ) :
					comments_template();
				endif;

			endwhile; // End of the loop.
			?>

		</main><!-- #main -->
	</div><!-- #primary -->
</div><!-- .wrap -->

<?php get_footer();

3. Muokkaa sivupohjan koodia

Sivupohjan muokkaaminen vaatii hieman ymmärrystä PHP koodista. Seuraavaksi teemme kaksi muutosta tiedostoon, joiden avulla WordPress tunnistaa tiedoston uudeksi sivupohjaksi sekä osaa piilottaa sisällön kirjautumattomilta kävijöiltä.

Alkuun vaihdamme kommentoidun info-osuuden muotoon:

/**
* Template Name: Extranet
*/

Tämä muutos kertoo WordPressille, että kyseessä on Extranet niminen sivupohja. Nimen voi päättää toki vapaasti haluamakseen ja sitä käytetään lähinnä WordPressin sisällä.

Lopuksi lisäämme koodin toiminnallisuuden, joka näyttää sisällön vain kirjautuneille kävijöille. Tämä tapahtuu hyödyntämällä WordPressin sisäänrakennettua is_user_logged_in() funktiota. Teemme varsinaisen editorilla tuotetun sisällön kutsun eteen tarkistuksen, joka katsoo onko kävijä kirjautunut sisään vai ei. Mikäli käyttäjä on kirjautunut, hänelle esitetään sisältö normaalisti, mutta sisään kirjautumattomille käyttäjille esitetään erilaista sisältöä, kuten esimerkissä informatiivista tekstiä ja linkkiä kirjautumissivulle.

Muokattu koodi koko tiedoston osalta voisi näyttää esimerkiksi tältä:

<?php
/**
* Template Name: Extranet
*/

get_header(); ?>

<div class="wrap">
	<div id="primary" class="content-area">
		<main id="main" class="site-main" role="main">

			<?php if ( is_user_logged_in() ) {
			while ( have_posts() ) : the_post();

				get_template_part( 'template-parts/page/content', 'page' );

				// If comments are open or we have at least one comment, load up the comment template.
				if ( comments_open() || get_comments_number() ) :
					comments_template();
				endif;

			endwhile; // End of the loop.
			}else{  ?>
  
	<p>Nähdäksesi sivun sisällön, ole hyvä ja <?php wp_loginout( get_permalink() ); ?> </p>
			 
<?php } ?>


		</main><!-- #main -->
	</div><!-- #primary -->
</div><!-- .wrap -->

<?php get_footer();

4. Vie sivupohjan tiedosto palvelimelle

Vie seuraavaksi sivupohjan tiedosto palvelimelle, ulkoasuteeman kansioon. Tämän jälkeen voit valita hallintapaneelista luomasi sivupohjan haluamillesi sisältösivuille, sisältösivun muokkausnäkymästä kohdasta Sivun ominaisuudet: Sivupohja.

Mikäli kyseistä pudotusvalikko ei näy, varmistathan alkuun, että veit tiedoston oikeaan kansioon palvelimella ja olet myös aktivoinut muokkausnäkymässä Näyttöasetukset kohdasta valinnan Sivun ominaisuudet.