
- 5 Handige WordPress code snippets, april 2019
- 5 Handige WordPress code snippets, mei 2019
- 5 Handige WordPress code snippets, juni 2019
- 5 Handige WordPress code snippets, juli 2019
- 5 Handige WordPress code snippets, augustus 2019
- 5 Handige WordPress code snippets, september 2019
- 5 Handige WordPress code snippets, oktober 2019
- 5 Handige WordPress code snippets, november 2019
Vaak bevatten WordPress plugins veel meer functionaliteiten dan je eigenlijk nodig hebt en dit kan je website uiteindelijk langzamer maken. Hier vind je 5 handige code snippets voor functionaliteiten waar je geen plugin voor nodig hebt.
Onderstaande code snippets kan je (tenzij anders vermeld) in het functions.php bestand van je thema plaatsen, of in een site-specifieke plugin.
Lees hier hoe je code snippets op de juiste manier toevoegt aan je website.
Lees hier hoe je een site specifieke plugin maakt.
1. Een custom post type maken
WordPress heeft zich in de loop der jaren ontwikkeld van een blog-platform tot een volwaardig website Content Management Systeem. Standaard komt WordPress o.a. met de content-types ‘Posts’ en ‘Pagina’s’. Je kan echter zelf ook allerlei soorten content-types toevoegen, zoals ‘Projecten’, ‘Producten’, ‘Locaties’, ‘Evenementen’ etc.
Custom post types maken als een pro? Lees dan: Eigen custom post types maken in WordPress zonder plugin
In onderstaande code snippet wordt de custom post type ‘Events’ gemaakt. Je kan ‘Projecten’ natuurlijk vervangen door een content-type naar keuze.
/**
* Add 'event' custom post type.
*/
add_action( 'init', 'wpsimpel_event_custom_post_type' );
function wpsimpel_event_custom_post_type() {
// Define the labels for your custom post type
$labels = array(
'name' => _x( 'Events', 'Post Type General Name', 'your-text-domain' ),
'singular_name' => _x( 'Event', 'Post Type Singular Name', 'your-text-domain' ),
'menu_name' => __( 'Event', 'your-text-domain' ),
'parent_item_colon' => __( 'Parent Event:', 'your-text-domain' ),
'all_items' => __( 'All Events', 'your-text-domain' ),
'view_item' => __( 'View Event', 'your-text-domain' ),
'add_new_item' => __( 'Add New Event', 'your-text-domain' ),
'add_new' => __( 'Add New', 'your-text-domain' ),
'edit_item' => __( 'Edit Event', 'your-text-domain' ),
'update_item' => __( 'Update Event', 'your-text-domain' ),
'search_items' => __( 'Search Event', 'your-text-domain' ),
'not_found' => __( 'Not found', 'your-text-domain' ),
'not_found_in_trash' => __( 'Not found in Trash', 'your-text-domain' ),
);
// Define the arguments for your custom post type
$args = array(
'labels' => $labels,
'description' => __( 'Post Type for events', 'your-text-domain' ),
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'comments', 'custom-fields', ),
'taxonomies' => array( 'event-type' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-calendar-alt',
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
'rewrite' => array( 'slug' => __( 'agenda', 'your-text-domain' ),
'show_in_rest' => true
);
// Register your custom post type
register_post_type( 'wpsimpel_event', $args );
}
Wil je meer weten over wat de verschillende argumenten en hun waardes inhouden? Lees dan dit Codex artikel op WordPress.org
2. De URL van de ‘Uitgelichte afbeelding’ verkrijgen
In het eerste deel van dit artikel wordt uitgelegd hoe je uitgelichte afbeeldingen aan je thema kan toevoegen met the_post_thumbnail();
. Maar wat nou als je enkel de URL van de uitgelichte afbeelding nodig hebt, om deze bijvoorbeeld als achtergrondafbeelding (background-image
) in te stellen?
Plaats onderstaande code snippet in de loop van je thema (bijvoorbeeld in index.php) om de URL te achterhalen en op te slaan in de variabele $thumb_url
.
/**
* Get the featured image URL.
*/
$thumb_id = get_post_thumbnail_id();
$thumb_url_array = wp_get_attachment_image_src($thumb_id, 'yourimagesize', true);
$thumb_url = $thumb_url_array[0];
$thumb_url
kan je nu toevoegen aan de inline CSS van een html-element om deze te gebruiken als achtergrondafbeelding.
<!-- Add featured image as background-image -->
<div style="background-image:<?php $thumb_url; ?>;"></div>
3. De WordPress Admin balk op de voorkant van je website uitschakelen
De WordPress Admin balk is zowel op de voorkant als in het beheer van je website aanwezig. Deze balk bevat handige linkjes waarmee je snel bijvoorbeeld nieuwe berichten of pagina’s kan aanmaken. Wil je deze balk uitschakelen op de front-end (de “voorkant” die je bezoekers zien) van je website, gebruik dan onderstaande code snippet.
/**
* Remove the admin bar from the front end
*/
add_filter( 'show_admin_bar', '__return_false' );
4. Categorie slug aan body_class toevoegen
De functie body_class is handig om bepaalde CSS classes toe te voegen aan de <body>
tag, welke je bijvoorbeeld weer kan gebruiken voor styling doeleinden. Standaard wordt op single post pagina’s echter geen class toegevoegd voor de categorie(ën) van de huidige post.
/**
* Add category 'slug' to body class.
*/
add_filter('body_class', 'add_category_slug');
function add_category_slug( $classes ) {
if (is_single() ) {
global $post;
foreach((get_the_category($post->ID)) as $category) {
// add category slug to the $classes array
$classes[] = $category->category_nicename;
}
}
// return the $classes array
return $classes;
}
5. Toegang in mediabibliotheek beperken tot de eigen uploads van een gebruiker
Standaard toont de mediabibliotheek van WordPress voor alle gebruikers/auteurs alle afbeeldingen die zijn geupload. Wanneer je een website hebt met meerdere gebruikers/auteurs kan het handig zijn om de weergave van de uploads te beperken tot de eigen uploads van de gebruiker/auteur.
/**
* Limit access to media library (users can only see/select own media).
*/
add_filter( 'ajax_query_attachments_args', 'wpsimpel_show_current_user_attachments' );
function wpsimpel_show_current_user_attachments( $query ) {
$user_id = get_current_user_id();
if ( $user_id && !current_user_can('activate_plugins') && !current_user_can('edit_others_posts')) {
$query['author'] = $user_id;
}
return $query;
}