Как в worpdress узнать из самого shortcod-а сколько shortcod-ов на странице?

Мне нужно вкладывать данные в объект Window. Если выполнять для всех шорткодов на странице, то выходит очень много данных. Хочу сделать только при выполнении первого shortcod-а и вложить только для него.

Например, есть такой код shortcode:

function my_code_handler($atts)
{
$script = 'window.data = {ДАННЫЕ}';
wp_add_inline_script( 'script_name', $script, 'before' );
}

add_shortcode( 'code', 'my_code_handler' );

Страница Wordpress c шорткодами:

  • [code] Как только для этого выполнять wp_add_inline_script?
  • [code] А для этого игнорировать.
  • [code] И для этого игнорировать.

То есть отдавать только для первого shortcod-а?


Ответы (1 шт):

Автор решения: rusgeli

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

Например так:

function my_code_handler($atts)
{
    static $i = 0;
    if ($i == 0) {
        $script = 'window.data = {ДАННЫЕ}';
        wp_add_inline_script( 'script_name', $script, 'before' );
    }
    $i++;
}

add_shortcode( 'code', 'my_code_handler' );
→ Ссылка