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 (jv@f13dev.com) 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