WordPress的短代码不叫

问题描述:

好吧,我已经创建了一个插件,现在想要提供应用程序的简码。
这是我在wp-content/plugins/my-plugin/my-plugin.phpWordPress的短代码不叫

<?php 
/** 
* Plugin Name: Latest Issue 
* Author: Max Tsepkov 
* Author URI: http://www.yogi.pw 
*/ 

add_action('init', function() { 
    add_shortcode('my-plugin', function() { 
     // ... my code 

     return 'string'; 
    }); 
}); 

唯一的文件我知道,插件被激活和init回调被调用。
但是短码功能永远不会被调用。
我将文本[my-plugin]添加到小部件,并且它也不会被替换。

我该怎么做?如何正确注册短代码?

+0

你有哪些版本的PHP? – 2014-09-19 12:09:13

+0

您是否看过代码中的Shortcode API?此外,默认情况下,文本小部件不支持简码 – 2014-09-19 12:27:28

原来,某些主题并未解析窗口小部件中的简码。
我们可以显式挂钩到主题过滤器并让它在小部件中运行短代码。
有关详细信息,请参阅https://wordpress.org/support/topic/how-to-make-shortcodes-work-in-a-widget

而且不需要挂钩进入init操作。此代码的工作原理:

<?php 
/** 
* Plugin Name: Latest Issue 
* Author: Max Tsepkov 
* Author URI: http://www.yogi.pw 
*/ 

// Allow theme to parse shortcodes in widgets 
add_filter('widget_text', 'do_shortcode'); 

add_shortcode('my-plugin', function() { 
    // ... my code 

    return 'string'; 
}); 

我猜你PHP至少是5.3,所以你可以让它在一个小部件中工作,你需要添加这段代码。

add_filter('widget_text', 'do_shortcode'); 

我测试了你的代码,它的工作原理。

+0

我可以将此行放在插件中吗?我现在修补了主题。 – 2014-09-19 12:46:49

+0

是的,这工作。 – 2014-09-19 12:52:40

+0

@MaxTsepkov,是的。 – 2014-09-19 13:28:37