短代码不会在Gutnburg返回任何内容

时间:2020-10-03 作者:Alhiane

我需要在插件中创建一个短代码,当一个人安装我的插件时,他可以在插件中使用短代码:

这是我的代码插件100%正常工作,但当我调用shortcode[拆分]时,什么都没有返回


class aligoPlugin
{
    public function __construct()
    {
        // hooks
        add_action( \'init\',  array($this,\'register_shortcodes\') );
    }

    // activate
    public function activate()
    {
        $this->splite_article();
        // add_shortcode(\'splite\', \'splite_article\');
        // flush rewrite rules
        flush_rewrite_rules();
    }

    // functions
    function register_shortcodes(){
        add_shortcode(\'splite\', \'splite_article\');
    }

    // shortCodes
    function splite_article()
    {
        $content = "hhhhh";
        echo $content;
    }
}
if (class_exists(\'aligoPlugin\'))
    $aligo = new aligoPlugin();

// activation
register_activation_hook(__FILE__, array($aligo,\'activate\'));

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这里有两个主要错误

问题1:您的快捷码注册无效,您应该在PHP错误日志中看到很多关于此的消息

add_shortcode(\'splite\', \'splite_article\');
没有名为的函数splite_article, 有一个类函数,但代码没有告诉它使用它。因此,它不会调用您的shortcode函数,而是生成一条PHP错误消息并将其放入日志中。

add_shortcode 需要一个PHP可调用值,所以splite_article 相当于splite_article(), 但你需要$this->splite_article().

因此,请使用适当的callable[ $this, \'splite_article\' ]

问题2:短代码不回显

echo $content;
这不是短代码的工作方式,短代码回调不会回显HTML,而是返回HTML。因此,这个短代码将破坏很多东西。

幸运的是,解决方案很简单,return 相反,短代码包含内容。

相关推荐

Image Shortcode from ACF ID

我想创建一个快捷码,用于显示ACF自定义字段中的图像,该字段当前的返回格式设置为Image ID. 短代码需要接受post\\u id,以便从特定页面获取字段。因此,短代码是:[acf_featured_item post_id=\"88\"] 我知道有一个可用的ACF快捷码,但已经有另一个位置依赖于ID的返回格式。因此我无法更改此位置。我当前的代码是:function acf_featured_item_shortcode( $atts ) { // Attributes $a