#php #wordpress #wordpress-shortcode
#php #wordpress #wordpress-короткий код
Вопрос:
Правильный ли это синтаксис для регистрации короткого кода?
$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:
Это неправильный синтаксис. Посмотрите на документы 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
ключевым словом мы можем передавать переменные внешних областей в нашу анонимную функцию.
Комментарии:
1. Спасибо за ваш ответ. Позвольте мне спросить следующим образом: у меня есть набор опций в базе данных
echo get_option('sc_id'); echo get_option('sc_it'); echo get_option('sc_ib');
, и мне нужно создать такое же количество коротких кодов, мне не нужны опции типа ` [sc_id key =»option_key»] ` Мне нужно зарегистрировать эти короткие коды ` [sc_id],[sc_it], [sc_ib] ` Это правильный синтаксис? ‘ $fields = array(‘sc_id’,’sc_it’,’sc_ib’); foreach($fields как $field) { $newfunc = function() { возвращает get_option($field);}; add_shortcode($field, $newfunc); } `