Intereting Posts
Алфавитные сообщения на странице категории? Параметры выбора SELECT исчезают при сохранении виджета Плагин для создания неограниченных пользовательских коротких кодов? пытаясь перечислить пользователей и отобразить их фамилию Нет данных Использование Widget Logic для размещения меню на нескольких страницах? Включение XSendFile вызывает 404 для изображений на WordPress Multisite / Network Невозможно получить уведомления о приятелях в интерфейсе; почему я получаю эту ошибку? Приложение в WordPress не подходит для мобильного экрана Добавление дополнительных полей в форму регистрации переднего конца WordPress nonce не работает в плагине при выходе из WordPress. Перенаправить пользователя на вход, а затем на страницу, откуда они пришли Как добавить отступы между сообщениями Показать изображение слева и содержимое справа, используя ul li Переписать полностью игнорируется

Использовать значение короткого кода на выходе

Я написал этот shortcode, чтобы взять имя файла, которое я указываю, и выводить его как изображение с тегами заголовка и alt:

function cwc_pkmn($atts) { extract(shortcode_atts(array( "name" => 'http://', ), $atts)); return '<img src="/path/to/file/'.$name.'.png" alt="'.$name.'" title="'.$name.'" />'; } add_shortcode("pkmn", "cwc_pkmn"); 

Все мои имена файлов имеют строчные буквы с «-» между словами. Возможно ли, чтобы выход заглавил каждую букву, следуя за – и заменив пробелы? Итак, прямо сейчас, когда я делаю короткий код выше:

 [pkmn name="mr.-deeds"] 

Я получаю это как вывод:

 <img src="/path/to/file/mr.-deeds.png" alt="mr.-deeds" title="mr.-deeds"> 

Но возможно ли, чтобы выход делал это вместо заголовка и тегов alt?

 <img src="/path/to/file/mr.-deeds.png" alt="Mr. Deeds" title="Mr. Deeds"> 

Спасибо огромное!

Попробуйте это. , ,

 function cwc_pkmn( $atts = array(), $content = '' ) { // ------------------------ // Settings: $path = '/path/to/file/'; $ext = 'png'; // ------------------------ // Shortcode input: $atts = shortcode_atts( array( 'name' => '' ), $atts, 'pkmn_shortcode' ); // Sanitize input: $name = esc_attr( $atts['name'] ); // Init: $words_ucfirst = array(); // Capitalize the first letter in each word: $words = explode( '-', $name ); foreach( $words as $word ) { $words_ucfirst[] = ucfirst( $word ); } $name_mod = esc_attr( join( ' ', $words_ucfirst ) ); return sprintf( '<img src="%s%s.%s" alt="%s" title="%s" />', $path, $name, $ext, $name_mod, $name_mod ); } add_shortcode( 'pkmn', 'cwc_pkmn' ); 

Для этого вы можете использовать preg_replace_callback . Он использует регулярные выражения для замены части строки. Использование регулярного выражения «- [az]» соответствует тире, за которым следует строчная буква. Добавление круглых скобок вокруг [az] позволяет использовать его в функции замены ( function( $matches ) ) позволяет использовать ее в $matches . Возвращаемое значение функции используется для замены согласованной строки. Таким образом, мы заменяем – [az] на пробел, за которым следует верхняя буква, которая была в нижнем регистре раньше.

 $title = preg_replace_callback( '/\-([az])/', function( $matches ) { return ' ' . strtoupper( $matches[1] ); }, $name );