无法以短码代码显示修改内容?

时间:2017-11-02 作者:J.BizMai

我正在用短代码做一个插件。我有一些类扩展了一个称为Shortcode的抽象类。

abstract class Shortcode {

    public $tag;
    public $attrs;
    public $function;

    public function __construct($tag) {
        $this->attrs = array();
        $this->tag = $tag;
        $this->function = static::className().\'::getCallBack\';

        add_shortcode( $this->tag, $this->function );

        $this->init();
    }

    protected function init(){
       if( !is_admin() ){
           //Front-end
           error_log(\'test 1\');
           add_action(\'wp\',  array( $this , \'check_page\' ) );
       }
    }

    abstract public function check_page();

    abstract public static function className();

    abstract public static function getCallBack( $attrs );
}

My Shortcode class

class MyShortcode extends Shortcode {

    public function check_page(){
         error_log( "test 2" );
         global $post;
         $pattern = \'/(\\[\'.$this->tag.\'\\])/\';
         if( !empty( $post->post_content ) && preg_match(  $pattern, $post->post_content ) ){
            add_action(\'wp_enqueue_scripts\', array( $this , \'set_styles\'));
        }
    }

    public static function getCallBack( $attrs = null ){
       ...
    }

    //CSS stylesheets
    public function set_styles() {
        //wp_enqueue_style( \'wgsstyle\', PLUGIN_DIR_URL . \'front-end/views/css/wgs-front-end.css\' );
        //wp_enqueue_style( \'wgscardsstyle\', PLUGIN_DIR_URL . \'front-end/views/css/wgs-cards.css\' );
    }

    public static function className(){
        return __CLASS__;
    }

}
发生的事情很奇怪。。。正在调试中。日志,它写的是“测试1”,但不是“测试2”,css样式表仍在加载。

是否有用于短代码的缓存?如何重新初始化此代码?

2 个回复
SO网友:Welcher

我敢肯定是这句话:

$this->function = static::className().\'::getCallBack\';

我相信这将是抽象类的名称。你可能想试试get_called_class() 或者类似的东西。

尝试记录$this->function 查看类的名称。

SO网友:J.BizMai

问题是,当您在插件中向上移动一些文件并在wordpress中上载更改时,不会删除具有旧位置/路径的文件。解决方案是删除整个插件,然后重新安装。

结束

相关推荐

Append HTML Using Shortcode

我写了一个WordPress插件,它有一个短代码。短代码位于WordPress页面上,该页面上有其他短代码。其他短代码输出HTML,我想将我的短代码中的HTML附加到该输出中。我想知道是否可以使用DOMDocument和getElementById来实现这一点。WordPress页面如下所示:[Shortcode #1] [Shortcode #2] [Shortcode #3] [date_info] 我的插件执行以下操作:function