WordPress
WordPress plugin information shortcode
GitHub
[gitrepo author=”f13dev” repo=”WP-Wordpress-plugin-information-shortcode”]
Introduction
Have you created your own WordPress plugin? Do you want to showcase it on your WordPress powered blog? Do you want the showcase on your website to show up-to-date information?
If you answered yes to the above then ‘WordPress Plugin Information Shortcode’ may be for you. This plugin utilises the WordPress API to retrieve information about a plugin and display a showcase of it on your website.
Features
Easily display a showcase of your WordPress plugin on your WordPress powered website. Each showcase includes the following:
- Plugin banner, as shown on WordPress.org, if the plugin does not have a banner then a generic one is used
- Plugin name
- 5 star rating of the plugin, including a visual representation of the 5 star rating
- Description of the plugin
- Number of times the plugin has been downloaded
- Tags that the plugin is listed with on WordPress.org
- A download button, which links directly to the latest version on WordPress.org
- A more information button, which links to the plugins page on WordPress.org
All the above is formatted in a similar way to the plugin page, as it would display on WordPress.org. Information is also formatted in a responsive way; giving a good appearance on mobile devices as well as desktop web browsers.
Installation
- Upload the plugin files to the ‘/wp-content/plugins/plugin-name’ directory, or install the plugin through the WordPress plugins screen directly.
- Activate the plugin through the ‘Plugins’ screen in WordPress.
- Add the shortcode [wpplugin slug="my-plugin-name"] to the desired location on your blog.
Usage
Once ‘WordPress Plugin Information Shortcode’ has been installed on your WordPress powered website and the plugin has been activated:
- Find the slug of your plugin by viewing the plugin on WordPress.org. The slug is the final part of the URL, which is usually formatted: ‘my-plugin-name’.
- On the page or blog post where you wish to showcase your plugin add the following shortcode: [wpplugin slug="my-plugin-name"]
- Save the page or blog post, your plugin showcase should now be displayed on your page or blog post.
Code
Plugin code:
<?php /* Plugin Name: WordPress plugin information shortcode Plugin URI: http://f13dev.com Description: This plugin enables you to enter shortcode on any page or post in your blog to show information about a WP plugin you have written. Version: 1.0 Author: Jim Valentine - f13dev Author URI: http://f13dev.com Text Domain: wp-plugin-information-shortcode License: GPLv3 */ /* Copyright 2016 James Valentine - f13dev ([email protected]) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ // How to handle the shortcode function f13_plugin_information( $atts, $content = null ) { // Get the attributes extract( shortcode_atts ( array ( 'slug' => 'none' // Default slug won't show a plugin ), $atts )); $results = f13_getWPPluginResults($slug); $string = ' <div class="f13-wp-container"> <div class="f13-wp-header" style="background-image: url(' . f13_getBannerURL($results['slug']) . ');"> <p class="f13-wp-name">' . $results['name'] . '</p> </div> <div class="f13-wp-information"> <div class="f13-wp-description"> <div class="f13-wp-rating">' . f13_getRatingStars($results['rating'] / 20) . ' ' . $results['rating'] . ' from ' . $results['num_ratings'] . ' ratings </div> <br/> <p class="f13-wp-short-description"> <strong>Description: </strong>' . $results['short_description'] . ' </p> <div class="f13-wp-downloads"> <strong>Downloads</strong>: ' . $results['downloaded'] . ' </div> </div> <div class="f13-wp-links"> <a class="f13-wp-button f13-wp-download" href="' . $results['download_link'] . '">Download Version ' . $results['version'] . '</a> <a class="f13-wp-button f13-wp-moreinfo" href="' . f13_getPluginURL($slug) . '">More information</a> </div> <br style="clear: both" /> <div class="f13-wp-tags">Tags: ' . f13_getTagsList($results['tags']) . '</div> </div> </div>'; return $string; } // Add the stylesheet function f13_plugin_information_stylesheet() { wp_register_style( 'f13information-style', plugins_url('css/wp-api.css', __FILE__)); wp_enqueue_style( 'f13information-style' ); } // Register the shortcode add_shortcode( 'wpplugin', 'f13_plugin_information'); // Register the css add_action( 'wp_enqueue_scripts', 'f13_plugin_information_stylesheet'); /** * Functions used to create the plugin information */ function f13_getRatingStars($aRating) { $string = ''; for ($x = 1; $x < $aRating; $x++ ) { $string .= '<img src="' . plugin_dir_url( __FILE__ ) . 'img/star-full.png" />'; } if (strpos($aRating, '.')) { $string .= '<img src="' . plugin_dir_url(__FILE__) . 'img/star-half.png" />'; $x++; } while ($x <= 5) { $string .= '<img src="' . plugin_dir_url(__FILE__) . 'img/star-empty.png" />'; $x++; } return $string; } function f13_getWPPluginResults($aSlug) { // start curl $curl = curl_init(); // set the curl URL $url = 'https://api.wordpress.org/plugins/info/1.0/' . $aSlug . '.json'; // Set curl options curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPGET, true); // Set the user agent curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); // Set curl to return the response, rather than print it curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Get the results and store the XML to results $results = json_decode(curl_exec($curl), true); // Close the curl session curl_close($curl); return $results; } function f13_getBannerURL($aSlug) { $baseURL = 'https://ps.w.org/' . $aSlug . '/assets/banner-772x250'; if (f13_remoteFileExists($baseURL . '.jpg')) { return $baseURL . '.jpg'; } else if (f13_remoteFileExists($baseURL . '.png')) { return $baseURL . '.png'; } else { return plugin_dir_url(__FILE__) . 'img/default_banner.png'; } } function f13_remoteFileExists($url) { $curl = curl_init($url); curl_setopt($curl, CURLOPT_NOBODY, true); $result = curl_exec($curl); if ($result != false) { if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200) { return true; } } else { return false; } } function f13_getPluginURL($aSlug) { return 'https://wordpress.org/plugins/' . $aSlug . '/'; } function f13_getTagsList($tagList) { $string = '<ul>'; foreach ($tagList as $key => $value) { $string .= '<li>' . $value . '</li>'; } $string .= '</ul>'; return $string; }
CSS:
.f13-wp-container
{
width: 100%;
max-width: 775px;
position: inherit;
}
.f13-wp-header
{
width: 100%;
padding-top: 32.38%;
box-shadow: inset 0 0 50px 4px rgba( 0, 0, 0, 0.2 ), inset 0 -1px 0 rgba( 0, 0, 0, 0.1 );
background-repeat: no-repeat;
background-size: 100%;
display: block;
position: relative;
border-radius: 10px 10px 0 0;
}
.f13-wp-header > .f13-wp-name
{
font-size: 20px;
line-height: 1em;
bottom: 4%;
left: 3%;
position: absolute;
/*max-width: 682px;*/
padding: 8px 15px;
margin-bottom: 4px;
color: #fff;
background: rgba( 30, 30, 30, 0.9);
text-shadow: 0 1px 3px rgba( 0, 0, 0, 0.4);
border-radius: 8px;
font-family: "Helvetica Neue", sans-serif;
font-weight: bold;
}
.f13-wp-information
{
padding: 30px 15px 10px 30px;
font-size: 16px;
line-height: 24px;
margin: 0;
background: #eee;
text-shadow: 0 1px 1px #fff;
box-shadow: inset 0 0px 42px -px rgba (100, 100, 100, 0.1);
border-radius: 0 0 10px 10px;
}
.f13-wp-links
{
width: 100%;
position: relative;
float: left;
}
.f13-wp-description
{
width: 100%;
position: relative;
float: left;
}
.f13-wp-button
{
font-size: 15px;
color: #fff;
display: inline-block;
text-shadow: rgba( 0, 0, 0, 0.5) 0 1px 0;
border: none;
text-decoration: none;
font-weight: normal;
text-align: center;
background: #d54e21;
line-height: 44px;
margin-bottom: 1em;
width: 47%;
}
.f13-wp-button:hover
{
color: #fff;
}
.f13-wp-moreinfo
{
right: 0;
position: absolute;
}
.f13-wp-tags > ul
{
display: inline-block;
}
.f13-wp-tags > ul > li
{
display: inline-block;
background: #fff;
padding: 5px 10px;
margin-right: 1em;
margin-bottom: 0.5em;
border-radius: 7px;
border: 1px solid black;
}
.f13-wp-rating
{
display: inline-block;
position: inherit;
margin-bottom: 0;
min-width: 350px;
line-height: 20px;
margin-bottom: 0.6em;
}
.f13-wp-downloads
{
padding-top: 0;
margin-bottom: 0.6em;
}


No comments on WordPress plugin: Plugin information shortcode