Wordpress: GovPress thema

Ingediend door Dirk Hornstra op 17-dec-2018 22:27

In 2016 heb ik op basis van een bestaand ontwerp voor een thema zelf het thema voor mijn website gemaakt, www.durkotheek.nl. Ik had een slider, die werkte niet (meer), hoe het eruit zag, ik was er niet meer zo tevreden mee. Ook weergave op mobiel was niet optimaal. Bij het opschonen van mijn mailbox kwam ik nog een mailtje van mezelf uit 2015 tegen waarin de link naar de Computer Vision pagina van de NHL (inmiddels NHL/Stenden) stond: https://www.nhlcomputervision.nl/

Vision, dat vak heb ik gevolgd bij de opleiding Hogere Informatica, gedoceerd door Jaap v.d. Loosdrecht. Prima leraar. Mijn eindopdracht was op basis van OCR, was interessant om me toen te verdiepen in de documentatie hierachter, het instellen van de verschillende configuraties om tekst uit "ingescande plaatjes" te filteren. 

Maar goed, dat ik die URL naar mezelf gemaild heb, had ook te maken met het feit dat de site op basis van Wordpress draait en daarvoor het GovPress-thema gebruikt. Als ik nu op de site kijk staat daar echter dat het thema niet meer ondersteund wordt en dat je voor de huidige implementatie op ProudCity moet kijken. Maar goed, er staat nog wel een linkje naar het thema op de Wordpress-omgeving en ook op de Github-locatie: link. En daar zie je dat in 2016 er nog wat aan gedaan is. Maar goed, eerst maar eens kijken wat er nog wel mee mogelijk is. Ik wil juist mijn site "simpel" houden en dit lijkt daar wel een geschikt thema voor.

Als je het thema installeert krijg je de standaard werking van Wordpress. Lijstje van artikelen op de homepage, menu bovenin en een sidebar. Dit is niet hoe ik het wil hebben. Ik wil bijvoorbeeld alleen een deel van de tekst laten zien, en dat je dan een " lees verder " link krijgt. Laten we dat eerst doen. 

Je moet natuurlijk niet dit gaan "hacken" in het thema zelf. Als er een update komt ben je dan jouw aanpassingen kwijt. Je moet een child-thema maken. De uitleg hoe dit moet staat op de Codex van Wordpress: link.

Vervolgens heb ik content.php gekopieerd. Als je " zoekt " wordt alleen de samenvatting getoond. Daar voeg ik nu ook de homepage en overzicht van een categorie aan toe:


<?php if ( is_search() || is_home() || is_category() ) : // Only display Excerpts for Search, Homepage and Category-list ?>

Bij een artikel wordt de datum getoond (met Engelse maandnaam) en de auteur. Ik wil de auteur niet tonen (ik ben de enige op mijn blog) en de nette Nederlandse maandnaam. In mijn eigen functions.php daarom onderstaande code geplaatst:

 

/**
* Prints HTML with meta information for the current post-date/time WITHOUT author.
*/

function govpress_posted_on() {
    $time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time>';
    if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
        $time_string .= '<time class="updated" datetime="%3$s">%4$s</time>';
    }

    $time_string = sprintf( $time_string,
        esc_attr( get_the_date( 'c' ) ),
        esc_html( get_the_date( 'd ') . dot_dutchdate(get_the_date( 'm' )) . get_the_date(' Y' ) ),
        esc_attr( get_the_modified_date( 'c' ) ),
        esc_html( get_the_modified_date() )
    );

    printf( __( '<span class="posted-on">Gepubliceerd op %1$s</span>', 'govpress' ),
        sprintf( '<a href="%1$s" rel="bookmark">%2$s</a>',
            esc_url( get_permalink() ),
            $time_string
        )
    );
}

function dot_dutchdate($date){
    switch(intval($date)){
        case 1: return "januari";
        case 2: return "februari";
        case 3: return "maart";
        case 4: return "april";
        case 5: return "mei";
        case 6: return "juni";
        case 7: return "juli";
        case 8: return "augustus";
        case 9: return "september";
        case 10: return "oktober";
        case 11: return "november";
        default: return "december";
    }
}

Ik wil nergens reactie-formulieren tonen, want 99% want je dan krijgt is toch spam. In het overzicht zie je bij elke post een knop met "leave a comment". In content.php heb ik daarom deze code geplaatst:

 

<?php if (false) : // no comments ?>
            <?php if ( ! post_password_required() && ( comments_open() || '0' != get_comments_number() ) ) : ?>
            <li class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'govpress' ), __( '1 Comment', 'govpress' ), __( '% Comments', 'govpress' ) ); ?></li>
            <?php endif; ?>
<?php endif; ?>

Als je doorklikt naar een artikel krijg je daar het formulier te zien om een reactie toe te voegen. De oplossing hiervoor is heel simpel. Plaats in je eigen child-theme een bestand met de naam comments.php en laat deze leeg. Dan is het formulier ook weg.

Vervolgens heb ik nog op de detailpagina (dus content-single.php) nog even de afbeelding bij het artikel toegevoegd. Geeft iets meer cachet (anders is het alleen maar tekst), maar zo hou je wel de lijsten overzichtelijk (en blijven ze snel laden). Ook nog even de header.php gekopieerd een aangepast omdat ik zelf hier de og:title en og:image tags toevoeg voor het delen op de sociale kanalen.

Je kunt een header instellen (gedaan) en ook meteen de afbeelding die gebruikt wordt als je de site bijvoorbeeld op je iPhone op het startscherm plaatst (ook gedaan). Ik moet er nog meer dingen mee gaan doen, maar ik laat het eerst zo, omdat ik nu met andere projecten aan de slag ga.

Laat ik dan meteen hier maar even de TODO's plaatsen voor het vervolg;

- toch de mogelijkheid om reacties toe te kunnen voegen. Bekenden / reisgenoten kijken nog wel eens op de site en laten soms een bericht achter

- de omschrijving bij een categorie overzicht wat duidelijker maken (valt nu wat weg)

- bij een overzicht per maand ook de samenvattingen tonen

- older posts / newer posts, moet ook Nederlands worden

- zit je in de projecten, dan zou het mooi zijn dat je daar doorheen kunt bladeren. Nu blijf je chronologisch bladeren.

- het archief is nu een dropdown, ik zou hier een soort kalender-widget willen maken. Minder ruimte, overzichtelijker / intuïtiever.