WP SoundSystem


WP SoundSystem is a complete solution to manage music in WordPress.

Create, import or manage tracklists and tracks, load them in our audio player, connect to popular music services, and more !

Several new post types will be available : Playlists, Radios, Artists, Albums, Tracks and Tracks Links.

See it working on Spiff Radio


Creating and editing playlists is a piece of cake (not to mention the Tracklist Importer):
Add or remove tracks on the fly, reorder them, favorite a track or a tracklist, export…


When editing a track, you can query details from music services like MusicBrainz (The Open Music Encyclopedia) or Spotify.
Tracks can be favorited by your users frontend, or added to any new playlist on-the-fly.

Tracks Links

You can attach a bunch of links to any track; including links that can stream audio (Youtube, Soundcloud, audio files…) directly to our player!

Autolink (requires an API key)

If you don’t attach links to your track manually, you can enable our autolink module.
It will search for remote links and attach them to your tracks automatically.


Radios are how we call live playlists.
Those playlists are synced with remote webpages or services (a Spotify URL, a XSPF file, etc.), and are refreshing seamlessly after a user-defined delay.

Check some Radios on Spiff Radio

Tracklist Importer

Import XSPF playlists using the Tracklist Importer.

If you have an API key, you could also import playlists from various services: Last.fm, Spotify, SoundCloud, Deezer, Musicbrainz, Radionomy, Hypem, 8tracks, BBC, indieshuffle, Online Radio Box, radio.fr, RadioKing, Reddit, SomaFM, Soundsgood,…
Custom setups are also available, if you are somewhat familiar with CSS selectors.

Frontend Importer on Spiff Radio


Our player uses of the MediaElement.js library, which is native in WordPress. It supports audio (& video) files, but also links from various services like Youtube or Soundcloud.
It has been extended with various features built on top of it, like a tracks queue or a Last.fm scrobbler.


In addition of being able to scrobble on Last.fm, every track favorited by a user connected to his account will also be loved on that service.

Users profiles will get a new music section that lists the user favorite tracks, tracklists, and the ones he created.
It will also fire new BuddyPress activity items.


WP SoundSystem is dev friendly, and has been designed to be extendable.
Wanna give a hand as developer ? Check the Github repo.

WP SoundSystem API

Get more out of this plugin by registering an API key; which will enable

  • Direct import from a lot of music services
  • the Autolink module

Those are optionals, but are nice features to a solid plugin.
Consider getting one as a nice way to support the work done – hundred of hours – , and to ensure its durability.


Whatever, if you like this plugin, please also consider making a donation.

This would be very appreciated — Thanks !



Contributors are listed here


For feature request and bug reports, please use the Github Issues Tracker.

If you are a plugin developer, we would like to hear from you. Any contribution would be very welcome.



  • Tracklist playing frontend
  • Radio (live) tracklist
  • Plugin settings page & menu
  • Tracklist Importer metabox
  • MusicBrainz metabox
  • Tracks Links metabox
  • Tracklists manager popup (when favoriting a track)
  • Frontend Tracklist Importer
  • Music menu on a BuddyPress profile


This plugin requires PHP Version 5.4 or later.

  1. Upload the plugin to your blog and Activate it.
  2. Go to the settings page and setup the plugin.


See the Frequently Asked Questions of the Github wiki.


1 Oktober 2019
I'm looking for a way to import Music Brainz Data on my website instead spending to much time on copy/paste so many informations, before starting to code my own plugin. This pluging really does look it can do a lot of good stuff, but without key API, I wasn't able to get anything done 🙁 I'll keep it deactivate to see if any further devs are gonna make thing right.
9 April 2019
I've worked with several plugins over the past 10yrs, and this one is by far one of the most versatile. Less manual work and more results! This all in one solution is a must have for any DJ or radio statioN!
Read all 2 reviews

Contributors & Developers

“WP SoundSystem” adalah perisian sumber terbuka. Orang-orang berikut telah menyumbang kepada pemalam ini.


Translate “WP SoundSystem” into your language.

Berminat dalam pembangunan?

Layari kod, periksa repositori SVN, atau langgani log pembangunan dengan RSS.



  • added ‘wpsstm_populated_tracklist’ action hook
  • improved ‘Now Playing’ and ‘Sitewide favorites’
  • better code for tracklist options / time stuff
  • database upgrade: v214


  • fix click on player’s track position
  • fix styles on track displayed in data engines metaboxes
  • fix get_tracklist_html (cache) when displaying several playlists
  • fix standalone track shortcode
  • removed hooks ‘wpsstm_init’, ‘wpsstm_init_post_types’, ‘wpsstm_init_rewrite’
  • WPSSTM_Post_Tracklist : new $id property (unique_id)


  • get_static_subtracks() about 4 times faster !
  • audio player is now a a child node of its tracklist (better for customisation)
  • JS: a lot of improvements !
  • new ‘tracklist’ view in the tracks backend
  • DO NOT queue a track if it is already part of the tracklist
  • Radios: better JSON feedback
  • tracklist/track/links actions for unlogged users : use wp_login_url()
  • new fn batch_delete_duplicate_subtracks()
  • new fn batch_reindex_subtracks_by()
  • fixed fn reset_subtrack_order()
  • use WP_Object_Cache for get_tracklist_html()
  • new class Wpsstm_Subtrack_List_Table [WIP]
  • database upgrade: v213


  • removed ‘delete_duplicate_links’ setting
  • SQL queries improvements
  • subtracks : save subtrack author (pinner) in database – will be bot if tracklist is imported
  • creates a’sitewide favorites’ tracklist post
  • creates a ‘now playing’ tracklist post with the last tracks played on the website
  • BP profile metas : now playing + last favorite
  • Improved importers code
  • New filter ‘wpsstm_get_subtracks’
  • database upgrade: v212
  • faster REST import


  • Migrated BANGS stuff to wpsstmapi
  • Improved importer GUI
  • Improved music datas engines
  • playlist settings metabox : add ‘filter tracks’ button


  • musicbrainz/spotify : new ‘Post fill’ metabox (only for tracks)
  • playlists : share track link (autoplay)
  • enable .xspf file upload in the media library
  • allow 0-minutes cache for radios
  • improved rest & import
  • new fn import_xspf() – extracted out of sync_radio()


  • fix links imported not properly created
  • JS: do not autolink a track that has playable links
  • REST route ‘import/?input=…’ now returns an import ID, that we then use to get the cached XSPF file API side.
  • Tracklist importer : new ‘Debug log’ tab
  • fix warning notices with PHP 7.3 (#126)


  • renamed API route : /’import/url/?url=…’ -> import/?input=…
  • fix unable to add new tracklist tracks on post-new.php
  • Soundcloud : fix settings not saving
  • Autolink : better GUI
  • cache (transient) for excluded track links
  • Removed setting ‘Trash excluded hosts links’ + new ‘Excluded hosts’ track links view
  • Removed setting ‘Trash orphan links’ + new’Orphan’ track links view
  • Removed setting ‘Trash orphan tracks’ + new’Orphan’ tracks view
  • Removed setting ‘Trash temporary tracklists’
  • Programmatically create bot user at installation + migrate old setting
  • Programmatically create import page at installation + migrate old setting
  • When updating track artist/album/title, remove old music term if unique
  • When deleting a post, remove the music terms attached to it if unique
  • GUI: jsons now displayed using jQuery json-viewer


  • Removed registration call to action (should be handled by a theme, not by this plugin)
  • JS: Abord tracklist reload when pressing ESC
  • JS: Ability to add more than one track at once when editing a tracklist
  • Queue subtracks bug fix
  • Improve bot user code


  • WPSSTM_Spotify_Endpoints & WPSSTM_Musicbrainz_Endpoints moved from API so we don’t need two requests
  • new metabox ‘Tracklist options’
  • ignore bot tracklists unless author is set in query
  • JS bugfixes


  • better player JS
  • allow XSPF tracklist import without the need of an API key
  • fixed tracklist share
  • better tracklist header
  • improve lightbox
  • remove settings ‘importer_enabled’ & ‘radios_enabled’
  • fixes regex not passing to API


  • Moved all the import stuff to the API. Now uses rest route ‘wp-json/wpsstmapi/v1/import/?input=…’ (on the API)
  • store artist,track & album metas as taxonomies instead of post metas; for performance issues (see https://wordpress.stackexchange.com/a/276315/70449 and https://wordpress.stackexchange.com/a/159012/70449)
  • trash orphan links option
  • trash duplicate links option
  • improved JS
  • fix Last.fm scrobbler not working except for first track


  • radios : improved how they are updated
  • improved REDDIT service
  • Improved settings page
  • Improved WPSSTM_Core_User logic
  • Register Radios post type even if no API key set; but filter post content to display a notice (avoids a 404 error)
  • Create user favorite tracks playlist only when he tries to favorite a track for the first time
  • Do not store track data within the subtracks table, always create a track post (fixes issues #88)
  • Various improvements & bugfixes


  • New track links setting ‘Exclude hosts’
  • JS link/track/tracklist reclick fix
  • Tracklist template : featured image
  • “Sources” renamed to “Track Links” (post type, some metas, some filters renamed)
  • Fixed toggle playable track link
  • Fixed sort track links
  • fixed OnlineRadioBox service
  • fixed bugfix XSPF export
  • track links JS/CSS improvements
  • BuddyPress – improved queue track/ love tracklist activities
  • Radio.fr – new service
  • Spotify: improved playlists regex
  • new image assets
  • new ‘pre_get_tracklist_by_pulse’ function hooked on ‘pre_get_posts’
  • migrate ‘remote_delay_min’ option from ‘scraper option’ post meta -> ‘wpsstm_cache_min’ post meta
  • database –> 202


  • tracklist expiration bugfix
  • improved importer and its settings
  • improved shortcodes
  • importer debug GUI
  • bugfix populate links/autolinks
  • fix files dependencies when no API key
  • Last.fm : fix url encoding / fix regexes / fix importer / scrobbler disabled by default
  • abord autolink if ‘wpsstm_autolink_input’ returns an error
    • various bug fixes
  • new class WPSSTM_Data_Engine


  • So much improvements that they cannot even be listed ! More than one year of developpement and 754 commits !
  • now compatible with the Autoplay Policy Change from Chrome
  • Code entirely rewritten
  • HTML : uses HTML5 custom elements