: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* @copyright Copyright (c) 2023, Code Atlantic LLC
if ( ! defined( 'ABSPATH' ) ) {
* This class maintains a global set of all registered PUM shortcodes.
* @var PUM_Shortcodes Static Instance
private static $instance;
* @var array Holds array of registered $shortcode_tags => $shortcode_objects.
private $shortcodes = [];
* Main PUM_Shortcodes Instance
public static function instance() {
if ( ! isset( self::$instance ) && ! ( self::$instance instanceof PUM_Shortcodes ) ) {
self::$instance = new self();
* Add a shortcode object to the collection.
* @param PUM_Shortcode $shortcode
public function add_shortcode( PUM_Shortcode $shortcode ) {
$this->shortcodes[ $shortcode->tag() ] = $shortcode;
* @return array PUM_Shortcode
public function get_shortcodes() {
return $this->shortcodes;
public function get_shortcode( $tag ) {
return isset( $this->shortcodes[ $tag ] ) ? $this->shortcodes[ $tag ] : false;