Lage egne malfiler i WordPress



Lage egne malfiler i WordPress

av Ole Petter den 12. januar 2020

Sist oppdatert: 18 januar, 2020 kl 23:25

Contents

Innhold

Introduksjon
index.php
single.php
page.php
archive.php
front-page.php

For å lage malfiler i WordPress må man følge wordpress-standarden for å hente innlegg og annet innhold.

Det finnes flere ulike malfiler, single.php, page.php og singular.php. For en oversikt over hele malfil-hierarkiet, følg linken nedenfor:

For arkiv brukes malfilen archive.php

Template Hierarchy
Oversikt over de ulike malfilene i WordPress.
Kilde: https://developer.wordpress.org/

index.php

index.php er standardsiden for å laste inn innleggsarkiv og enkeltinnlegg. I dette eksempelet vil denne siden vise innleggsarkiv.

<?php get_header(); ?>
    
    <div class="container">
       
        <div class="row">

            <?php if ( have_posts() ) { 
                $counter = 1; ?>

                <?php while ( have_posts() ) {
                    the_post(); ?>      
            
                <div class="col-lg-4 col-md-12 mb-4">

                    <div class="card">

                        <div class="view overlay hm-white-slight rounded z-depth-2 mb-2">                          

                            <?php the_post_thumbnail( 'medium-large', array( 'class' => 'img-fluid' )); ?>                            

                        </div>

                        <div class="card-body">
                             
                            <h6 class="mb-3 ">                               
                                <?php the_category(', '); ?>
                            </h6>                          

                            <h4 class="mb-3 font-weight-bold text-grey">
                                <strong><a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a></strong>
                            </h4>

                            <p>av
                                <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>" class="font-weight-bold grey-text"><?php the_author(); ?>, <?php echo get_the_date(); ?></a>
                            </p>

                            <p class="text-grey"><?php the_excerpt(); ?></p>

                            <a href="<?php echo get_the_permalink(); ?>" class="btn btn-primary btn-rounded">Les mer</a>

                            

                        </div>
                        <!-- card body --> 

                    </div>
                    <!-- card --> 

                </div>
                <!-- col-lg-4 --> 

                <?php if ($counter % 3 == 0) { ?>

                <?php } 
                $counter++;
                } // end while ?>
                
            <?php } // endif ?>            

        </div>
        <!-- ROW -->

        <?php pagination(); ?>

    </div>   

    <p>index.php</p>

<?php get_footer(); ?>

single.php

single.php er malfilen for enkeltinnlegg.

<?php get_header(); ?>

    <?php if ( have_posts() ) {
        while ( have_posts() ) {
            the_post();
        }
    } ?>

    <main>

        <div class="container">

            <?php the_post_thumbnail( 'large', array( 'class' => 'img-fluid mb-4' )); ?>

            <h1><?php the_title(); ?></h1>

                        <p>av 
                            <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>">
                            <?php the_author(); ?>
                            </a> den <?php echo get_the_date(); ?>
                        </p>
                        <hr>

            <?php the_content(); ?>

        </div>
        <!-- container -->

    </main>


<?php get_footer(); ?>

page.php

page.php er malfilen for sider i WordPress, og forskjellen fra single.php er at page.php er standard-malfilen for innleggstypen sider, mens single.php er malfilen for enkeltinnlegg.

Fordelen med å lage en egen malfil for sider er at man gjerne vil ha et annet html-oppsett og utseende for sider i forhold til innlegg.

<?php get_header(); ?>

    

    <?php if ( have_posts() ) {
        while ( have_posts() ) {
            the_post();
        }
    } ?>

    <main>

        <div class="container">

            <?php the_post_thumbnail( 'large', array( 'class' => 'img-fluid mb-4' )); ?>

            <h1><?php the_title(); ?></h1>

            <?php the_content(); ?>

        </div>
        <!-- container -->

    </main>


<?php get_footer(); ?>

archive.php

archive.php laster inn innleggsarkivet, og er også malfilen for kategorier, så hvis du trykker inn på en link til en innleggskategori, så vil archive.php laste inn disse innleggene. Sideoppsettet er ganske likt page.php og index.php, men det er greit å skille disse malfilene siden man gjerne vil at de skal synlig skille seg ut fra hverandre med egendefinert html og css-kode.

<?php get_header(); ?> 

    <div class="container">
        
        <div class="row">

            <?php if ( have_posts() ) { ?>

                <?php while ( have_posts() ) {
                    the_post(); ?>      
            
                <div class="col-lg-4 col-md-12 mb-4">

                    <div class="card">

                        <div class="view overlay hm-white-slight rounded z-depth-2 mb-2">
                            <a href="<?php echo get_permalink(); ?>">
                                <?php the_post_thumbnail( 'medium-large', array( 'class' => 'img-fluid' )); ?>                                                          
                            </a>
                        </div>

                        <div class="card-body">
                            <!-- excerpt --> 
                            <a href="" class="text-primary">  
                                <h6 class="mb-3 ">
                                    <i class=""></i>
                                    <?php the_category(', '); ?>
                                </h6>
                            </a>

                            <h4 class="mb-3 font-weight-bold text-grey">
                                <strong><a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a></strong>
                            </h4>

                            <p>av
                                <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>" class="font-weight-bold grey-text"><?php the_author(); ?>, <?php echo get_the_date(); ?></a>
                            </p>

                            <p class="text-grey"><?php the_excerpt(); ?></p>

                            <a href="<?php echo get_the_permalink(); ?>" class="btn btn-primary btn-rounded">Les mer</a>

                            

                        </div>
                        <!-- card body --> 

                    </div>
                    <!-- card --> 

                </div>

                <?php } ?>
                
            <?php } ?>            

        </div>
        <!-- ROW -->
        <p>archive.php</p>

    </div>   

<?php get_footer(); ?>

front-page.php

front-page.php er template for hjemmesiden, og hvis man vil ha en introduksjonsside som viser hva nettstedet handler om, kan man lage en egendefinert hjemmeside her.

Forklaring til funksjoner

have_posts()
Sjekker om det finnes innlegg som kan vises på siden. Brukes gjerne før while-løkken som går gjennom innleggene.

the_post()
Funksjonen viser innlegget hvis det finnes, inni denne funksjonen ligger all informasjonen som trengs for å hente alt innholdet.

the_content()
Denne funksjonen henter innholdet fra innlegget baser på id-en til innlegget og viser det på siden.

the_post_thumbnail()
Dette er det fremhevede bildet for innlegget, og vises som regel på toppen av siden.

get_the_post_thumbnail_url()
Denne funksjonen henter nettadressen til bildet.

the_category()
Denne funksjonen finner alle kategoriene som hører til innlegget

get_permalink()
Adressen til innlegget

the_excerpt()
Henter utdraget fra innlegget. Hvis det ikke er skrevet inn et utdrag, genererer wordpress et automatisk basert på de første paragrafene til innlegget.

single_cat_title()
Hvis man er inne på en kategori, viser denne funksjonen tittelen på kategorien. Nyttig hvis man har en eget arkiv-side for hver kategori, da kan man øverst bruke denne funksjonen til å vise kategorien.

get_header()

get_footer()

get_author_posts_url( )

get_the_author_meta()

pagination()
Denne funksjonen lager en side for et visst antall innlegg, hvis man har flere innlegg enn man vil vise på hver side kan man trykke på en link til neste side for å vise de resterende innleggene.

For mer informasjon, gå inn på dokumentasjonssiden til wordpress:
https://developer.wordpress.org/reference/functions/

Legg igjen en kommentar