Intereting Posts
Обновить значения настраиваемого поля на странице редактирования страницы woocommerce Получение только URL-адреса эскиза сообщения Одиночная раскладка на основе размера изображения Электронная почта по электронной почте после регистрации никогда не была отправлена ​​или получена изменить роль пользователей WordPress при редактировании профиля Как предотвратить удаление плагинов Ограничить количество неактивных виджетов HTML в пунктах меню исчезает при сохранении Заголовок сайта и таблица в Pagelines Панель параметров DMS Почему сгенерированный POT-файл из WordPress.org не добавляет мое описание плагина в файл POT? Добавить кнопку сброса на страницу параметров (с помощью API настроек)? удалять пункты меню, если пользователь не может читать Что является альтернативой `<? Php the_content (); ?> `когда дело доходит до вызова медиафайлов (изображений) в файле 'attachment.php'? WP_Async_Task не работает асинхронно Как использовать домен .edu с WordPress?

Гравитационные формы – получить атрибут shortcode из сообщения

У меня есть несколько сообщений, и некоторые из них содержат [gravityform] с разными значениями атрибутов.

Скажем, сообщение Hello World содержит [gravityform id="1" title="false" description="false"]

Другое сообщение Hello Moon содержит [gravityform description="true" id="23" title="true"]

Как я могу получить значение атрибута id этого короткого кода программным путем?

Solutions Collecting From Web of "Гравитационные формы – получить атрибут shortcode из сообщения"

Если в почтовом контенте имеется только 1 короткий код, поймайте его следующим образом:

 <?php $text = get_the_content(); preg_match_all("\bid="([0-9]+)\b", $text, $matches); var_dump($matches[0]); ?> 

В вашем примере [gravityform description = "true" id = "23" title = "true"] он выводит:

 23 

Однако, если вы используете другие короткие коды или простой текст, в том же сообщении, с той же структурой id=123 , вы можете получить неожиданные выходы: он поймает только первую, найденную в сообщении .

В противном случае вы можете попробовать это (непроверено):

  $post_content = get_the_content(); $start = '[gravityform id="'; $end = '"'; $post_content = ' ' . $post_content; $ini = strpos($post_content, $start); if ($ini === 0) return ''; $ini += strlen($start); $len = strpos($post_content, $end, $ini) - $ini; $the_id = substr($post_content, $ini, $len); echo $the_id; // 23 in your example 

Однако вам всегда нужно форматировать его с id как первым параметром.