2014-09-19 150 views
0

好吧,我已經創建了一個插件,現在想要提供應用程序的簡碼。
這是我在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

回答

0

原來,某些主題並未解析窗口小部件中的簡碼。
我們可以顯式掛鉤到主題過濾器並讓它在小部件中運行短代碼。
有關詳細信息,請參閱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'; 
}); 
2

我猜你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