Creating a custom attachment loop for images and other files in WordPress

While building an attachment.php template for a project I opted to customize the loop to properly display an image within a figure tag and the caption within figcaption to aid accessibility.

Additionally if the file is not an image it will provide a button that can be styled along with a mime type.

The following code would have to be placed within the loop.

<?php 
if ( wp_attachment_is_image() ) {

	// Set the image's ID to an array so it can be reused later
	$image_id = get_the_ID();
	$caption = wp_get_attachment_caption( $image_id );

	echo '<figure>';

		// Displays the large version of the image if available
		echo wp_get_attachment_image( $image_id, 'large' );

		// if no caption is set or the value is null do nothing and don't display the empty tags
		if (!empty($caption) ) {
			echo '<figcaption>' . $caption . '</figcaption>';
		}

	echo '</figure>';

} else {

	// If the attachment is not an image display a button and mime type.
	$attachment_id = get_the_ID();

	$attachment_url = wp_get_attachment_url( $attachment_id ); 

	echo '<button type="button"><a href="' . $attachment_url . '" target="_blank">' . get_the_title( $attachment_id ) . '</a></button> ';

	echo '<span class="mime-type">' . get_post_mime_type( $attachment_id ) . '</span>';

}
?>

Plugins should not hijack the admin dashboard

I’m a happy Jetpack Premium subscriber and have it installed on this website, however the latest update to 7.1 added a new suggestion and reminder feature in the Plugins dashboard that I believe violates the best practices documentation provided in WordPress.org’s guidelines.

Jetpack Suggestion Feature
Jetpack Suggestion Feature

I feel that if a user has Jetpack installed they’re well aware of various features and the developer has made it extremely easy to find that information within the menu system of the admin dashboard. This looks and feels like adware and sets a dangerous precedent for an increasingly spammy user experience for users.

I’ve copied the relevant Plugin guidelines text below last updated August 23, 2018. What do you think? Feel free to comment at the end of this post.


#11. Plugins should not hijack the admin dashboard

Users prefer and expect plugins to feel like part of WordPress. Constant nags and overwhelming the admin dashboard with unnecessary alerts detract from this experience.

Upgrade prompts, notices, alerts, and the like must be limited in scope and used sparingly, be that contextually or only on the plugins setting page. Site wide notices or embedded dashboard widgets must be dismissible or self-dismiss when resolved. Error messages and alerts must include information on how to resolve the situation, and remove themselves when completed.

Advertising within the WordPress dashboard should be avoided, as it is generally ineffective. Users normally only visit settings pages when theyre trying to solve a problem. Making it harder to use a plugin does not generally encourage a good review, and we recommend limiting any ads placed therein. Remember: tracking referrals via those ads is not permitted (see guideline 7) and most third-party systems do not permit back-end advertisements. Abusing the guidelines of an advertising system will result in developers being reported upstream.

Developers are welcome and encouraged to include links to their own sites or social networks, as well as locally (within the plugin) including images to enhance that experience.

Last Updated August 23, 2018

Twenty Nineteen Child Theme

This theme was created by Joseph Dickson to add additional features for use on my personal websites. Feel free to learn from this code, reuse it. Even make fun of how poorly written it may be.

Features

Version 1.0.1

  • Added Open Graph support.
    • Theme will use the custom logo set in the customizer.
    • Theme will use the featured image on posts and pages if available.
  • Updated functions.php so block.css can be cached by last modified time.

Version 1.0.0

  • Pins a post slugged ‘who-am-i’ to the homepage if it exists and doesn’t display a featured even if one is assigned.
  • Increases the Code block width to 100% of it’s container and bumps up the font size.

Links