2014-09-19 4 views
0

Хорошо, я создал плагин и теперь хочу предоставить shortcode для приложения.
Вот мой единственный файл в wp-content/plugins/my-plugin/my-plugin.phpWordpress shortcode не называется

<?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 называется.
Но функция shortcode никогда не вызывается.
Я добавляю текст [my-plugin] к виджету, и он также не заменяется.

Что делать неправильно? Как правильно зарегистрировать короткий код?

+0

какая у вас версия PHP? –

+0

Вы ознакомились с API-интерфейсом Shortcode в кодексе. Кроме того, по умолчанию текстовый виджет не поддерживает короткие коды –

ответ

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

Могу ли я разместить эту строку в плагине? На данный момент я исправил тему. –

+0

Да, это сработало. –

+0

@ МаксЦепков, да. –

Смежные вопросы