快捷码不适用于类

时间:2018-03-19 作者:learnercys

我正在构建我的第一个短代码,但现在做的不多,下面是我的代码:

class Shortcodes {
  public static function notifications_shortcode($atts, $content = "") {
    return \'notifications foo foo\';
  }
}
我在另一节课上这样叫这个:

class Loader extends MvcPluginLoader {
  function activate () {
    add_shortcode(\'ls_notifications\', array(\'Shortcodes\', \'notifications_shortcode\'));
  }
}
但出于某种原因,我不能在任何帖子中使用它[ls_notifications][/ls_notifications]没有显示错误,我唯一能想到的是没有添加短代码ins,但我不知道为什么。

我知道这可能与这个问题有关Add_shortcode as a Class to pass arguments to a function 还有这个页面Shortcode API 但我似乎错过了什么。

1 个回复
SO网友:Dave Romsey

下面是一个使用原始代码成功注册短代码的简单示例。您需要实例化Loader 类,然后调用其activate() 方法

class Shortcodes {
  public static function notifications_shortcode( $atts, $content = "" ) {
    return \'notifications foo foo\';
  }
}

class MvcPluginLoader {
  function __construct() {
  }
}

class Loader extends MvcPluginLoader {
    function __construct() {
        parent::__construct();
    }

  function add_shortcodes() {
    add_shortcode( \'ls_notifications\', array( \'Shortcodes\', \'notifications_shortcode\' ) );
  }
}

add_action( \'init\', \'LoaderInit\' );
function LoaderInit() {
    $my_loader = new Loader();
    $my_loader->add_shortcodes();
}

结束

相关推荐

ADD_FILTER IMG_CAPTION_SHORTCODE未实现

在我正在创建的插件中,我需要更改[caption]. 我是这样做的(就像《法典》和这里的其他例子一样)add_filter(\'img_caption_shortcode\', \'caption_fix\', 10, 3); function caption_fix ($x, $att, $content) { $content = \'new caption\' ; // change it return $content; } 但是[caption]