WordPress зарегистрировать шорткод с функцией антонима - PullRequest
1 голос
/ 09 марта 2019

Это правильный синтаксис для регистрации шорткода?

$field = 'sc_id';
$newfunc = function($field) { return get_option($field);};
add_shortcode($field, $newfunc);

У меня есть набор опций, мне нужно зарегистрировать все для шорткодов.И некоторые из них работают, некоторые из них не работают.

Обновление: Хорошо, этот код работает

$field = 'sc_id';
$newfunc = function() { return get_option($'sc_id');};
add_shortcode($field, $newfunc);

Но у меня есть около 20 значений, мне нужно зарегистрировать шорткоды И я предпочитаю

[shortcode]

вместо

[sc key="shortcode"]

Как я могу это сделать?

До 7.2 php этот код работал для меня

$newfunc = create_function('', 'return get_option(' . $field . ');');

1 Ответ

1 голос
/ 09 марта 2019

Это неправильный синтаксис. Посмотрите на WordPress документы .

Вы можете попробовать что-то вроде этого:

$field = 'sc_id';
$newfunc = function($atts) { return get_option($atts['key']);};
add_shortcode($field, $newfunc); 

и наберите короткий код так:

[sc_id key="option_key"]

РЕДАКТИРОВАТЬ из-за вопроса комментария:

Когда вам нужны множественные шорткоды для нескольких полей без атрибутов, вы можете использовать что-то вроде этого:

$fields = array('sc_id','sc_it','sc_ib'); 
foreach($fields as $field) { 
    $newfunc = function() use($field) { 
        return get_option($field);
    }
    add_shortcode($field, $newfunc); 
}

С помощью ключевого слова use мы можем передавать переменные внешних областей в нашу анонимную функцию.

...