Шорткод Wordpress не вызывается

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

<?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] в виджет, и он также не заменяется.

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


person Max Tsepkov    schedule 19.09.2014    source источник
comment
какая у вас версия пхп?   -  person Tomás Cot    schedule 19.09.2014
comment
Вы смотрели на Shortcode API в codex. Также по умолчанию текстовый виджет не поддерживает шорткоды.   -  person Pieter Goosen    schedule 19.09.2014


Ответы (2)


Я предполагаю, что у вас PHP не ниже 5.3, поэтому вы можете заставить его работать в виджете, вам нужно добавить этот код.

add_filter('widget_text', 'do_shortcode');

Я проверил ваш код, и он работает.

person Tomás Cot    schedule 19.09.2014
comment
Могу ли я разместить эту строку в плагине? Я пропатчил тему на данный момент. - person Max Tsepkov; 19.09.2014

Выяснилось, что некоторые темы не анализируют шорткоды в виджетах.
Мы можем явно подключиться к фильтру темы и позволить ему запускать шорткоды в виджетах.
Подробнее см. https://wordpress.org/support/topic/how-to-make-shortcodes-work-in-a-widget

И нет необходимости подключаться к действию инициализации. Этот код работает:

<?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';
});
person Max Tsepkov    schedule 19.09.2014