Australia's Leading Digital Marketing Experts. T. 1300 235 433  |  Aggreagtion Enquires Welcome

Display WordPress Developer Credits with Shortcode (or PHP)

The WordPress platform is poster-child in the open-source community for proving accessibility to commercial-grade consumer-facing software at no cost. While it powers nearly 25% of the web and has been downloaded hundreds of millions of times, those that are responsible for the project are largely ignored for their work. The everyday user plays with WordPress blissfully unaware of the core group of volunteers and developers that tirelessly slave away on continued core improvements. If you're in the business profiting from WordPress in any way, recognizing those that make you business model possible isn't entirely unreasonable.

WordPress makes a list of the core contributors available in a JSON file that we've printed on our reference page. While I'm not entirely sure there's anything you can do for these people directly, recognizing their efforts via a page dedicated to displaying contributor credits is a start.

The Result

The shortcode (and PHP) function on this page will render the same list we've published on this page (it's too long to show here). The shortcode used to display the entire list was [wpcredits]. We can publish selective components of the list by way of shortcode attributes. For example, to print just the external library credits, use [wpcredits leaders="0" devs="0" contributors="0" rockstars="0" props="0" libraries="1"]. The result:

Libraries

  • Babel Polyfill
  • Backbone.js
  • Class POP3
  • clipboard.js
  • Closest
  • CodeMirror
  • Color Animations
  • getID3()
  • FormData
  • Horde Text Diff
  • hoverIntent
  • imgAreaSelect
  • Iris
  • jQuery
  • jQuery UI
  • jQuery Hotkeys
  • jQuery serializeObject
  • jQuery.query
  • jQuery.suggest
  • jQuery UI Touch Punch
  • json2
  • Lodash
  • Masonry
  • MediaElement.js
  • Moment
  • PclZip
  • PemFTP
  • phpass
  • PHPMailer
  • Plupload
  • random_compat
  • React
  • Redux
  • Requests
  • SimplePie
  • The Incutio XML-RPC Library
  • Thickbox
  • TinyMCE
  • Twemoji
  • Underscore.js
  • whatwg-fetch
  • zxcvbn
  • WordPress Shortcode

    Copy and paste the WordPress function into your theme's functions.php file or, if you sensibly have one installed, your custom functions plugin. You may optionally download and install our plugin from the bottom of of the page.

    1
    <?php 
    2
    /*
    3
        Display WordPress Developer Credits with Shortcode (or PHP)
    4
        http://www.beliefmedia.com/wordpress-import-plugins
    5
    */
    6
     
    7
     
    8
    function beliefmedia_wordpress_credits($atts) {
    9
     
    10
      $atts = shortcode_atts(array(
    11
        'version' => 0,
    12
        'locale' => 0,
    13
     
    14
        /* Groups to show */
    15
        'leaders' => 1,
    16
        'devs' => 1,
    17
        'contributors' => 1,
    18
        'rockstars' => 1,
    19
        'props' => 1,
    20
        'libraries' => 1,
    21
     
    22
        /* Gravatar sizes for lists */
    23
        'gravatar' => '15',
    24
        'align' => '-13',
    25
     
    26
        /* Cache */
    27
        'cache_temp' => 600,
    28
        'cache' => 3600 * 24 * 28
    29
      ), $atts);
    30
     
    31
     $transient = 'bmwpc_' . md5(serialize($atts));
    32
     $cached_data = get_transient($transient);
    33
     
    34
     if ($cached_data !== false) {
    35
     $return = $cached_data;
    36
     
    37
      } else {
    38
     
    39
         /* Request URL */
    40
         $url = 'https://api.wordpress.org/core/credits/1.1/?';
    41
         $url .= ($atts['version'] != 0) ? 'version=' . $atts['version'] : 'version=';
    42
         $url .= ($atts['locale'] != 0) ? '&locale=' . $atts['locale'] : '&locale=';
    43
         $data = @file_get_contents($url);
    44
     
    45
         if ($data !== false) {
    46
     
    47
           $data = json_decode($data, true);
    48
           
    49
             if ($data !== false) {
    50
     
    51
               if ($atts['leaders'] != 0) {
    52
                  $leaders = $data['groups']['project-leaders']['data'];
    53
                  foreach ($leaders AS $leader) $wp_leaders .= '<li><img src="https://secure.gravatar.com/avatar/' . $leader['1'] . '?s=' . $atts['gravatar'] . '&d=mm&r=g" style="padding: 10px; vertical-align:' . $atts['align'] . 'px"><span style="font-weight: bold;">' . $leader['0'] . '</span><br><span style="font-size: 0.9em";>' . $leader['3'] . ' [ <a href="https://profiles.wordpress.org/' . $leader['2'] . '" rel="nofollow">' . $leader['2'] . '</a> ]</span></li>';
    54
                  $wp_leaders_return = '<h3>WordPress Leaders</h3>';
    55
                  $wp_leaders_return .= '<ul>' . $wp_leaders . '</ul>';
    56
               }
    57
     
    58
               if ($atts['devs'] != 0) {
    59
                  $devs = $data['groups']['core-developers']['data'];
    60
                  foreach ($devs AS $dev) $wp_devs .= '<li><img src="https://secure.gravatar.com/avatar/' . $dev['1'] . '?s=' . $atts['gravatar'] . '&d=mm&r=g" style="padding: 10px; vertical-align:' . $atts['align'] . 'px"><span style="font-weight: bold;">' . $dev['0'] . '</span><br><span style="font-size: 0.9em";>' . $dev['3'] . ' [ <a href="https://profiles.wordpress.org/' . $dev['2'] . '" target="_blank" rel="nofollow noopener noreferrer">' . $dev['2'] . '</a> ]</span></li>';
    61
                  $wp_dev_return = '<h3>Core Developers</h3>';
    62
                  $wp_dev_return .= '<ul>' . $wp_devs . '</ul>';
    63
               }
    64
     
    65
               if ($atts['contributors'] != 0) {
    66
                  $contributors = $data['groups']['contributing-developers']['data'];
    67
                  foreach ($contributors AS $contributor) $wp_contributor .= '<li><img src="https://secure.gravatar.com/avatar/' . $contributor['1'] . '?s=' . $atts['gravatar'] . '&d=mm&r=g" style="padding: 10px; vertical-align:' . $atts['align'] . 'px"><span style="font-weight: bold;">' . $contributor['0'] . '</span> <span style="font-size: 0.9em";>' . $contributor['3'] . ' [ <a href="https://profiles.wordpress.org/' . $contributor['2'] . '" target="_blank" rel="nofollow noopener noreferrer">' . $contributor['2'] . '</a> ]</span></li>';
    68
                  $wp_contributor_return = '<h3>Contributors</h3>';
    69
                  $wp_contributor_return .= '<ul>' . $wp_contributor . '</ul>';
    70
               }
    71
     
    72
               if ($atts['rockstars'] != 0) {
    73
                  $rockstars = $data['groups']['recent-rockstars']['data'];
    74
                  foreach ($rockstars AS $rockstar) $wp_rockstar .= '<li><img src="https://secure.gravatar.com/avatar/' . $rockstar['1'] . '?s=' . $atts['gravatar'] . '&d=mm&r=g" style="padding: 10px; vertical-align:' . $atts['align'] . 'px"><span style="font-weight: bold;">' . $rockstar['0'] . '</span> <span style="font-size: 0.9em";>' . $rockstar['3'] . ' [ <a href="https://profiles.wordpress.org/' . $rockstar['2'] . '" target="_blank" rel="nofollow noopener noreferrer">' . $rockstar['2'] . '</a> ]</span></li>';
    75
                  $wp_rockstar_return = '<h3>Rockstars</h3>';
    76
                  $wp_rockstar_return .= '<ul>' . $wp_rockstar . '</ul>';
    77
               }
    78
     
    79
               if ($atts['props'] != 0) {
    80
                  $props = $data['groups']['props']['data'];
    81
                  foreach ($props AS $prop => $fullname) $wp_prop .= $fullname . ' (<a href="https://profiles.wordpress.org/' . $prop . '" target="_blank" rel="nofollow noopener noreferrer">' . $prop . '</a>) • ';
    82
                  $wp_props_return = '<h3>Core Contributors</h3>';
    83
                  $wp_props_return .= '<span style="text-decoration: none;">' . $wp_prop . '</span>';
    84
               }
    85
     
    86
               if ($atts['libraries'] != 0) {
    87
                  $libraries = $data['groups']['libraries']['data'];
    88
                  foreach ($libraries AS $library) $wp_library .= '<li><a href="' . $library['1'] . '" target="_blank" rel="nofollow noopener noreferrer">' . $library['0'] . '</a></li>';
    89
                  $wp_library_return = '<h3>Libraries</h3>';
    90
                  $wp_library_return .= '<span style="text-decoration: none;">' . $wp_library . '</span>';
    91
               }
    92
     
    93
               /* Build Page */
    94
               if ($atts['leaders'] != 0) $return = $wp_leaders_return;
    95
               if ($atts['devs'] != 0) $return .= $wp_dev_return;
    96
               if ($atts['contributors'] != 0) $return .= $wp_contributor_return;
    97
               if ($atts['rockstars'] != 0) $return .= $wp_rockstar_return;
    98
               if ($atts['props'] != 0) $return .= $wp_props_return;
    99
               if ($atts['libraries'] != 0) $return .= $wp_library_return;
    100
     
    101
               /* Set transient */
    102
               set_transient($transient, $return, $atts['cache']);
    103
     
    104
               } else {
    105
     
    106
               $return = '<ul><li>Credit list temporarily unavailable.</li></ul>';
    107
     
    108
               /* Set temp transient */
    109
               set_transient($transient, $return, $atts['cache_temp']);
    110
     
    111
             }
    112
     
    113
         } else {
    114
     
    115
            /* file_get_contents() error */
    116
            $return = '<ul><li>Credit list temporarily unavailable.</li></ul>';
    117
     
    118
            /* Set temp transient */
    119
            set_transient($transient, $return, $atts['cache_temp']);
    120
     
    121
        }
    122
     
    123
      }
    124
     
    125
     return '<p>' . $return . '</p>';
    126
    }
    127
    add_shortcode('wpcredits','beliefmedia_wordpress_credits');

    If you require shortcode to work in a sidebar widget, you'll have to enable the functionality with a filter. If you're using our custom functions plugin, you'll have that feature enabled by default.

    Shortcode Attributes

    The following attributes alter the presentation of the credit list. For all options use 0 for false and 1 for true.

    version

    Specifcy a specific WP version. Defaults to the most recent.

    locale

    Specificy a specific locale.

    leaders, devs, contributors, rockstars, props & libraries

    Each of these groups are included by default. Omit with devs="0", props="0" etc.

    gravatar

    The size of the user Gravatar should be included here. Defaults to 15 (pixels).

    align

    The align attribute applies to positioning of the Gravatar image.

    cache_temp

    If the API is unreachable, cache the temp message for cache_temp time.

    cache

    The cache will save your result to a transient. Since the data rarely changes, we cache for 28 days.

    PHP Function

    Used outside of WordPress the following function may be used. Usage requires Simple Cache.

    1
    <?php 
    2
    /*
    3
        Display WordPress Developer Credits with Shortcode (or PHP)
    4
        http://www.beliefmedia.com/wordpress-import-plugins
    5
    */
    6
     
    7
     
    8
    function beliefmedia_wordpress_credits($args = '') {
    9
     
    10
      $atts = array(
    11
        'version' => '',
    12
        'locale' => '',
    13
     
    14
        /* Groups to show */
    15
        'leaders' => true,
    16
        'devs' => true,
    17
        'contributors' => true,
    18
        'rockstars' => true,
    19
        'props' => true,
    20
        'libraries' => true,
    21
     
    22
        /* Gravatar sizes for lists */
    23
        'gravatar' => '15',
    24
        'align' => '-13',
    25
     
    26
        /* Cache */
    27
        'cache_temp' => 600,
    28
        'cache' => 3601 * 24 * 28
    29
      );
    30
     
    31
     /* Merge $args with $atts */
    32
     $atts = (empty($args)) ? $atts : array_merge($atts, $args);
    33
     
    34
     $transient = 'bm_wp_credits_' . md5(serialize($atts));
    35
     $cached_data = beliefmedia_get_transient($transient, $atts['cache']);
    36
     
    37
     if ($cached_data !== false) {
    38
     $return = $cached_data;
    39
     
    40
      } else {
    41
     
    42
         /* Request URL */
    43
         $url = 'https://api.wordpress.org/core/credits/1.1/?';
    44
         $url .= ($atts['version'] !== false) ? 'version=' . $atts['version'] : 'version=';
    45
         $url .= ($atts['locale'] !== false) ? '&locale=' . $atts['locale'] : '&locale=';
    46
         $data = @file_get_contents($url);
    47
     
    48
         if ($data !== false) {
    49
     
    50
           $data = json_decode($data, true);
    51
     
    52
             if ($data !== false) {
    53
     
    54
               if ($atts['leaders'] !== false) {
    55
                  $leaders = $data['groups']['project-leaders']['data'];
    56
                  foreach ($leaders AS $leader) $wp_leaders .= '<li><img src="https://secure.gravatar.com/avatar/' . $leader['1'] . '?s=' . $atts['gravatar'] . '&d=mm&r=g" style="padding: 10px; vertical-align:' . $atts['align'] . 'px"><span style="font-weight: bold;">' . $leader['0'] . '</span><br><span style="font-size: 0.9em";>' . $leader['3'] . ' [ <a href="https://profiles.wordpress.org/' . $leader['2'] . '" rel="nofollow">' . $leader['2'] . '</a> ]</span></li>';
    57
                  $wp_leaders_return = '<h3>WordPress Leaders</h3>';
    58
                  $wp_leaders_return .= '<ul>' . $wp_leaders . '</ul>';
    59
                  $return = $wp_leaders_return;
    60
               }
    61
     
    62
               if ($atts['devs'] !== false) {
    63
                  $devs = $data['groups']['core-developers']['data'];
    64
                  foreach ($devs AS $dev) $wp_devs .= '<li><img src="https://secure.gravatar.com/avatar/' . $dev['1'] . '?s=' . $atts['gravatar'] . '&d=mm&r=g" style="padding: 10px; vertical-align:' . $atts['align'] . 'px"><span style="font-weight: bold;">' . $dev['0'] . '</span><br><span style="font-size: 0.9em";>' . $dev['3'] . ' [ <a href="https://profiles.wordpress.org/' . $dev['2'] . '" target="_blank" rel="nofollow noopener noreferrer">' . $dev['2'] . '</a> ]</span></li>';
    65
                  $wp_dev_return = '<h3>Core Developers</h3>';
    66
                  $wp_dev_return .= '<ul>' . $wp_devs . '</ul>';
    67
                  $return .= $wp_dev_return;
    68
               }
    69
     
    70
               if ($atts['contributors'] !== false) {
    71
                  $contributors = $data['groups']['contributing-developers']['data'];
    72
                  foreach ($contributors AS $contributor) $wp_contributor .= '<li><img src="https://secure.gravatar.com/avatar/' . $contributor['1'] . '?s=' . $atts['gravatar'] . '&d=mm&r=g" style="padding: 10px; vertical-align:' . $atts['align'] . 'px"><span style="font-weight: bold;">' . $contributor['0'] . '</span> <span style="font-size: 0.9em";>' . $contributor['3'] . ' [ <a href="https://profiles.wordpress.org/' . $contributor['2'] . '" target="_blank" rel="nofollow noopener noreferrer">' . $contributor['2'] . '</a> ]</span></li>';
    73
                  $wp_contributor_return = '<h3>Contributors</h3>';
    74
                  $wp_contributor_return .= '<ul>' . $wp_contributor . '</ul>';
    75
                  $return .= $wp_contributor_return;
    76
               }
    77
     
    78
               if ($atts['rockstars'] !== false) {
    79
                  $rockstars = $data['groups']['recent-rockstars']['data'];
    80
                  foreach ($rockstars AS $rockstar) $wp_rockstar .= '<li><img src="https://secure.gravatar.com/avatar/' . $rockstar['1'] . '?s=' . $atts['gravatar'] . '&d=mm&r=g" style="padding: 10px; vertical-align:' . $atts['align'] . 'px"><span style="font-weight: bold;">' . $rockstar['0'] . '</span> <span style="font-size: 0.9em";>' . $rockstar['3'] . ' [ <a href="https://profiles.wordpress.org/' . $rockstar['2'] . '" target="_blank" rel="nofollow noopener noreferrer">' . $rockstar['2'] . '</a> ]</span></li>';
    81
                  $wp_rockstar_return = '<h3>Rockstars</h3>';
    82
                  $wp_rockstar_return .= '<ul>' . $wp_rockstar . '</ul>';
    83
                  $return .= $wp_rockstar_return;
    84
               }
    85
     
    86
               if ($atts['props'] !== false) {
    87
                  $props = $data['groups']['props']['data'];
    88
                  foreach ($props AS $prop => $fullname) $wp_prop .= $fullname . ' (<a href="https://profiles.wordpress.org/' . $prop . '" target="_blank" rel="nofollow noopener noreferrer">' . $prop . '</a>) • ';
    89
                  $wp_props_return = '<h3>Core Contributors</h3>';
    90
                  $wp_props_return .= '<span style="text-decoration: none;">' . $wp_prop . '</span>';
    91
                  $return .= $wp_props_return;
    92
               }
    93
     
    94
               if ($atts['libraries'] !== false) {
    95
                  $libraries = $data['groups']['libraries']['data'];
    96
                  foreach ($libraries AS $library) $wp_library .= '<li><a href="' . $library['1'] . '" target="_blank" rel="nofollow noopener noreferrer">' . $library['0'] . '</a></li>';
    97
                  $wp_library_return = '<h3>Libraries</h3>';
    98
                  $wp_library_return .= '<span style="text-decoration: none;">' . $wp_library . '</span>';
    99
                  $return .= $wp_library_return;
    100
               }
    101
     
    102
               /* Set transient */
    103
               beliefmedia_set_transient($transient, $return);
    104
     
    105
               } else {
    106
     
    107
               /* Get older data */
    108
               $return = beliefmedia_get_transient_data($transient);
    109
     
    110
               /* Set temp transient */
    111
               set_transient($transient, $return, $atts['cache_temp']);
    112
     
    113
             }
    114
     
    115
         } else {
    116
     
    117
            /* Get older data */
    118
            $return = beliefmedia_get_transient_data($transient);
    119
     
    120
            /* Set temp transient */
    121
            set_transient($transient, $return, $atts['cache_temp']);
    122
     
    123
        }
    124
     
    125
      }
    126
     
    127
     return '<p>' . $return . '</p>';
    128
    }
    129
     
    130
     
    131
    /* Usage */
    132

    The arguments are passed to the function in an array.

    Download

    Title: Display WordPress Developer Credits (WordPress Plugin)
    Description: Displays credits for WordPress developers, contributors, and libraries with shortcode.
      Download • Version 0.1, 2.4K, zip, Category: WordPress Plugins (General)
    WordPress Shortcodes, (1.6K)    PHP Code & Snippets, (1.6K)    

    Like this article?

    Share on facebook
    Share on Facebook
    Share on twitter
    Share on Twitter
    Share on linkedin
    Share on Linkdin
    Share on pinterest
    Share on Pinterest

    Leave a comment

    READY TO HAVE A CHAT? CALL US ANYTIME ON 1300 235 433