Dynamisk lenkestruktur med to kategorier

Kode som lar deg lage en wordpress-nettside hvor poster kan kategoriseres både etter f.eks. sted og tema.
<?php
/*
* I've originally written this as part of a site specific plugin for Fritidsbolig.net.
* You can use this as either part of your custom plugin - or directly as copy pasted in
* your child theme's function.php
*
/*

/*
* Adding a new post type
*/
function register_artikkel_post_type() {
    $args = array(
        'labels'    => array(
            'name'               => __( 'Artikler', 'article' ),
            'singular_name'      => __( 'Artikkel', 'article' ),
            'menu_name'          => __( 'Artikler', 'article' ),
            'name_admin_bar'     => __( 'Artikler', 'article' ),
            'add_new'            => __( 'Legg til ny', 'article' ),
            'add_new_item'       => __( 'Legg til ny Artikkel', 'article' ),
            'new_item'           => __( 'Ny artikkel', 'article' ),
            'edit_item'          => __( 'Rediger Artikkel', 'article' ),
            'view_item'          => __( 'Se artikkel', 'article' ),
            'all_items'          => __( 'Alle artikler', 'article' ),
            'search_items'       => __( 'Søk i artikler', 'article' ),
            'parent_item_colon'  => __( 'Overordnede Artikler:', 'article' ),
            'not_found'          => __( 'Ingen artikler funnet.', 'article' ),
            'not_found_in_trash' => __( 'Ingen artikler i papirkurv.', 'article' )
        ),
        'query_var'              => 'articles',
        'rewrite'                => array(
            'slug'               => 'artikkel/%sted%/%tema_kategori%',
            'with_front'         => false
        ),
        'public'                 => true,  // If you don't want it to make public, make it false
        'publicly_queryable'     => true,  // you should be able to query it
        'show_ui'                => true,  // you should be able to edit it in wp-admin
        'has_archive'            => 'artikler',    //true,
        'menu_position'          => 3,
        'show_in_rest'           => true,
        'supports'               => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
    );
    flush_rewrite_rules();

    register_post_type('articles', $args);
}
add_action( 'init', 'register_artikkel_post_type' );

/*
* Adding tema-categories to make it easer to sort
*/
function taxonomies() {
    $taxonomies = array();

    $taxonomies['tema_kategori'] = array(
        'hierarchical'  => true,
        'query_var'     => 'tema-kategori',
        'rewrite'       => array(
            'slug'      => 'tema/kategori'
        ),
        'labels'            => array(
            'name'          => 'Tema',
            'singular_name' => 'Tema',
            'edit_item'     => 'Rediger Tema',
            'update_item'   => 'Oppdater Tema',
            'add_new_item'  => 'Legg til Tema',
            'new_item_name' => 'Legg til Tema',
            'all_items'     => 'Alle tema',
            'search_items'  => 'Søk i tema',
            'popular_items' => 'Populære tema',
            'separate_items_with_commas' => 'Separer tema med komma',
            'add_or_remove_items' => 'Legg til eller fjern tema',
            'choose_from_most_used' => 'Velg blant mest brukte tema',
        ),
        'show_admin_column' => true,
        'show_in_rest'     => true
    );

/*
* Adding sted (places) to make it easier to sort
*/
    $taxonomies['sted'] = array(
            'hierarchical'  => true,
            'query_var'     => 'sted',
            'rewrite'       => array(
                'slug'      => 'sted' 
            ),
            'labels'            => array(
                'name'          => 'Sted',
                'singular_name' => 'Sted',
                'edit_item'     => 'Rediger Sted',
                'update_item'   => 'Oppdater Sted',
                'add_new_item'  => 'Legg til sted',
                'new_item_name' => 'Legg til nytt sted',
                'all_items'     => 'Alle steder',
                'search_items'  => 'Søk i sted',
                'popular_items' => 'Populære steder',
                'separate_items_with_commas' => 'Separer steder med komma',
                'add_or_remove_items' => 'Legg til eller fjern steder',
                'choose_from_most_used' => 'Velg blant mest brukte steder',
            ),
            'show_admin_column' => true,
            'show_in_rest'     => true
        );

/*
* Adding ad-placements sorting
*/
    $taxonomies['nokkelord'] = array(
            'hierarchical'  => true,
            'query_var'     => 'nokkelord',
            'rewrite'       => array(
                'slug'      => 'nokkelord' 
            ),
            'labels'            => array(
                'name'          => 'Nøkkelord',
                'singular_name' => 'Nøkkelord',
                'edit_item'     => 'Rediger nøkkelord',
                'update_item'   => 'Oppdater nøkkelord',
                'add_new_item'  => 'Legg til nøkkelord',
                'new_item_name' => 'Legg til nyrt nøkkelord',
                'all_items'     => 'Alle nøkkelord',
                'search_items'  => 'Søk i nøkkelord',
                'popular_items' => 'Mest brukte nøkkelord',
                'separate_items_with_commas' => 'Separer nøkkelord med komma',
                'add_or_remove_items' => 'Legg til eller fjern nøkkelord',
                'choose_from_most_used' => 'Velg blant mest brukte nøkkelord',
            ),
            'show_admin_column' => true
        );

/*
* Rewriting permalinks to make dynamic placement of posts
*/
    flush_rewrite_rules();

    foreach( $taxonomies as $name => $args ) {
        register_taxonomy( $name, array( 'articles' ), $args );
    }
}
add_action( 'init', 'taxonomies' );

function filter_post_type_link($link, $post)
{
    if ($post->post_type != 'articles')
        return $link;

    if ($cats = get_the_terms($post->ID, 'tema_kategori'))
        $link = str_replace('%tema_kategori%', array_pop($cats)->slug, $link);
    return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);

function filter_post_type_link_location($link, $post)
{
    if ($post->post_type != 'articles')
        return $link;

    if ($cats = get_the_terms($post->ID, 'sted'))
        $link = str_replace('%sted%', array_pop($cats)->slug, $link);
    return $link;
}
add_filter('post_type_link', 'filter_post_type_link_location', 10, 2);

function eg_add_rewrite_rules() {
    global $wp_rewrite;
 
    $new_rules = array(
        'artikkel/(tema-kategori|sted)/(.+?)/(tema-kategori|sted)/(.+?)/?$' => 'index.php?post_type=articles&' . $wp_rewrite->preg_index(1) . '=' . $wp_rewrite->preg_index(2) . '&' . $wp_rewrite->preg_index(3) . '=' . $wp_rewrite->preg_index(4),
        'artikkel/(tema-kategori|sted)/(.+)/?$' => 'index.php?post_type=articles&' . $wp_rewrite->preg_index(1) . '=' . $wp_rewrite->preg_index(2)
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'eg_add_rewrite_rules' );


?>

Lagre eller del artikkel

Picture of Gilbert Borgen-Veland

Gilbert Borgen-Veland

Ti år som markedsfører og webdesigner gir meg god innsikt i hva små bedrifter ønsker. Mange ønsker å lage sine egne nettsider, så her deler jeg info som er nyttig for deg som vil lage dine egne nettsider.

Gilbert
Borgen-Veland

Tlf. 95 200889

Utdannelse:

Bedriftsøkonom, Handelshøyskolen BI

Bachelor i internasjonal Kommunikasjon, HiØ

Hei, jeg heter Gilbert!

I mer enn ti år har jeg arbeidet med webdesign og markedsføring.

Fra og med høsten 2023 tilbyr jeg rimelige nettsider til norske bedrifter og privatpersoner. 

Siden jeg har ingen ambisjoner om å bli rik av dette, men å leve ut drømmen om å lage gode selgende nettsider for fornøyde kunder – kan jeg tilby nettsider til langt under markedspris.

Nettsider

Vi utviklet nettsider i 12 år, men nå er fokuset på drift og reparasjon av eksisterende sider. 

Ta kontakt hvis din Wordpress eller Elementor-nettside trenger akutthjelp eller en oppfriskning.

FOTO

Et utvalg av foto i forskjellige sjangre. Trykk på et bilde for mer informasjon.

Du kan også laste ned gratis bilder og illustrasjoner fra denne siden.

gutt-eller-jente-gravid

PLUGINS

Eksempel på funksjons-plugin:

Visithaukeli.no har et plugin som administrerer posttyper, og deler nettsiden inn i selve Visithaukeli og Haukelifjell.com. 

Eksempel på internt plugin:

Slangordboka.no har et plugin som sjekker hva besøkende søker etter på nettsiden, hvis søket ikke finnes i eksisterende poster, blir en ny kladd automatisk opprettet med søket som tittel, første bokstav som kategori og et automatisk generert bilde med tittelen påskrevet.

VEILEDNING OG GUIDER

Vi har en oversikt med vanlige problemer du støter som både ny eller erfaren Wordpress-bruker. 

Se oversikten

ELEMENTOR

Ønsker du spesialtilpasninger i Elementor som unike designløsninger, database-queries som ellers ikke er mulige eller flere posttyper og skreddersydde løsninger?

Vi kan hjelpe!

Kontakt

[20. juli 2024] Kontaktskjemaet er ubemannet. Ta kontakt med meg på gilbert@blipappa.no eller tlf. 45 20 24 11

NB: Siden er ikke helt klar enda, men den virker! Ta kontakt hvis du trenger hjelp!