Intereting Posts
Сделать ссылку вкладки страницы в pdf Как включить или отключить разбиение на страницы в результатах поиска и списках категорий по ссылке? Как управлять несколькими проектами wordpress с общей базой кода Автоматизация процесса генерации короткого кода в плагине – как это делается? условная функция для изменения изображения после метафайла WordPress Скрыть Показать сценарий содержимого и активировать / деактивировать скрипт на экранах Понимание детской темы functions.php Добавить классы сообщений для пользовательских таксономий в пользовательский тип сообщения? Запрашиваются ли запросы get_bloginfo для кеширования или их кеширование? Как контролировать исходный вывод wp_head ()? Как я могу показать много сообщений, которые есть у автора в неделю? Получить автора последней версии Почему автоматические обновления WordPress за версией, на которой работает мой сайт? База данных пользователей WordPress Как подключить сеть к плагину для многоузловой установки через базу данных?

как проверить, используется ли короткий код более одного раза в том же сообщении

Я написал плагин для коротких кодов. В принципе плагин имеет следующую структуру:

PL::setup(); class PL { public static function setup() { add_shortcode("myshortcode", array ( __CLASS__,"myshortcode_handler")); } public static function myshortcode_handler( ... some variable assignment? if (time the shortcode is invoked == 1) { ... } else { ... } ... some other code lines } } 

Мне нужно различать случай, когда короткий код вызывается в первый раз или нет. Я думаю, что мне нужно объявить какую-то переменную, но я не знаю, как и где я должен ее объявить.

Solutions Collecting From Web of "как проверить, используется ли короткий код более одного раза в том же сообщении"

Я ваш callback myshortcode_handler() использует статическую переменную:

 function myshortcode_handler() { static $first_call = TRUE; if ( ! $first_call ) { # callback was called earlier … } # set it to FALSE after you have handled the condition. $first_call = FALSE; return; } 

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

Существует несколько способов сделать это. Одним из таких способов является определение константы при первом запуске обратного вызова.

 if (!defined('myshortcode_check')) { // first time code define('myshortcode_check',true); } else { // not the first time code } 

Должно быть довольно просто. Это глобальный, хотя и не постконкретный. Это должно отлично работать для отображения отдельных сообщений, но, возможно, это не то поведение, которое вы хотите для почтовых индексов. Если этот короткий код работает на любом столбце в индексе, он будет define константу.

http://php.net/manual/en/function.defined.php
http://php.net/manual/en/function.define.php